Add accessors to some MonoGenericParam fields
[mono.git] / mono / mini / ChangeLog
1 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2
3         * aot-compiler.c: Use new MonoGenericParam accessors.
4
5 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6
7         Reduce memory usage and improve correctness wrt MonoGenericParam
8         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
9         handing.  Avoid allocating MonoGenericParams, but use the ones in
10         the container itself.
11
12 2009-04-07  Miguel de Icaza  <miguel@novell.com>
13
14         * tasklets.c: Return exceptions in the out argument.
15
16 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
17
18         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
19         opcode. Use pointer types in more places instead of casting them to 
20         integers.
21
22         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
23         optimizations.
24         (mono_llvm_optimize_method): New helper function to optimize a method.
25
26         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
27         widening code so it could be called from more places.
28         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
29         code paths in the call opcodes.
30
31 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
32
33         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
34
35 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
36
37         * dwarfwriter.c: Use _ to separate class name 
38         components as gdb can't handle '.'. Represent reference variables
39         as 'class <NAME>&'.
40         
41         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
42
43         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
44         
45         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
46
47         * gc-test.cs: New file with GC stack marking tests.
48         
49         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
50         negative numbers for vfp.
51
52         * basic-float.cs: Add a test.
53         
54 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
55
56         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
57
58 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
59
60         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
61         part of tasklet/continuation support.
62
63 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
64
65         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
66         amd64 opcodes inside an ifdef.
67
68         * dwarfwriter.c: Emit inheritance information for classes, emit fields
69         of complex types.
70         
71         * dwarfwriter.c (emit_type): Emit the class info for classes.
72
73 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
74
75         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
76
77         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
78
79         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
80
81         * ssa.c (mono_ssa_compute): Fix some memory leaks.
82
83 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
84
85         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
86
87         * mini-llvm.c: Update comments.
88
89         * mini.h (COMPILE_LLVM): New macro.
90
91         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
92
93         * ssa.c (mono_ssa_compute): Ditto.
94         
95         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
96         the unwind ops from a DWARF FDE.
97
98         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
99         methods by extracting the dwarf unwind ops from the unwind info generated
100         by LLVM.
101         
102         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
103         calls.
104
105         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
106         addressing modes.
107
108 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
109
110         * Makefile.am (llvm_sources): Enable this.
111
112         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
113         failing back to the JIT if something cannot be handled.
114
115         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
116         compiling with LLVM.
117
118         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
119         compiling with LLVM.
120
121         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
122         compiling with LLVM.
123
124         * mini-ops.h: Add a few opcodes needed by LLVM.
125
126         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
127         has no unwind info.
128
129         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
130         backend.
131
132         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
133
134         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
135
136 2009-04-01  Mark Probst  <mark.probst@gmail.com>
137
138         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
139         ridiculously large methods.
140
141 2009-03-31  Martin Baulig  <martin@ximian.com>
142
143         * debug-debugger.c (debugger_remove_breakpoint): Call
144         mono_debugger_remove_class_init_callback ().
145
146 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
147
148         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
149         right before emitting code, not at the start.
150
151         * mini.c (mono_postprocess_patches): Extract this into a separate function
152         from mono_codegen ().
153
154         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
155         byref types correctly.
156
157 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
158
159         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
160         by the last change.
161
162 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
163
164         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
165         indirect calls, this avoids problems where get_vcall_slot () would get
166         confused by the native code for the instruction preceeding the call.
167         (mono_arch_get_vcall_slot): Simplify this.
168         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
169
170         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
171         register allocator now seems to depend on them instead of the data in
172         cpu-<ARCH>.md.
173
174         * mini.c (mini_method_compile): Throw the correct type of exception if
175         mono_method_get_header () fails because of a loading error.
176
177 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
178
179         * mini.c (mini_method_compile): Clear the loader error if the method
180         header cannot be decoded.
181
182         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
183         interface methods on proxies correctly.
184
185         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
186         this argument for vtype methods. Add precise liveness info for arguments.
187
188         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
189         LIVERANGE_START/END opcodes.
190
191         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
192         for arguments and values in registers.
193
194 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
195
196         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
197         return a valuetype. Fixes #487518.
198
199         * iltests.il: Add a test.
200         
201         * aot-compiler.c: Use mono_thread_create () to create helper threads.
202
203         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
204         closed over a null reference correctly.
205
206 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
207
208         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
209
210 2009-03-25  Mark Probst  <mark.probst@gmail.com>
211
212         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
213         allocated to the same registers as fixed sregs.
214
215 2009-03-24  Mark Probst  <mark.probst@gmail.com>
216
217         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
218         ATOMIC_CAS_IMM ops.
219
220         * method-to-ir.c: Handle more cases for
221         Interlocked.CompareExchange.
222
223         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
224         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
225         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
226
227 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
228
229         * aot-runtime.c (decode_method_ref): Fix a warning.
230
231         * unwind.c (mono_unwind_frame): Ditto.  
232
233 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
234
235         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
236         (mono_compile_assembly): Enable the binary writer for full-aot as well.
237
238         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
239         fix the handling of large values in the ALU_PC_G0_NC relocation.
240
241 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
242
243         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
244
245 2009-03-22  Mark Probst  <mark.probst@gmail.com>
246
247         * method-to-ir.c (mono_spill_global_vars): Support for ternary
248         ops.
249
250 2009-03-22  Mark Probst  <mark.probst@gmail.com>
251
252         * method-to-ir.c: MINI_OP3 needs a comma.
253
254         * method-to-ir.c, mini.h, mini.c: Remove
255         mono_init_op_sreg_counts ().
256
257 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
258
259         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
260         OP_JMP.
261         
262         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
263         assertion.
264
265         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
266
267         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
268         code somewhat.
269
270 2009-03-21  Mark Probst  <mark.probst@gmail.com>
271
272         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
273         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
274         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
275         operations.
276
277 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
278
279         * driver.c: Change location of gc_wrapper.h.
280
281         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
282         inside finally clauses correctly. Fixes #485721.
283
284         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
285         after the change above.
286
287         * exceptions.cs: Add a test.
288         
289 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
290
291         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
292
293         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
294         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
295         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
296
297         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
298         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
299
300 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
301
302         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
303         Simplify logic for ensure_method_is_allowed_to_call_method. 
304         Handle wrappers on callers.
305
306 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
307
308         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
309         them don't run yet.
310
311         * basic-simd.cs: Fix the names of some test methods.
312
313 2009-03-18  Geoff Norton  <gnorton@novell.com>
314
315         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
316
317 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
318
319         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
320
321 2009-03-17  Jb Evain  <jbevain@novell.com>
322
323         * driver.c: remove now uneeded call to mono_gc_base_init before
324         mono_profiler_load.
325
326 2009-03-17  Jb Evain  <jbevain@novell.com>
327
328         * dwarfwriter.c (token_handler): handle more cases.
329
330 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
331
332         * method-to-ir.c: Remove more dead code (that was required only
333         because of method_is_safe). Fix compiler warnings.
334
335 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
336
337         * method-to-ir.c: Remove unneeded/useless method_is_safe
338         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
339
340 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
341
342         * mini.c (mini_method_compile): Print the method been compiled with
343         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
344         for people not familiar with the runtime.
345
346 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
347
348         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
349         a managed object which is later put into a GList. Return its class instead.
350
351         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
352         stack slots when using sgen.
353
354 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
355
356         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
357
358 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
359
360         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
361         > so it works on the first vreg as well.
362
363 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
364
365         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
366         trigger randomly.
367
368         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
369         
370         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
371         implement GArray.
372
373 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
374
375         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
376         native->IL offset mapping.
377
378 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
379
380         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
381
382         * basic.cs: Add a test.
383
384 2009-03-11  Mark Probst  <mark.probst@gmail.com>
385
386         * mini-x86.c (mono_arch_output_basic_block): Use different
387         registers in case the ones we want to overwrite are used by the
388         other operand.  Fixes regression in #480807.
389
390 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
391
392         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
393
394         * dwarfwriter.c (emit_line_number_info): The line number info for
395         IL code was off by one. Fix that.
396
397         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
398         stack.
399
400 2009-03-09  Mark Probst  <mark.probst@gmail.com>
401
402         Contributed under the terms of the MIT/X11 license by Steven
403         Munroe <munroesj@us.ibm.com>.
404
405         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
406         Fixes #483462.
407
408 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
409
410         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
411         as well.
412
413 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
414
415         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
416         the delegate ctor handling code. Fixes #482638.
417         
418         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
419         #481458.
420
421         * iltests.il.in: Add a test.
422         
423         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
424         mini-posix.c.
425
426 2009-03-05  Mark Probst  <mark.probst@gmail.com>
427
428         * mini-trampolines.c (mono_create_jump_trampoline): If the method
429         is shared generic code, return the trampoline, even if the method
430         has already been compiled.  Fixes #479763.
431
432         * mini.c, mini.h: New function
433         mono_jit_find_compiled_method_with_jit_info() which is the same as
434         mono_jit_find_compiled_method() but also returns the jit info.
435
436 2009-03-05  Mark Probst  <mark.probst@gmail.com>
437
438         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
439         for methods which actually have one.  For all other methods, make
440         sure the this argument var is live the whole method.
441
442         * mini.c (mini_method_compile): Every shared method has a
443         this/vtable/mrgctx info.  Fixes #480807.
444
445 2009-03-05  Mark Probst  <mark.probst@gmail.com>
446
447         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
448         generic/imt thunks where some entries branch through the vtable,
449         while other entries branch directly.
450
451 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
452
453         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
454
455         * mini-windows.c: Ditto.
456         
457         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
458         ctors.
459
460 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
461
462         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
463         down an assert.
464
465 2009-03-04  Mark Probst  <mark.probst@gmail.com>
466
467         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
468         #481403.
469
470 2009-03-04  Mark Probst  <mark.probst@gmail.com>
471
472         * exceptions-x86.c: Include debug-mini.h - fixes build.
473
474 2009-03-04  Martin Baulig  <martin@ximian.com>
475
476         * debug-mini.c: Clean up the exception API and add documentation.
477         (mono_debugger_handle_exception): New public method; this is
478         called when throwing an exception or encountering an unhandled one.
479         (mono_debugger_call_exception_handler): Formerly known as
480         mono_debugger_handle_exception(); this is used to tell the
481         debugger that we're about to invoke an exception handler.
482
483 2009-03-04  Martin Baulig  <martin@ximian.com>
484
485         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
486         ../metadata/mono-debug-debugger.c; save and reset exception state.
487
488 2009-03-02  Martin Baulig  <martin@ximian.com>
489
490         * debug-mini.c: Moved the debugger exception handling here from
491         ../metadata/mono-debug-debugger.c.
492
493         * debug-mini.h
494         (MonoDebuggerExceptionAction): New exception typedef.
495
496         * debug-mini.c
497         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
498
499         * exceptions-amd64.c
500         (mono_amd64_throw_exception): Use the new debugger exception
501         handling code.
502
503         * mini-exceptions.c
504         (mono_handle_exception_internal): Don't call
505         mono_debugger_unhandled_exception() here.
506
507 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
508
509         * mini.c aot-compiler.c: Update after the changes to 
510         mono_marshal_get_runtime_invoke ().
511
512         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
513         Virtual generic methods might not have method->slot set, work around
514         that.
515
516         * generics.cs: Add a test.
517
518 2009-03-02  Geoff Norton  <gnorton@novell.com>
519
520         * mini.c:
521         * driver.c: Allow signal chaining of SIGFPE as well.
522
523 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
524
525         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
526         this since it now receives the method not its generic context in the
527         IMT reg.
528
529         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
530         generic/imt thunks where some entries branch through the vtable, while
531         other entries branch directly.
532
533         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
534
535         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
536         support for interface methods as well.
537
538         * mini-trampolines.c: Add support for virtual generic methods in interfaces
539         using the normal IMT thunks.
540
541         generics.cs: Add new tests.
542         
543         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
544         the generic inst to the generic imt thunks. This fixes AOT support, 
545         improves consistency with the normal IMT thunks, and makes it easier to
546         add support for interface generic virtual methods later.
547
548         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
549         
550 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
551
552         * driver.c (mono_set_signal_chaining): New public API function to enable
553         signal chaining on POSIX platforms.
554
555         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
556         (si@lindenlab.com) to implement signal chaining. The original patch was
557         contributed under the MIT X/11 license:
558         https://bugzilla.novell.com/show_bug.cgi?id=318894
559
560 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
561
562         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
563         too until it can be made to run on amd64.
564
565 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
566
567         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
568         to  get_generic_context_from_code () + get_call_info () if possible.
569
570 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
571
572         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
573         suspend-on-sigsegv functionality.
574
575         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
576         to suspend when a native SIGSEGV is received. This is useful for debugging
577         crashes which don't happen under gdb, since a live process contains more
578         information than a core file.
579
580         * mini-exceptions.c (mono_print_thread_dump): Use 
581         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
582
583         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
584
585         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
586         
587         * basic-float.cs: Disable the tests which currently fail on amd64.
588
589         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
590         value to mono_arch_patch_callsite () to fix crashes.
591         
592         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
593
594 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
595
596         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
597         nop code by patching the call address to point to the nullified class init
598         trampoline, as the former does not seem to be safe on SMP machines.
599
600 2009-02-23  Mark Probst  <mark.probst@gmail.com>
601
602         * mini-ops.h: Fix the argument types for a few x86 opcodes where
603         they were wrong.
604
605 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
606
607         * basic-float.cs basic-calls.cs: Fix warnings.
608
609 2009-02-22  Mark Probst  <mark.probst@gmail.com>
610
611         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
612         correct frame pointer in the LMF.  Should fix #478394.
613
614 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
615
616         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
617
618         * image-writer.c: Make the binary writer less verbose.
619
620 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
621
622         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
623         are called from runtime invoke wrappers.
624
625 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
626
627         * cpu-ppc.md (store_memindex): Increase the size of this.
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         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
634
635         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
636         OP_LCONV_TO_R_UN.
637
638         Last fix for of #467201.
639
640
641 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
642
643         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
644
645         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
646         and long_conv_to_r8_2:
647
648         Fixed part of #467201.
649
650 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
651
652         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
653
654         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
655         conversion to 32 bits.
656
657         * cpu-x86.md: Increase the size of int_conv_to_r4.
658
659         * basic-float.cs: Add a test for this.
660
661         Fixed part of #467201.
662
663 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
664
665         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
666
667         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
668         conversion to 64 bits.
669
670         * basic-float.cs: Add a test for this.
671
672         Fixed part of #467201.
673
674 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
675
676         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
677
678         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
679         This behavior is compatible with MS.
680
681         * iltest.il.in: Add a test for this.
682
683         Fixed part of #467201.
684
685 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
686
687         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
688
689         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
690         change the precision of the value.
691
692         * cpu-x86.md: Define len for float_conv_to_r4.
693
694         * basic-float.cs: Add a test for this.
695
696         Fixed part of #467201.
697
698 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
699
700         * mini.c: Adjust locking order to the new semantics where the loader lock
701         comes first.
702
703 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
704
705         * aot-runtime.c:
706         * mini-amd64.c:
707         * mini-arm.c:
708         * mini-ia64.c:
709         * mini-mips.c:
710         * mini-ppc.c:
711         * mini-sparc.c:
712         * mini-trampolines.c:
713         * mini-x86.c:
714         * mini.c:
715         * tramp-alpha.c:
716         * tramp-amd64.c:
717         * tramp-arm.c:
718         * tramp-hppa.c:
719         * tramp-ia64.c:
720         * tramp-mips.c:
721         * tramp-ppc.c:
722         * tramp-s390.c:
723         * tramp-s390x.c:
724         * tramp-sparc.c:
725         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
726
727 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
728
729         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
730         as it is incorrect.
731
732 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
733
734         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
735         for cctors if needed.
736
737 2009-02-17  Mark Probst  <mark.probst@gmail.com>
738
739         * mini-ppc.c: Fix build on Darwin.
740
741 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
742
743         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
744         version instead of 3 as valgrind doesn't like version 3.
745
746         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
747
748         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
749         usable for hashing methods.
750         (emit_extra_methods): Use the new hash to avoid putting every method in the
751         same hash bucket.
752
753         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
754
755         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
756         whenever a method ref could match a method.
757         
758         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
759         test to fail.
760         
761         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
762         methods refs.
763
764         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
765
766         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
767         the encoding buffer.
768
769         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
770         mono_method_get_header () on inflated methods as an optimization.
771
772 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
773
774         * ssa.c (fold_ins): Fix another crash if the instruction following the
775         switch was optimized away.
776
777 2009-02-16  Mark Probst  <mark.probst@gmail.com>
778
779         Contributed under the terms of the MIT/X11 license by Steven
780         Munroe <munroesj@us.ibm.com>.
781
782         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
783
784 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
785
786         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
787         around the mono_domain_alloc calls, it is now done by the functions
788         themselves.
789
790         * aot-compiler.c (compile_method): Only add wrappers referenced by
791         the method if compiling with full AOT.
792         (mono_compile_assembly): Error out if --aot=full is specified on
793         a platform where it is not supported.
794
795         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
796         on ARM too.
797
798         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
799         AOT support.
800
801         * aot-runtime.c (load_named_code): Handle 
802         mono_arm_throw_exception_by_token.
803
804         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
805
806         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
807         unaligned.
808
809         * Makefile.am (fullaotcheck): Exit if a test fails.
810
811         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
812         on ARM.
813         (mono_compile_assembly): Handle the assembler failing.
814
815         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
816         accepting subsections of .bss.
817
818         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
819         was optimized away.
820
821         * aot-compiler.c: Remove some unused includes.
822         
823         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
824         now in MonoImageWriter.
825
826         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
827         code sequence which matches a non-virtual call. Fixes #472654.
828
829 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
830
831         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
832         xdebug code.
833         
834         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
835         use the image/dwarf writers directly.
836
837         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
838         field.
839
840         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
841         MonoDwarfWriter.
842
843         * image-writer.h: Fix some typos.
844
845         * dwarfwriter.h dwarfwriter.c: New files.
846         
847         * aot-compiler.c: Extract the DWARF info writing functionality into a 
848         separate module.
849
850         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
851         argument to return unwind info.
852
853         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
854
855         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
856         
857         * aot-runtime.c (decode_method_ref): Add a case for 
858         MONO_AOT_METHODREF_WRAPPER_NAME.
859
860         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
861         for AOT.
862
863         * aot-compiler.c (encode_method_ref): Use the new constants.
864
865         * aot-runtime.c (decode_method_ref): Ditto.
866
867         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
868         be compiled, not the icall itself.
869
870 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
871
872         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
873         using decode_method_ref ().
874
875         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
876         convert it to an in32. Fixes #475859.
877
878         * arrays.cs: Add a test.
879
880 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
881
882         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
883         OP_LCONV_TO_U2.
884
885         * basic-long.cs: Add a test.
886
887 2009-02-12  Mark Probst  <mark.probst@gmail.com>
888
889         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
890         remove the frame pointer in leaf methods which don't receive any
891         arguments, don't throw exceptions and don't do dynamic stack
892         allocations.
893
894 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
895
896         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
897         the fail_tramp changes. Hopefully fixes #475132.
898
899 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
900
901         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
902         instead of mono_metadata_signature_dup_full.
903
904 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
905
906         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
907         for processing jump tables. Fixes #473787.
908
909 2009-02-11  Mark Probst  <mark.probst@gmail.com>
910
911         * mini-generic-sharing.c: mini_method_get_context() just calls
912         mono_method_get_context_general() now.
913
914         * mini.c, mini.h: Moved get_object_generic_inst(),
915         construct_object_context_for_method() and
916         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
917
918 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
919
920         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
921         basic block fell through to its successor bblock without a branch. Fixes
922         #474718.
923
924         * iltests.il.in: Add a test.
925         
926         * aot-compiler.c (encode_method_ref): Encode methods of array types.
927         (can_encode_patch): We can now handle arrays of generic parameters and
928         array methods.
929
930         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
931
932         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
933         the AOT file to avoid some #ifdefs in aot-runtime.c
934
935         * mini.h: Bump AOT file format version.
936
937 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
938
939         * Makefile.am (fullaotcheck): Make this run the tests.
940
941         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
942
943 2009-02-10  Mark Probst  <mark.probst@gmail.com>
944
945         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
946         individually.  Fixes #473482.
947
948 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
949
950         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
951
952 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
953
954         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
955         (mono_compile_assembly): Hush compile warnings about
956         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
957         code path.
958
959 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
960
961         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
962
963         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
964
965         * aot-compiler.c: Fix arm support.
966
967         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
968         img_writer_emit_unset_mode () function.
969
970         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
971         (mono_unwind_get_dwarf_pc_reg): Ditto.
972
973         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
974         Move almost all platform specific code to a set of arch_ functions, 
975         and document them to ease porting.
976         
977         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
978
979         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
980
981         * aot-compiler.c: Extract the image writing functionality into a separate
982         module to reduce the size of this file.
983
984 2009-02-09  Geoff Norton  <gnorton@novell.com>
985
986         * mini-s390.c: Fix the signature of emit_sig_cookie.
987
988 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
989
990         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
991
992         * aot-runtime.c (is_shared_got_patch): Ditto.
993
994         * aot-runtime.c (load_named_code): Cope with the fact that 
995         decode_got_entry () won't decode the patch fully if its corresponding got
996         entry is already filled.
997         
998         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
999         Initialize *ji.
1000         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1001
1002         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
1003         as the moving pointer instead of 'buf' for consistency with the rest of the
1004         codebase.
1005         (mono_arch_create_monitor_exit_trampoline): Ditto.
1006
1007         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
1008         generic_class_init trampolines.
1009         (add_generic_class): Extract some code from add_generic_instances () into a
1010         separate function so it can be called from other places too.
1011         (compile_method): Call add_generic_class () for the classes of inflated methods
1012         referenced by the method.
1013         (can_encode_patch): Allow references to generic parameters.
1014
1015         * aot-runtime.c: Add support the patches required by the new trampolines.
1016         
1017         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
1018         support.
1019
1020         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
1021         full-aot support.
1022
1023         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
1024         this from get_throw_pending_exception, make the signature full aot compatible.
1025
1026         * Makefile.am (fullaotcheck): New target to run full-aot tests.
1027
1028         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
1029
1030         * exceptions.cs: Add a test.
1031
1032 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1035         use the DWARF_DATA_ALIGN constant instead.
1036
1037         * exception-<ARCH>.c: Update after the above change.
1038
1039         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1040         dwarf unwinder.
1041
1042         * mini-arm.c: Enable the dwarf unwinder.
1043
1044         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1045         instead of mono_class_setup_vtable ().
1046
1047 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1050         dwarf unwinder.
1051
1052         * mini-x86.h: Enable the dwarf unwinder.
1053
1054 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1055
1056         Fix mcs/tests/test-7.cs
1057         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1058         2009-02-03.
1059
1060 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1061
1062         * mini.c (print_jit_stats): Remove some unused statistics.
1063
1064 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1067
1068 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1069
1070         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1071         the method we get from mono_object_get_virtual_method() because
1072         that function does it properly, now.
1073
1074 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1077         opcodes. Fixes #472775.
1078
1079 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1080
1081         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1082         fact that mono_find_jit_info() sometimes returns the context
1083         corresponding to the jit info in new_ctx.  Fixes #472600.
1084
1085 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
1088         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
1089         klass->enum_basetype directly.
1090
1091         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
1092         enum subtypes.
1093
1094         * unwind.c: Avoid 0 sized arrays.
1095
1096 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1099         size on systems with 64k pages. Fixes #471389.
1100
1101 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1102
1103         Contributed under the terms of the MIT/X11 license by Steven
1104         Munroe <munroesj@us.ibm.com>.
1105
1106         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1107         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1108         necessary.
1109
1110 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1111
1112         Contributed under the terms of the MIT/X11 license by Steven
1113         Munroe <munroesj@us.ibm.com>.
1114
1115         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1116         comparison fix.
1117
1118         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1119         The trampoline can be longer on PPC64.
1120
1121 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1122
1123         Contributed under the terms of the MIT/X11 license by Steven
1124         Munroe <munroesj@us.ibm.com>.
1125
1126         * mini-ppc.c: Compiler warning fixes and trivial code
1127         simplifications.
1128
1129 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1132         ins->dreg which could be a hardware register, not a vreg.
1133
1134         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1135         
1136         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1137         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1138
1139         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1140         
1141         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1142         ->dreg, that is not the vreg we are looking for.
1143
1144         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1145
1146         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1147         LIVERANGE_END.
1148
1149         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1150         strange crashes.
1151
1152 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1155
1156         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1157         the line diff is 0.
1158
1159         * aot-compiler.c: Add xdebug support on x86.
1160
1161         * unwind.c: Add x86 support.
1162         
1163         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1164         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1165
1166         * mini.c (mini_method_compile): Ditto.
1167         
1168         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1169         the variable index.
1170
1171         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1172         which mimic .push_section/.pop_section in GAS.
1173         
1174         * aot-compiler.c: Emit precise live range information for variables.
1175
1176         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1177
1178         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1179         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1180         them.
1181
1182         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1183         the live ranges of variables.
1184
1185         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1186         of the variable in terms of native offsets.
1187
1188 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1189
1190         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1191         
1192 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1193
1194         Contributed under the terms of the MIT/X11 license by Steven
1195         Munroe <munroesj@us.ibm.com>.
1196
1197         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1198         order (offset then base reg) for ppc_load_multiple_regs.
1199         (emit_save_saved_regs) Correct operand order for
1200         ppc_store_multiple_regs.
1201         (mono_arch_get_call_filter): Correct operand order for
1202         ppc_load_multiple_regs.
1203
1204         * mini-ppc.c (emit_memcpy): Fix operand order for
1205         ppc_load_reg_update and ppc_store_reg_update.
1206         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1207         (mono_arch_emit_epilog): Correct operand order for
1208         ppc_load_multiple_regs.
1209
1210         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1211         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1212
1213 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1214
1215         * cpu-ppc64.md: Fixed storer4_memindex length.
1216
1217 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1218
1219         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1220         line number info.
1221         
1222         * aot-compiler.c (emit_line_number_info): Optimize this.
1223
1224 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1225
1226         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1227         
1228         * aot-compiler.c: Add debug info for methods without debug info by
1229         emitting an IL file and having the line number info referencing that file.
1230
1231         * aot-compiler.c: Optimize the size of the generated line number info.
1232
1233         * aot-compiler.c: Emit line number info in xdebug mode.
1234
1235         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1236         million arguments.
1237
1238 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1241
1242         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1243         is used.
1244
1245 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1246
1247         * basic-calls.cs: Test for the weird crash found on arm.
1248         
1249 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1250
1251         * cpu-arm.md: Increase the size of storer8_membase_reg and
1252         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1253
1254         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1255         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1256         reg to LR otherwise we'll be loading/storing from just the offset.
1257
1258 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1259
1260         Question: if we are storing gint32's inside the "*native_offset",
1261         should we change the signature to "gint32 *native_offset" to
1262         ensure that we do not have type definition problems?
1263         
1264         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1265         an int * as this is what the other function expects, causes
1266         problems with Freescale's compiler that defined int32_t to be a
1267         long and makes int incompatible 
1268
1269 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1270
1271         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1272         filename conflict with bjam.
1273
1274 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1275
1276         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1277         as it might use decomposed ops.
1278
1279 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1282
1283         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1284         is defined.
1285
1286         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1287
1288         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1289         offsets.
1290
1291         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1292         way registers are stored in MonoContext on arm.
1293
1294         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1295         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1296
1297         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1298
1299         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1300
1301         * mini.c (mini_init): Register mono_isfinite.
1302
1303         * jit-icalls.c (mono_isfinite): New jit icall.
1304
1305         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1306         
1307         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1308         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1309         the parent frame.
1310
1311 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1312
1313         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1314         separate frame and stack pointers, so we must use FP to find the register
1315         spill area.
1316         The FP reg is retrieved from the MonoContext::regs array.
1317
1318 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1319
1320         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1321         as FPA requires it.
1322
1323 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1324
1325         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1326         return R4 and R8 when not running under softfloat.
1327
1328         Fixes basic-calls.exe
1329
1330 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1331
1332         * mini-arm.c: Implement some overflow opcodes.
1333
1334 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1335
1336         * ssa.c: handle another alloca.h
1337
1338         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1339         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1340         MONO_ARCH_USE_SIGACTION. 
1341
1342         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1343         capability defines.
1344
1345         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1346
1347         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1348         PPC targets as sigaction does not exist on all platforms, define
1349         this on a per-platform basis.
1350
1351         Instead of erroring out if the platform is not defined, include
1352         mini-ppc-os.h, and expect that the OS specific setting provides
1353         the required information.   
1354
1355 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1356
1357         * aot-compiler.c: Fix --enable-minimal=aot.
1358
1359 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1362         previous change.
1363
1364 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * exceptions-arm.c: Fix warnings.
1367
1368         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1369         ARM.
1370
1371         * mini-x86.c: Fix --enable-minimal=jit build.
1372
1373         * mini.c: Really fix --enable-minimal=jit build.
1374         
1375         * mini.c (construct_object_context_for_method): Move this outside
1376         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1377
1378         "Backported" of r124984 from 2.0 branch.
1379         
1380         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1381
1382         "Backport" of r124977 + r124978 from 2.0 branch.
1383         
1384         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1385         to avoid calling mono_exception_from_token () from the throw trampoline.
1386         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1387         for throwing corlib exceptions, this fixes full-aot support for corlib
1388         exceptions.
1389
1390         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1391
1392 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1393
1394         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1395         part of the changes to split the code in mini into operating
1396         system specific files.
1397
1398         This patch was done by copying mini.c to the respective files to
1399         preserve SVN history.
1400
1401 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1402
1403         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1404
1405 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1406
1407         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1408         remoting-invoke-with-check wrappers of shared methods.
1409
1410         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1411
1412 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1413
1414         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1415         optimization if the top of stack is the last instruction in the
1416         bblock.  Otherwise it might have been used after its definition.
1417         Fixes #469742.
1418
1419 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1422         method as well when get_vcall_slot () fails to match a code sequence.
1423
1424         * mini-arm.c: Fix the android build, which doesn't have
1425         __aeabi_read_tp.
1426
1427 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1430         the s390x build.
1431
1432 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1433
1434         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1435
1436 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1439         and put its id into jinfo->used_regs. This is only used on amd64,
1440         which is currently the only platform generating unwind info.
1441
1442         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1443         the dwarf unwinder. This is required to correctly handle async exceptions
1444         like thread abort and stack overflows, which can happen while a method
1445         is in the middle of its prolog or epilog.
1446         
1447         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1448         the unwind info belonging to an AOTed method.
1449
1450         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1451         into cfg->unwind_ops.
1452         
1453         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1454
1455         * mini.c (mini_init): Call mono_unwind_init ().
1456         (mini_cleanup): Call mono_unwind_cleanup ().
1457
1458         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1459         unwind info to be shared between methods.
1460
1461         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1462         saved in the LMF.
1463
1464         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1465         get_throw_pending_exception () to avoid initialization races.
1466
1467         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1468         mono_arch_exceptions_init () function.
1469
1470         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1471
1472 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1473
1474         * mini.c (mono_get_domain_intrinsic): New helper function.
1475         (mono_get_thread_intrinsic): Ditto.
1476
1477         * mini-arm.c mini-ia64.c: Use the new helper functions.
1478         
1479         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1480         the last constrained_call change, since it is needed in the non-AOT
1481         case as well.
1482
1483         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1484         
1485         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1486         mono_get_lmf_addr () on arm eabi linux.
1487
1488 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1489
1490         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1491         code sequence which matches a non-virtual call.
1492
1493 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1494
1495         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1496         stack pointer (r1).
1497
1498 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1499
1500         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1501         runtime-invoke wrappers, since they are also shared based on signature.
1502
1503 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1504
1505         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1506         info from the (correct) context.
1507
1508 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1509
1510         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1511         
1512         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1513         using dwarf unwinding info. Not yet used.
1514
1515         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1516
1517 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1518
1519         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1520         descriptors.
1521
1522         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1523         special case and handle mono_arch_delegate_invoke_impl() returning
1524         function descriptors.
1525
1526         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1527         trampolines return function descriptors, too.
1528
1529 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1532         out_of_line optimization.
1533
1534 2009-01-21  Martin Baulig  <martin@ximian.com>
1535
1536         * mini.h
1537         (MonoCompile): Added `disable_deadce_vars' to disable removing
1538         unused variables.
1539
1540         * mini.c
1541         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1542         inside the debugger.
1543
1544         * liveness.c (mono_analyze_liveness): Don't remove any unused
1545         variables if `cfg->disable_deadce_vars' is set.
1546
1547 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1548
1549         * method-to-ir.c: Only apply exception constructor optimization if
1550         the the method actually belongs to an exception class.  Fixes
1551         #467456.
1552
1553 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1554
1555         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1556         change inside a #ifdef __mono_ppc64__.
1557
1558         * aot-compiler.c (compile_method): Remove the previous limitation.
1559
1560         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1561         on type variables in AOTed code.
1562         
1563         * aot-compiler.c (compile_method): Skip generic methods having type 
1564         constraints on their generic parameters.
1565
1566         * aot-compiler.c (compile_method): Check for methods which cannot be
1567         encoded inside RGCTX_FETCH patches as well.
1568
1569         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1570         build.
1571
1572 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1573
1574         * method-to-ir.c: Force the vtable variable in shared generic code
1575         for the case that they might show up on a stack trace where they
1576         are needed.
1577
1578         * mini-exceptions.c: Save and use generic sharing info as well as
1579         IP in stack traces to resolve shared generic instantiations.
1580
1581 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1584         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1585
1586 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1587
1588         * method-to-ir.c: Do generic sharing for array constructors.
1589
1590 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * mini-exceptions.c (mono_print_thread_dump): Add information
1593         about the thread state using wapi_current_thread_desc.
1594
1595 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1596
1597         * basic-simd.cs: Tests for the new constructors. 
1598
1599 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1600
1601         * mini-ops.h: Added OP_EXPAND_*
1602
1603         * cpu-x86.md: Same.
1604
1605         * mini-x86.c (mono_arch_output_basic_block): Same.
1606         
1607         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1608
1609 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * iltests.il.in: Add a test for #467385.
1612
1613 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1614
1615         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1616         thread been cleaned up is not the same currently in execution.
1617
1618         Fixes appdomain-unload crashes on windows, osx and linux variants
1619         without the __thread keyword.
1620
1621 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1622
1623         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1624         (koush@koushikdutta.com). Implement this for android.
1625
1626         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1627         begins with a digit.
1628
1629         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1630         mono_marshal_get_write_barrier ().
1631
1632 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1633
1634         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1635         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1636         that pass them on a register pair.
1637
1638         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1639         test was crashing due to that.
1640
1641 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1642
1643         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1644         trampoline code. Include ucontext.h only if available.
1645
1646 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1647
1648         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1649         and doesn't check whether it's sharable, like it was before
1650         removing the shared generics hash.  This brings IronPython
1651         performance back to what it was before that change.
1652
1653 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1654
1655         * method-to-ir.c: Handle delegate invocation optimization earlier,
1656         otherwise it would be handled (much more slowly) by the
1657         final/sealed optimization.
1658
1659 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1660
1661         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1662         domain is not set. Fixes #465864.
1663
1664 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1665
1666         * method-to-ir.c: Don't stop sharing of generic methods with catch
1667         clauses - we already handle those.
1668
1669 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1670
1671         * mini.c, mini.h: lookup_generic_method() is now
1672         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1673         making the shared_generics_hash obsolete.
1674
1675 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1676
1677         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1678         use the red zone.  Make room on the stack first and then use it,
1679         not the other way around.
1680
1681 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1682
1683         * mini.c (mini_init): Call mono_xdebug_init ().
1684
1685         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1686
1687 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1688
1689         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1690
1691         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1692         trampolines.
1693
1694         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1695         debug+unwind info for trampolines.
1696
1697         * mini.c (mono_create_unwind_op): New helper function.
1698
1699         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1700
1701 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1702
1703         * aot-compiler.c: Fix the build.
1704
1705 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * Makefile.am: Update dtrace-prelink.sh location.
1708
1709 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1712         optimization. Fixes #464520.
1713
1714 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1715
1716         * mini-amd64.c : Adding code to save/restore non-volatile registers
1717            on Winx64.
1718
1719         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1720           registers on Winx64.
1721
1722         Contributed under MIT/X11 license.
1723
1724 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1727         __GNUC_MINOR__ which can break when the major version changes.
1728
1729 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1730
1731         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1732
1733 2009-01-07  Geoff Norton  <gnorton@novell.com>
1734
1735         * helpers.c:  Allow mono -v -v -v to work on darwin.
1736
1737 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1738
1739         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1740           pattern. 
1741
1742         Contributed under MIT/X11 license.
1743
1744 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
1747         instead of directly accessing type->data.klass. Fixes #462016.
1748         (mono_allocate_stack_slots_full): Ditto.
1749
1750         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
1751         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
1752
1753         * aot-compiler.c (emit_plt): Fix ARM build.
1754
1755 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
1758         
1759         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
1760         change.
1761
1762         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
1763         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
1764         #463357.
1765
1766         * iltests.il.in: Add a regression test.
1767
1768 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1769
1770         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
1771
1772 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1773
1774         * basic-simd.cs: Add a regression test for #462457.
1775
1776 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1777
1778         * mini-ops.h: Add a definition of XPHI.
1779
1780         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
1781
1782         * ssa.c (op_phi_to_move): Handle XPHI.
1783
1784         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
1785
1786         Fixes #462457
1787
1788 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1789
1790         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
1791
1792 2008-12-31  Geoff Norton  <gnorton@novell.com>
1793
1794         * mini-ppc.c: The prolog size allocated can be too small for darwin
1795         ppc32 under certain circumstances.  Also fix a small logic bug.
1796
1797 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
1800         while loading AOT methods.
1801
1802         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
1803         since only the former is nulled out after a successful cast. This prevents
1804         crashes with rethrown exceptions when using --debug=casts.
1805
1806 2008-12-24  Mark Probst  <mark.probst@gmail.com>
1807
1808         * mini.h: New macro for checking whether a method is final,
1809         i.e. whether the method or its class is marked final.
1810
1811         * method-to-ir.c: Use the new macro for all final-checks
1812         consistently.  Fixes the crash in the System.ServiceModel tests.
1813
1814 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1815
1816         * mini-exceptions.c (get_exception_catch_class): Corrected another
1817         overly strict assertion.
1818
1819 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1820
1821         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
1822         Clobbering it is not allowed because the caller might use it as
1823         the vtable register in the interface call.
1824
1825 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1826
1827         * mini-exceptions.c (get_exception_catch_class): Corrected an
1828         overly strict assertion.
1829
1830 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
1831         
1832         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
1833
1834         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
1835
1836         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
1837
1838         * cpu-mips.md: correct lengths for certain long_ opcodes.
1839
1840         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
1841
1842         * 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().
1843         
1844 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1845
1846         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
1847         
1848 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1849         
1850         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
1851         
1852 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
1853
1854         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
1855         next basic block.
1856         
1857 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
1858
1859         * 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
1860
1861         * 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)
1862         
1863 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
1864         
1865         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
1866         
1867 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
1870         gshared code. Fixes #458947.
1871
1872         * generics.cs: Add a test.
1873
1874 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1875         
1876         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1877         
1878         * mini-mips.c: first pass n32 code generation.
1879
1880         * mini-mips.h: datatypes and defines for n32 support.
1881
1882         * exceptions-mips.c: first pass n32 code generation.
1883         
1884         * tramp-mips.c: first pass n32 code generation.
1885         
1886         * cpu-mips.md: add long_ opcodes.
1887         
1888 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1889
1890         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1891
1892         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1893         
1894         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1895         
1896         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1897
1898         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1899
1900         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1901
1902         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1903
1904         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1905
1906         * helpers.c: for mips/n32, don't pass -mips32 to objdump
1907
1908 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
1911
1912 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
1913
1914         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
1915
1916 2008-12-12  Mark Probst  <mark.probst@gmail.com>
1917
1918         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
1919         descriptors for helper functions directly in front of the code.
1920
1921 2008-12-11  Mark Probst  <mark.probst@gmail.com>
1922
1923         * method-to-ir.c: Removed an unnecessary assertion.
1924
1925 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1926
1927         * method-to-ir.c: Merge SGEN changes from the old JIT.
1928
1929 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1930
1931         * driver.c (compile_all_methods_thread_main): Handle failure of
1932         mono_get_method ().
1933
1934 2008-12-10  Mark Probst  <mark.probst@gmail.com>
1935
1936         * mini-ppc.c: Merged with mini-ppc64.c.
1937
1938         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
1939
1940         * Makefile.am: Use the same sources for PPC and PPC64.
1941
1942         * mini-ppc64.c: Removed.
1943
1944 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1945
1946         * branch-opts.c (remove_block_if_useless): Extract fall through detection
1947         code to mono_bb_is_fall_through.
1948         
1949         * branch-opts.c (mono_remove_critical_edges): Same.
1950
1951 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1952
1953         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
1954         expect that an OP_BR_REG will be there.
1955
1956 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1957
1958         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
1959         for the many branch ops. The original check miss OP_BR_REG.
1960
1961         Fixes #457574.
1962         
1963 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1964
1965         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
1966
1967 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
1970         while holding the aot lock.
1971
1972 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1973
1974         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
1975         
1976 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1977
1978         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
1979           to release all runtime callable wrappers held by the runtime.
1980
1981         Contributed under MIT/X11 license.
1982
1983 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1984
1985         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
1986           for Winx64.
1987
1988         Contributed under MIT/X11 license.
1989
1990 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
1993         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
1994
1995 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1996
1997         * cpu-mips.md: fix ckfinite length
1998
1999         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
2000         (mono_arch_lowering_pass): cleanup, rearrange for clarity
2001         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
2002         
2003 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
2004
2005         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
2006         
2007 2008-12-08  Geoff Norton  <gnorton@novell.com>
2008
2009         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
2010         size by 8 bytes as well.
2011
2012 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2013
2014         * basic-simd.cs: Fix method names for Vector16b.
2015         
2016 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2017
2018         * basic-simd.cs: Fix method names for Vector16sb.
2019
2020 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2021
2022         * basic-simd.cs: Fix method names for Vector8us.
2023         
2024 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2025
2026         * basic-simd.cs: Fix method names for Vector8s.
2027         
2028 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2029
2030         * basic-simd.cs: Fix method names for Vector4ui.
2031
2032 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2033
2034         * basic-simd.cs: Fix method names for Vector2l.
2035
2036 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2037
2038         * basic-simd.cs: Fix method names for Vector2d.
2039
2040 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2041
2042         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2043         that are extension methods.
2044
2045 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2046
2047         * basic-simd.cs: Fix method names for Vector4f.
2048
2049 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2052         as such. Fixes #456669.
2053
2054 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2055
2056         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2057         
2058 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2059
2060         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2061         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2062         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2063         (mips_adjust_stackframe): handle FP spills
2064                 
2065         * mini-ops.h: add mips_mtc1_s2
2066         
2067         * cpu-mips.md: add mips_mtc1_s2
2068         
2069 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * unwind.c: New file, move the unwind info encoding functions here from
2072         aot-compiler.c, so they could be used at runtime too.
2073
2074 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2075
2076         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2077         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2078         
2079 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2080
2081         * mini-mips.c: cleanup warnings
2082         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2083         (mips_adjust_stackframe): handle case of taking the address of stack locals
2084         
2085 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * aot-compiler.c: Implement a few functions missing from the asm writer.
2088         (emit_method_code): Only write symbols for methods when using the bin
2089         writer, since the assembler can't deal with the characters in our method
2090         names.
2091
2092         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
2093
2094         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
2095         call.
2096
2097         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
2098         a bit to also restore %rax.
2099
2100 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2101
2102         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2103
2104 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2105
2106         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2107         arguments.
2108
2109 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2110
2111         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2112
2113         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2114         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2115
2116         * exceptions-ppc64.c: Removed.
2117
2118         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2119
2120 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2121
2122         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2123         tramp-ppc64.c.
2124
2125         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2126
2127         * tramp-ppc64.c: Removed.
2128
2129 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2130
2131         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2132         the TYPESPEC table.
2133
2134 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2135
2136         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2137
2138         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2139         mini-ppc.h instead of mini-ppc64.h.
2140
2141         * mini-ppc64.h: Removed.
2142
2143 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2144
2145         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2146         
2147         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2148         
2149 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2150
2151         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2152         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2153         code easier.
2154
2155 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2156
2157         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2158
2159 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2160
2161         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2162
2163 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2164
2165         * basic-simd.cs: Tests for operator == and != on Vector4f.
2166
2167 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2168
2169         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2170
2171         * simd-intrinsics.c: Kill useless enum.
2172
2173 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2174
2175         * cpu-mips.md: add long_conv_to_ovf_i4_2
2176         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2177
2178 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2179
2180         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2181         
2182         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2183
2184 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2185
2186         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2187         
2188 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2189
2190         * basic-simd.cs: Add tests for new methods.
2191
2192 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2193
2194         * simd-intrinsics.c: Add support for operator == and !=
2195         on Vector4(u)i.
2196
2197         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2198
2199 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2200
2201         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2202
2203 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2206
2207         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2208         MONO_PATCH_INFO_ICALL_ADDR.
2209
2210         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2211
2212         * aot-compiler.c: Resurrect full-aot support.
2213
2214 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2215
2216         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2217         
2218 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2219
2220         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2221         
2222 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2223
2224         * basic-simd.cs: Fix tests to work under ppc.
2225         Remove tests for methods that will be removed.
2226
2227 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2228
2229         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2230         generic type (via a typedef or typeref) correctly.
2231
2232 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2235         diagnose an assertion failure.
2236
2237 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2238
2239         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2240         Fix trampoline size.
2241
2242         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2243         conversion opcodes are implemented natively instead via emulation.
2244
2245 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2246
2247         * cpu-mips.md: remove mips_xori
2248
2249         * mini-ops.h:  remove mips_xori
2250
2251         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2252
2253         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2254         
2255         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2256         
2257 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2258
2259         * cpu-mips.md: fix instruction lengths.
2260
2261         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2262
2263         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2264
2265         * mini-ops.h: fix slti / sltiu op profiles.
2266         
2267 2008-12-02  Martin Baulig  <martin@ximian.com>
2268
2269         * method-to-ir.c (mono_method_to_ir): Disable debugging
2270         information for the init locals block to make the debugger stop
2271         after all locals have been initalized.
2272
2273 2008-12-02  Martin Baulig  <martin@ximian.com>
2274
2275         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2276         running inside the debugger.
2277
2278 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2281         is enabled.
2282
2283         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2284         alu->alu imm optimization which only shows if deadce is disabled.
2285
2286         * aot-compiler.c: Rename the function names for the binary and asm writers
2287         so they can coexist in the same process. Rework the xdebug code to use the
2288         asm writer. This avoids the need to call into the runtime to dump the
2289         debugging info. Add more debugging info for types.
2290
2291         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2292
2293         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2294         cpu description tables, they can't occur in cpu-<ARCH>.md.
2295
2296         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2297         the stack in CEE_LDFLDA. Fixes #450542.
2298
2299         * generics.cs: Add a new test.
2300
2301 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2302
2303         * mini-ops.h: updated MIPS opcodes
2304         * mini-mips.c: decompose long opts
2305         * mini-mips.h: decompose long opts
2306         
2307 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2308
2309         * cpu-mips.md: fix length on int_rem_un
2310         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2311         
2312 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2315
2316         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2317
2318 2008-11-29  Martin Baulig  <martin@ximian.com>
2319
2320         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2321         mono_debug_using_mono_debugger() in addition to the
2322         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2323
2324 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2325
2326         * mini-ops.h: updated more MIPS opcodes
2327         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2328         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2329         
2330 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2331
2332         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2333
2334 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2335
2336         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2337         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2338         * mini-ops.h: correct selected mips opcode entries
2339         
2340 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2341
2342         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2343         make them work.
2344
2345 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2346
2347         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2348
2349 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2350
2351         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2352         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2353         * mini-mips.h: disable IMT
2354         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2355         
2356 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2357
2358         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2359
2360 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2361
2362         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2363
2364 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2367         consistency.
2368
2369 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2370
2371         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2372         for Set/GetVector aligned versions.
2373
2374 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2375
2376         * basic-simd.cs: Add tests for Get/SetVector.
2377
2378 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2379
2380         * mini.c: Removed g_slist_append_mempool().  Now in
2381         metadata/mempool.c.
2382
2383 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2384
2385         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2386         size properly and make the bounds check optional.
2387
2388         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2389         for SetVector and IsAligned.
2390
2391 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2392
2393         * mini.c: Remove unused mono_normalize_opcodes () function.
2394
2395 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2396
2397         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2398         using the new atomic add ops now.
2399
2400         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2401         add.
2402
2403 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2404
2405         * mini-ppc64.c: Several fixes.
2406
2407 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2408
2409         * cpu-mips.md: added jump_table
2410         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2411
2412 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2413
2414         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2415
2416 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2417
2418         * mini-ops.h: corrected a handful of MIPS opcodes.
2419
2420 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2421
2422         * aot-compiler.c: MIPS to use ELF writer
2423
2424 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2425
2426         * mini-codegen.c: remove MIPS specific assert.
2427
2428 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2429
2430         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2431         fixes.  PPC64 now passes most of the runtime regressions.
2432
2433 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2436         volatile intervals a bit.
2437
2438 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2439
2440         * basic-long.cs: New test case.
2441
2442 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * mini.c (mini_method_compile): Disable globalra for large methods for 
2445         now.
2446
2447         * regalloc2.c (order_moves): Add fp support.
2448
2449         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2450         source bblock ends with an OP_BR_REG.
2451
2452         * ratests.cs: Add a new test.
2453
2454 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2455
2456         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2457         sharing.  PPC64 now passes generics.exe.
2458
2459 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2460
2461         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2462
2463 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2466         memory when mono_jit_info_table_find () can't find the method in the
2467         LMF case.
2468
2469         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2470         AOTed code too.
2471         
2472         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2473         writer too.
2474
2475 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2476
2477         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2478         Several fixes.  PPC64 now runs exceptions.exe and
2479         devirtualization.exe.
2480
2481 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2482
2483         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2484         arrays.exe and basic-math.exe.
2485
2486 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2487
2488         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2489         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2490
2491 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2492
2493         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2494
2495 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2496
2497         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2498
2499         * ir-emit.h: Move macros from method-to-ir.c to here.
2500
2501 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2502
2503         * mini-ops.h: Correct the long simd ops to use LREG.
2504
2505 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2506
2507         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2508         
2509         * mini-ops.h: Correct the dreg type of a few long opcodes.
2510
2511         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2512         Add netbsd support.
2513
2514 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2515
2516         * mini-ppc.c: remove negative stack references in epilog
2517         for platforms that don't support the red zone.
2518
2519 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2520
2521         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2522         point regs.  Now PPC64 passes basic-calls.exe.
2523
2524 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2525
2526         * basic-simd.cs: Add tests for accessors of Vector2l.
2527
2528 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2529
2530         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2531
2532         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2533         
2534         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2535
2536 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2537
2538         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2539         PPC64 passes basic-long.exe.
2540
2541 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2542
2543         * decompose.c: Decompose carry and overflow add on PPC64 like on
2544         other 64 bit archs.  Don't decompose sub at all on PPC64.
2545
2546         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2547         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2548         basic-long.exe.
2549
2550 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2551
2552         * basic-simd.cs: Add tests for accessors of Vector2d.
2553
2554 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2555
2556         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2557
2558         * cpu-x86.md: Same.
2559
2560         * mini-x86.c (mono_arch_output_basic_block): Same.
2561         
2562         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2563
2564 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2565
2566         * basic-simd.cs: Add tests for accessors of Vector4f.
2567
2568 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2569
2570         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2571
2572         * cpu-x86.md: Same.
2573
2574         * mini-x86.c (mono_arch_output_basic_block): Same.
2575         
2576         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2577
2578 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2579
2580         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2581
2582 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2583
2584         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2585
2586         * cpu-x86.md: Same.
2587
2588         * mini-x86.c (mono_arch_output_basic_block): Same.
2589         
2590         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2591
2592 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2593
2594         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2595
2596 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2597
2598         * simd-intrinsics.c: Enable setters for Vector16sb.
2599
2600 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2601
2602         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2603
2604         * cpu-x86.md: Same.
2605
2606         * mini-x86.c (mono_arch_output_basic_block): Same.
2607         
2608         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2609
2610 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * simd-intrinsics.c: Implement setter for Vector8us.
2613
2614 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2617         for dead variables.
2618
2619 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2620
2621         * mini-ppc.c: remove references to the red zone in the prolog
2622         (for systems that don't support it).
2623
2624 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2625
2626         * cpu-ppc64.md: Fixed a few instruction lengths.
2627
2628         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2629         now.
2630
2631 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2632
2633         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2634         basic.exe now.
2635
2636 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2639
2640 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2641
2642         * mini-ops.h: Added OP_INSERT_I2.
2643
2644         * cpu-x86.md: Same.
2645
2646         * mini-x86.c (mono_arch_output_basic_block): Same.
2647         
2648         * simd-intrinsics.c: Implement setter for Vector8s.
2649
2650         * simd-methods.h: Add the names of get setters of Vector8s.
2651
2652 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2653
2654         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2655         
2656         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2657         parameters.
2658
2659         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2660
2661 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2662
2663         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2664         for PPC64.  An empty program runs now.
2665
2666 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2667
2668         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2669
2670         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2671         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2672         info for JITted code is emitted into a shared library, loadable into gdb.
2673
2674 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2675
2676         * Makefile.am: Changes to build PPC64.
2677
2678         * mini-arch.h: Include mini-ppc64.h on PPC64.
2679
2680 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2681
2682         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2683         in PPC code up to r119147.
2684
2685 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2686
2687         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2688         cpu-ppc64.md: Changes for PPC64.
2689
2690         Based on code submitted by andreas.faerber@web.de at
2691         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2692         X11/MIT license.
2693
2694 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2695
2696         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2697         cpu-ppc64.md: Copied from the corresponding PPC files from
2698         r118846.
2699
2700 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2701
2702         * mini-ops.h: Added OP_ROUND.
2703
2704         * cpu-x86.md: Added round.
2705
2706         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2707
2708         * basic-math.cs: Added test_0_round to test rounding.
2709
2710         Contributed under MIT/X11 license.
2711
2712 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2713
2714         * aot-compiler.c : Fix the Winx64 build.
2715
2716         Contributed under MIT/X11 license.
2717
2718 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2719
2720         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2721         in OP_EXTRACT_R8 to avoid possible stack corruption.
2722
2723 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2724
2725         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2726
2727         * cpu-x86.md: Added extract_r8.
2728
2729         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2730         
2731         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2732         a couple of OP_EXTRACT_I4.
2733
2734         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2735
2736         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2737
2738 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2739
2740         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2741         and not 4.1. 
2742
2743 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
2746         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
2747
2748         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
2749         are not needed any more.
2750
2751         * mini.h: Remove the unused INS_LIST macros.
2752
2753         * mini.c (mini_method_compile): Remove a disable globalra case which is no
2754         longer needed.
2755
2756         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
2757         ir-emit.h.
2758
2759         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
2760         mono_alloc_ireg () instead.
2761
2762         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
2763         macros.
2764
2765         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
2766         on amd64.
2767
2768         * aot-runtime.c (load_aot_module): Disable AOT when running under
2769         CAS.
2770
2771         * mini-amd64.h: Change the monitor fastpath defines to check for
2772         !PLATFORM_WIN32 so they work on *bsd too.
2773
2774         * mini.h mini.c mini-hhpa.c: Remove more unused code.
2775
2776         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
2777
2778         * mini.h (MonoCompile): Remove new_ir flag.
2779
2780         * regalloc.h regalloc.c: Remove unused code.
2781
2782         * cpu-*.md: Remove more unused opcodes.
2783
2784         * simple-cee-ops.h simple-mini-ops.h: Removed.
2785
2786         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
2787         
2788 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2789
2790         * aliasing.h: Removed.
2791
2792         * *.c: Remove references to aliasing.h and inssel.h.
2793
2794         * mini.c: Remove additional unused functions.
2795
2796         * mini-ops.h cpu-*.md: Remove unused opcodes.
2797
2798 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2799
2800         Remove the old JIT code.
2801
2802         * inssel*.brg: Removed.
2803
2804         * ssa.c abcremoval.c aliasing.c: Removed.
2805
2806         * ssa2.c: Renamed to ssa.c.
2807
2808         * abcremoval2.c: Renamed to abcremoval.c.
2809
2810         * *.c: Removed all !cfg->new_ir code.
2811
2812         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
2813         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
2814
2815         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
2816         
2817 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2818
2819         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
2820         to simplify the code and cut back on the number of global symbols in the AOT
2821         file.
2822         
2823         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
2824
2825 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
2826
2827         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
2828         with the got/got_info tables.
2829
2830         * mini.h: Bump AOT file format version.
2831         
2832         * unwind.h: New file, contains definitions for stack unwinding.
2833
2834         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
2835         to cfg->unwind_ops.
2836         
2837         * aot-compiler.c: Generalize the emitting of unwind information to use the
2838         information in cfg->unwind_ops.
2839
2840         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
2841
2842         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
2843         AOT method frames. Enable writing symbols for methods by default.
2844
2845 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
2846
2847         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
2848         and make it work with vectors of element sizes 1, 2 and 4.
2849
2850         * simd-intrinsics.c: Enable getter for all vectors with element size
2851         1, 2 or 4.
2852
2853         * simd-methods.h: Add the names of other getters.
2854
2855         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
2856
2857         * cpu-x86.md: Same.
2858
2859         * mini-x86.c: Same.
2860
2861 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
2862
2863         * mini-ppc.h: portability fix.
2864
2865 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2866
2867         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
2868         buggy and will overwrite it.
2869
2870 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
2873         Use it to emit local symbols for all methods so AOTed methods show up with
2874         their full name in gdb/valgrind output.
2875
2876 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
2877
2878         * mini-ppc.c: portability fixes.
2879
2880 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
2883         entries out of the if (!generic_shared...) code so it is always done.
2884         (mono_class_init_trampoline): Do the patching when running under valgrind
2885         too, newer versions of valgrind have no problems with it.
2886
2887 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2888
2889         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
2890         further sections.
2891
2892 2008-11-13  Mark Probst  <mark.probst@gmail.com>
2893
2894         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
2895         filters.
2896
2897 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2898
2899         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
2900
2901 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2902
2903         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
2904
2905         * cpu-x86.md: Same.
2906
2907         * mini-x86.c: Same.
2908
2909         * simd-intrinsics.c: Same.
2910
2911 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2912
2913         * simd-intrinsics.c: Enable constructor intrinsics for all types.
2914
2915 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2916
2917         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
2918         to work with more Vector types.
2919
2920 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2921
2922         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
2923         store the elemens directly instead of using and intermediate.
2924
2925 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2926
2927         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
2928
2929         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
2930         to preserve %eax for aot plt trampolines.
2931
2932         * aot-compiler.c (compile_method): Don't skip synchronized methods.
2933         (encode_method_ref): Flag synchronized methods so they won't go through
2934         the AOT trampoline.
2935
2936         * aot-compiler.c: Additional work to support AOTing synchronized methods/
2937         wrappers.
2938
2939         * cpu-ia64.md (jmp): Increase max length.
2940
2941 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2942
2943         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
2944         open generic classes.
2945
2946         * aot-compiler.c: Enable the ELF writer on ELF platforms.
2947
2948         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
2949         box+brtrue optimization since it causes test failures on x86.
2950
2951 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2952
2953         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
2954
2955         * cpu-x86.md: Same.
2956
2957         * mini-x86.c: Same.
2958
2959         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
2960         for simd ctor values. 
2961
2962         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
2963         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
2964
2965 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2966
2967         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
2968         LogicalRightShift.
2969
2970         * simd-instrincs.c: Same.
2971
2972         * basic-simd.cs: Same.
2973
2974 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2975
2976         * ratests.cs: Add more tests.
2977
2978         * regalloc2.c (add_spill_code): Handle more corner cases.
2979
2980 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
2983         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
2984         both the source an destination of an instruction.
2985
2986 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2987
2988         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
2989         wapihandles.c: more portability changes.
2990
2991 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
2992
2993         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
2994         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
2995         safe to execute in a signal handler and the kernel provides better
2996         the info in /proc/self/smaps. Avoid the assert on sigaction during
2997         cleanup.
2998
2999 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3000
3001         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
3002         do the bblock linking hack if it is actually needed.
3003
3004         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
3005         up linking.
3006
3007         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
3008         crash problem is fixed.
3009
3010         * branch-opts.c (mono_remove_critical_edges): Link up newly added
3011         bblocks.
3012
3013         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
3014         for catch clauses.
3015         (mini_method_compile): Set the starting value of next_vreg to 
3016         MAX_IREGS + MAX_FREGS when using globalra.
3017
3018         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
3019         filter clauses with BB_EXCEPTION_HANDLER.
3020
3021         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
3022
3023 2008-11-10  Mark Probst  <mark.probst@gmail.com>
3024
3025         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
3026         space for stdcall.  Fixes regressions on Win32.
3027
3028 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
3031         bblocks.
3032         (linear_scan): Remove an assert which doesn't seem to be needed.
3033
3034         * local-propagation.c (mono_local_deadce): Avoid a call to
3035         MONO_DELETE_INS which would screw up the instruction linking.
3036
3037         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3038
3039         * regalloc2.c: Upgrade to work the current JIT code.
3040
3041 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3042
3043         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3044         case.
3045
3046         * aot-runtime.c: Remove some dead code.
3047
3048         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3049         consistency.
3050         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3051
3052         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3053         trampolines using sscanf since atoi doesn't work on large unsigned values.
3054
3055         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3056         Initialize code_size.
3057
3058 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3059
3060         * method-to-ir.c (mini_emit_inst_for_method): Make
3061         Interlocked.CompareExchange work for Int arguments on 32 bit
3062         archs, as well.
3063
3064 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3065
3066         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3067
3068 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3069
3070         * main.c Fix MSVC build.
3071
3072         Contributed under MIT/X11 license.
3073
3074 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3075
3076         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3077         alignment larger than 8 bytes are aligned correctly, too.
3078
3079         * mini.c: Honor the min_align field of MonoClass when laying out
3080         the stack.
3081
3082 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3083
3084         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3085
3086         * aot-compiler.c (emit_plt): Fix a warning.
3087         
3088         * aot-compiler.c: Implement ARM support in the binary writer.
3089
3090 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3091
3092         * basic-simd.cs: Add test for getter with byref arg.
3093         Fix the naming of a few tests.
3094         Add missing checks to a test.
3095
3096 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3097
3098         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3099
3100         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3101         most of the full-aot support for monitor enter/exit trampolines.
3102
3103         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3104         enter/exit trampoline creation functions.
3105
3106         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3107         make dist.
3108
3109 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3110
3111         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3112         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3113         implement the needed functionality without adding crap to the runtime.
3114
3115 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3118         non-x86 builds.
3119
3120         * mini.c (mono_build_date): New global version holding the build date in
3121         string format.
3122         
3123         * Makefile.am (buildver.c): Generate a file containing the build date.
3124
3125         * main.c: Set the build date from the generated file.
3126
3127         * mini.c (mono_get_runtime_build_info): New helper function returning build
3128         information in a string format.
3129         
3130         * driver.c (mono_main): Print the build date in --version.
3131
3132         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3133         file when the bind-to-runtime-version option is used.
3134
3135 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3136
3137         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3138
3139 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3140
3141         * simd-methods.h: Rename prefetch methods.
3142
3143         * simd-intrinsics.c: Same.      
3144
3145 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3146
3147         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3148         sizes.
3149
3150 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * aot-compiler.c: Use the bundled elf header files instead of depending on
3153         the system one.
3154         
3155         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3156         mempool.
3157
3158         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3159         on every call.
3160
3161 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3162
3163         * cpu-x86.md: Add store nta ops.
3164
3165         * mini-ops.h: Same.
3166
3167         * mini-x86.c: Same.
3168
3169         * mini.h: Add an enum for simd prefetch modes.
3170
3171         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3172         of store. Use the changed code to support store nta.
3173
3174         * simd-intrinsics.c: Add prefetch ops for all vector types.
3175
3176 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3177
3178         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3179         threads.
3180         
3181         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3182         names.
3183
3184         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3185         trampolines.
3186
3187 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3188
3189         * mini-x86.c: Fixed commit.
3190
3191 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3192
3193         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3194
3195 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3196
3197         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3198         and MONITOR_EXIT, for the ASM fastpaths.
3199
3200         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3201         available.
3202
3203         * mini.c, patch-info.h: Signature and patch infos for
3204         Monitor.Enter/Exit trampolines.
3205
3206         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3207
3208         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3209         Monitor.Enter/Exit ASM fastpath for Linux.
3210
3211 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3212
3213         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3214
3215         * objects.cs: Add a new test.
3216         
3217         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3218
3219         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3220         if MONO_LOG_LEVEL is set.
3221
3222         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3223
3224         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3225
3226         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3227         
3228         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3229         of file offsets. Align the sections belonging to the data segment to 
3230         PAGESIZE.
3231
3232 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3233
3234         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3235         elf.h. Port it to amd64.
3236
3237 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3238
3239         * driver.c: Enable SIMD by default.
3240
3241 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3242
3243         * cpu-x86.md: Add prefetch op.
3244
3245         * mini-ops.h: Same.
3246
3247         * mini-x86.c: Same.
3248
3249         * mini.h: Add an enum for simd prefetch modes.
3250
3251         * simd-methods.h: Add prefetch function names.
3252
3253         * simd-intrinsics.c: Add prefetch ops for all vector types.
3254
3255 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3256
3257         * aot-compiler.c (emit_bytes): Speed this up a little.
3258
3259 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3260
3261         * aot-compiler.c: Add JIT time etc. statistics.
3262         
3263         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3264
3265         * mini.h (MonoCompile): Add 'got_offset' field.
3266
3267         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3268         method_got_offsets array.
3269
3270         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3271         wrappers.
3272
3273         * aot-compiler.c (compile_method): Add generic method instances referenced
3274         by the method to the list of methods to be compiled, this is required so if
3275         A<T> references B<T>, and another assembly references A<int>, then it will
3276         also get a copy of B<int>.
3277
3278         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3279         when checking for monitor enter/exit.
3280
3281 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3282
3283         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3284         for Monitor.Enter and Monitor.Exit if enabled.
3285
3286         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3287         Solaris.
3288
3289 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3292         of an OP_MOVE. Fixes #440046.
3293
3294         * basic-long.cs: Add a new test.
3295
3296 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3297
3298         * mini.h: Add synchronization note for the managed counter-part.
3299
3300         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3301         returns the simd caps of the current cpu.
3302
3303 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3304
3305         * basic-simd.cs: Remove Console.WriteLine.
3306
3307 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3308
3309         * basic-simd.cs: New tests for Vector2ul.
3310
3311 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3312
3313         * simd-intrinsics.c: Add new vector type Vector2ul.
3314
3315 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3316
3317         * basic-simd.cs: New tests for Vector2l.
3318
3319 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3320
3321         * cpu-x86.md: Add long version of most packed int ops.
3322
3323         * mini-ops.h: Same.
3324
3325         * mini-x86.h: Same.
3326
3327         * simd-intrinsics.c: Add new vector type Vector2l.
3328
3329 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3330
3331         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3332
3333         * simd-methods.h: Remove SN_op_BitwiseXor.
3334
3335 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3338         alignment.
3339
3340 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3341
3342         * basic-simd.cs: Test for Vector2d.
3343
3344         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3345         value.
3346
3347 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3348
3349         * cpu-x86.md: Add double version of all packed float ops.
3350
3351         * mini-ops.h: Same.
3352
3353         * mini-x86.h: Same.
3354
3355         * simd-intrinsics.c: Add new vector type Vector2d.
3356
3357         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3358
3359         * simd-methods.h: Add Duplicate.
3360
3361 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3362
3363         * basic-simd.cs: Test for packing with signed saturation.
3364
3365 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3368         found in the TYPESPEC table.
3369
3370 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3371
3372         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3373         too.
3374
3375         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3376
3377         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3378         instead of the RVA, since the RVA can be changed by tools like the cil 
3379         stripper.
3380
3381         * method-to-ir.c (mono_method_to_ir2): Ditto.
3382
3383         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3384         (deserialize_variable): Ditto.
3385
3386 2008-10-25  Martin Baulig  <martin@ximian.com>
3387
3388         * debug-mini.c (write_variable): Use
3389         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3390
3391 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3392
3393         * cpu-x86.md: Add unsigned variants of packd and packw.
3394
3395         * mini-ops.h: Same.
3396
3397         * mini-x86.h: Emit the right instruction for packd and packw.
3398         Add unsigned variants of packd and packw.
3399
3400         * simd-intrinsics.c: Packd and packw were used in place of their
3401         unsigned variants. Change that.
3402         Add intrinsics for (Signed)PackWithSignedSaturation.
3403
3404         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3405
3406 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3407
3408         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3409
3410 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3411
3412         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3413
3414         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3415
3416         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3417         sse instructions.
3418
3419         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3420
3421 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3422
3423         * method-to-ir.c, mini.c: Special casing for the synchronized
3424         wrapper for the ldtoken+GetTypeFromHandle case.
3425
3426 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3429
3430         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3431         created/split bblocks.
3432
3433 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3434
3435         * mini-ops.h: Add packed signed mul high.
3436         
3437         * cpu-x86.md: Same.
3438
3439         * mini-x86.c (mono_arch_output_basic_block): Same.
3440
3441         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3442
3443         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3444
3445 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3446
3447         * basic-simd.cs: Tests for Vector16sb.
3448
3449 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3450
3451         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3452
3453 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3454
3455         * mini-ops.h: Add packed signed min, max and compare greater.
3456         
3457         * cpu-x86.md: Same.
3458
3459         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3460         saturation.
3461
3462         * simd-methods.h: Add CompareGreaterThan.
3463
3464         * simd-methods.h: Remove CompareEquals.
3465
3466         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3467
3468         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3469
3470         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3471         CompareEqual.
3472
3473 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3474
3475         * basic-simd.cs: Fix tests due to change in the API.
3476
3477 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3478
3479         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3480
3481 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3482
3483         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3484
3485         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3486         inst_offset as this has invalid values for LDADDR.
3487
3488 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3489
3490         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3491
3492         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3493
3494 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3495
3496         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3497         for accessing field->data.
3498
3499 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3500
3501         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3502
3503 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3504
3505         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3506
3507         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3508
3509 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3510
3511         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3512         from the cfg mempool.
3513
3514 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3515
3516         * basic-simd.cs: Tests for new methods in Vector8us.
3517
3518 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3519
3520         * mini-ops.h: Add multiply and store high.
3521         
3522         * cpu-x86.md: Same.
3523
3524         * mini-x86.c (mono_arch_output_basic_block): Same.
3525
3526         * simd-methods.h: Same.
3527
3528         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3529         and CompareEqual.
3530
3531 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3532
3533         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3534         mono_class_setup_vtable ().
3535
3536         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3537         mono_class_get_vtable_entry () for accessing klass->vtable.
3538
3539         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3540
3541         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3542         found.
3543
3544         * method-to-ir.c (mono_save_token_info): Don't save references made from
3545         wrappers.
3546
3547         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3548         of generic instances.
3549
3550         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3551
3552 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3553
3554         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3555         OP_JMP depends on the method signature.  Calculate it properly.
3556
3557 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3558         
3559         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3560         called directly.
3561
3562         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3563         instances.
3564         (emit_extra_methods): Add another table mapping method indexes to 
3565         offsets in the extra_method_info table.
3566
3567         * mini.h: Bump AOT file format version.
3568         
3569         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3570         and mono_aot_get_method_from_token () into one function.
3571
3572 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3573
3574         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3575         separate counter.
3576
3577 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3580         methods.
3581
3582         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3583         disable_aot.
3584
3585         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3586
3587         * mini.h: Bump aot file format version.
3588
3589         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3590         AOT file can contain native code for methods which are not in the METHOD
3591         table. Generate code for non-sharable generic instances of generic methods
3592         found in the METHODSPEC table.
3593         
3594         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3595         encoding generic type handles.
3596
3597         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3598         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3599
3600         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3601         macros + MONO_ADD_INS.
3602
3603         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3604         context as well.
3605
3606         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3607
3608         * mini.h: Bump aot file format version.
3609
3610         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3611
3612 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3613
3614         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3615         platforms, with definable stack alignment value.  Set to 16 now
3616         for all platforms.
3617
3618         * mini.c, mini.h, driver.c: Command line option for disabling
3619         stack alignment.
3620
3621 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3622
3623         * basic-simd.cs: Tests for new methods in Vector4ui.
3624
3625 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3626
3627         * mini-ops.h: Add packed int shuffle.
3628         
3629         * cpu-x86.md: Same.
3630
3631         * mini-x86.c (mono_arch_output_basic_block): Same.
3632
3633         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3634         extract mask, max, min, shuffle.
3635
3636         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3637
3638 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3639
3640         * basic-simd.cs: Tests for new methods in Vector8us.
3641
3642 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3643
3644         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3645         RuntimeTypeHandle, not a TypedReference.
3646
3647 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3648
3649         * simd-intrinsics.c: remove relocations.
3650
3651 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3652
3653         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3654         optimizations from the x86 backend.
3655
3656 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3657
3658         * simd-methods.h, simd-intrinsics.c: debloat method names and
3659         prepare for no relocations.
3660
3661 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3662
3663         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3664         
3665         * cpu-x86.md: Same.
3666
3667         * mini-x86.c (mono_arch_output_basic_block): Same.
3668
3669         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3670         extract mask, max, min and sum of absolute differences.
3671
3672         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3673         method name.
3674
3675 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3676
3677         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3678         Renamed one test for consistency.
3679
3680 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3681
3682         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3683         fix to the code that deal with other blocks.
3684
3685 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3686
3687         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3688
3689 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3690
3691         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3692         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3693         able to process the source reg.
3694
3695 2008-10-16  Martin Baulig  <martin@ximian.com>
3696
3697         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3698
3699         * inssel.brg: Add `OP_HARD_NOP'.
3700
3701         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3702
3703         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3704         `OP_HARD_NOP' instruction when running inside the debugger.
3705
3706         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3707         `OP_HARD_NOP' instruction when running inside the debugger.
3708
3709 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3712         now works. The issue with the regalloc tripping up no longer
3713         happens.
3714
3715         * simd-intrinsics.c (load_simd_vreg): Same.
3716
3717 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3718         
3719         * basic-simd.cs: Tests for new Vector8ui methods.
3720
3721 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3722
3723         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3724         only for type. This fixes crashes where MonoInst::klass is checked
3725         for ops of type != VTYPE or OBJ.
3726
3727         * simd-intrinsics.c (load_simd_vreg): Same.
3728
3729 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3730
3731         * mini-ops.h: Add ops for packed shuffle/max/avg and
3732         extract mask.
3733         
3734         * cpu-x86.md: Same.
3735
3736         * mini-x86.c (mono_arch_output_basic_block): Same.
3737
3738         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3739         extract mask.
3740
3741         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3742         to emit extract mask op.
3743
3744         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
3745         to emit word shuffles.
3746
3747 2008-10-15  Mark Probst  <mark.probst@gmail.com>
3748
3749         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
3750         the largest alignment needed by a variable, but at least
3751         sizeof(gpointer).
3752
3753 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3754
3755         * basic-simd.cs: Tests for the fixes in the last commit.
3756
3757 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3758
3759         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
3760         no longer handles STACK_PTR input.
3761
3762         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
3763
3764         * simd-intrinsics.c (load_simd_vreg): New function that works like 
3765         get_simd_vreg   but handles STACK_PTR input.
3766
3767         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
3768         as the input can be an arbitrary pointer.
3769
3770         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
3771         LDADDR local optimization directly otherwise use a store op.
3772
3773 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3774
3775         * basic-simd.cs: Tests for dup low and dup high.
3776
3777 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3778
3779         * mini-ops.h: Add dup low and dup high ops.
3780         
3781         * cpu-x86.md: Same.
3782
3783         * mini-x86.c (mono_arch_output_basic_block): Same.
3784
3785         * simd-intrinsics.c (vector4f_intrinsics): Same.
3786
3787 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3788
3789         * basic-simd.cs: Tests for recently added functionality.
3790
3791 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3792
3793         * mini-ops.h: Add remaining sse1 fp ops.
3794         
3795         * cpu-x86.md: Add remaining sse1 fp ops.
3796
3797         * mini-x86.c (mono_arch_output_basic_block): Same.
3798
3799         * mini.h: Add enum for simd FP compare conditions.
3800
3801         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
3802
3803         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
3804         so the backed can generate the appropriate op.
3805
3806 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3807         This patch squeese one more byte from the SimdIntrinsc struct.
3808
3809         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
3810         a a shift amount intead of simply or'ing it.
3811
3812         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
3813
3814         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
3815         byte so we can have an aditional flags field without increasing struct size.
3816
3817         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
3818         against the simd_supported_versions bitmask.
3819
3820         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
3821
3822 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
3823
3824         * mini.c: remove rawbuffer code (the only use here is unsafe because
3825         it takes locks during signal handling and the kernel now provides much
3826         better info in proc/pid/smaps these days).
3827
3828 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
3831         OP_X86_PUSH_OBJ. Fixes #434620.
3832
3833         * objects.cs: Add a test.
3834         
3835 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
3836
3837         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
3838         that the packuswb/packusdw don't work with unsigned numbers for what
3839         would be negative numbers in signed format.
3840
3841         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
3842         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
3843
3844         * mini-ops.h: Add doubleword forms of many ops and packing ones.
3845
3846         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
3847
3848         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
3849
3850         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
3851
3852         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
3853         add more ops.
3854
3855         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
3856         version as the enum in mini.h.
3857
3858         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
3859         for sse3 ops, check the simd_version field if present. This way the code
3860         works with all versions of sse.
3861
3862 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3863
3864         * simd-intrinsics.c: Fixed intrinsic name typo.
3865
3866         * mini.h: Added missing simd exported function.
3867
3868         * basic-simd.cs: Added tests for Vector4ui.
3869         Fixed broken test for Vector16b.
3870
3871 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3872
3873         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
3874         the max length to 64.
3875
3876 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3877
3878         * method-to-ir.c: Only do the fast virtual generic method call for
3879         non-wrapper methods.
3880
3881         * mini.h, mini-trampolines.c: The new generic virtual remoting
3882         trampoline handles virtual method calls via the vtable (as done by
3883         the fast virtual generic method calls) to remoting proxies.
3884
3885         * mini.c (mono_jit_create_remoting_trampoline): For generic
3886         methods reate a generic virtual remoting trampoline.
3887
3888         * mini-amd64.h: Enable fast virtual generic method calls again.
3889
3890 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3891
3892         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
3893         restore registers when doing tail calls.
3894
3895 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3896
3897         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
3898         Vector4ui.
3899
3900 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3901
3902         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
3903
3904 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3905
3906         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
3907
3908 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3909
3910         * basic-simd.cs: Retrofit for API changes.
3911
3912 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3913
3914         * mini-ppc.c: Handle integer stack arguments for tail calls.
3915
3916 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3917
3918         * optflags-def.h: Removed sse3 optimization.
3919
3920         * driver.c: Same.
3921
3922         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
3923         sse3.
3924
3925         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
3926
3927         * mini.h: Added enumeration with simd versions.
3928
3929         * simd-intrinsics.c (emit_intrinsics): Use the new static var
3930         for detecting SSE3.
3931
3932         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
3933
3934         * mini.c (mini_init): Call mono_simd_intrinsics_init.
3935
3936 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3937
3938         * basic-simd.cs: Added tests for Vector8u and Vector16u.
3939
3940         * basic-simd.cs: Fixed test naming.
3941
3942 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3943
3944         * mini-ops.h: Added ops for packed and saturated math, shifts
3945         and packing/unpacking.
3946
3947         * cpu-x86.md: Added descriptors for the above ops.
3948
3949         * mini-x86.c: Added code to emmit the above ops.
3950
3951         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
3952
3953 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3954
3955         * aot-compiler.c (compile_method): Enable AOT for generic code.
3956
3957         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
3958
3959 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
3960
3961         * mini.c: add a workaround for a common screwup that ends up blamed
3962         to mono (other processes blocking signal delivery).
3963
3964 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3965
3966         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
3967         in the LDFLD/STFLD opcodes. Fixes #432673.
3968
3969         * iltests.il.in: Add a new test.
3970
3971 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
3972
3973         * mini-arm.c: attach the thread in unmanaged->managed transitions
3974         using delegates (bug #433148).
3975
3976 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3977
3978        * basic-simd.cs: Use new ShuffleSel constants.
3979
3980 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3981
3982         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
3983
3984         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
3985         only disable simd intrinsics if no sse2 is detected.
3986
3987         * optflags-def.h: Added sse3.
3988
3989         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
3990         is disabled.
3991
3992 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3993
3994         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
3995         when adding delegate-invoke wrappers.
3996
3997 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3998
3999         * Makefile.am: Reenable the simd tests.
4000
4001 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4002
4003         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
4004           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
4005           other vreg is allocated to that hreg.
4006
4007         Contributed under MIT/X11 license.
4008
4009 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
4012         yet checked in.
4013
4014 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4015
4016         * basic-simd.cs: New test suite for SIMD intrinsics.
4017
4018         * Makefile.am: Added new tests.
4019
4020 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4021
4022         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
4023
4024         * mini-ops.h: Same.
4025
4026         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
4027
4028         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
4029         using SSE2 aware opcodes.
4030
4031         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
4032         is enabled, this code path is only reachable if conversion ops are emmited after
4033         mono_method_to_ir.
4034
4035         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4036
4037         This optimization saves 6 bytes per conversion against the old version.
4038
4039 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4040
4041         * aot-compiler.c (compile_method): Don't skip methods referencing 
4042         generic methods without a corresponding entry in token_info_hash, since
4043         encode_method_ref () can handle all generic methods now.
4044
4045         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4046         generic context is set.
4047         
4048         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4049         generic sharing of LDTOKEN.
4050
4051 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4052
4053         * mini-amd64.h: Temporarily disabled fast virtual generic method
4054         calls because it breaks the System.Runtime.Remoting tests.
4055
4056 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4057
4058         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4059
4060         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4061         so inlining actually works.
4062         (check_inline_caller_method_name_limit): Ditto.
4063
4064 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4065
4066         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4067         64 bit safety (from Olaf Hering and Andreas Färber).
4068
4069 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4070         
4071         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4072         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4073         unused virtual call support code.
4074
4075         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4076         
4077         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4078         which can't use aot trampolines.
4079         (decode_patch): Don't create aot trampolines for methods which can't use
4080         them.
4081
4082         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4083         use aot trampolines.
4084
4085         * mini.h: Bump AOT image format version.
4086         
4087 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
4090         to save_token_info () since cmethod is inflated for constrained calls.
4091
4092         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
4093
4094 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
4095
4096         * Makefile.am: Add build rules for ppc64.
4097         This avoids the build failing at pedump with unresolved symbols
4098         due to lack of arch_sources. Instead it will now fail earlier
4099         due to lack of cpu-ppc64.md.
4100
4101         Contributed under MIT/X11 license.
4102
4103 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4104
4105         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4106         tail calls.
4107
4108         * iltests.il.in: Add test case for tail call with many arguments.
4109
4110 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4113         to the fast virtual generic method code until the aot case is fixed.
4114
4115 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4116
4117         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4118
4119 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4120
4121         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4122         thunks.
4123
4124 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4125         
4126         * simd-intrinsics.c: Forgot to add this one.
4127
4128         * mini-codegen.c: Fix macro in case SIMD is not supported.
4129
4130 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4131         
4132         This patch land initial JIT support for simd intrinsics.
4133
4134         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4135
4136         * Makefile.am: Added simd-intrinsics.c
4137
4138         * simd-intrinsics.c: New file with simd instrinsic related
4139         code.
4140
4141         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4142
4143         * cpu-x86.md: Add simd related instructions.
4144
4145         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4146
4147         * driver.c: Added two new --regression variants.
4148
4149         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4150
4151         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4152
4153         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4154         extract some complicated logic to helper functions.
4155
4156         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4157
4158         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4159
4160         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4161         the specialized simplification pass.
4162
4163         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4164
4165         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4166
4167         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4168         table.
4169
4170         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4171         if MONO_ARCH_NEED_SIMD_BANK is defined.
4172
4173         * mini-ops.h: Added the new simd ops.
4174
4175         * mini-x86.c: Added mono_arch_xregname.
4176
4177         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4178
4179         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4180
4181         * mini-x86.h: Define simd related MONO_ARCH macros.
4182
4183         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4184
4185         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4186
4187         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4188         MONO_CLASS_IS_SIMD to deal with simd related IR.
4189
4190         * mini.h (MonoInst): Added spill_var to the backend union.
4191
4192         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4193
4194         * mini.h: Added forward declarations of the new simd fuctions.
4195
4196         * optflags-def.h: Added new optimization names SIMD.
4197
4198         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4199
4200         * regalloc.h: Added support for working with 3 register banks.
4201
4202         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4203
4204         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4205
4206 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4207
4208         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4209
4210 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4211
4212         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4213         instead of one on 64 bit systems.
4214
4215         * method-to-ir.c: Remove unused includes.
4216
4217 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4218
4219         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4220         cfg->used_int_regs, since the two are different on arm.
4221
4222 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4223
4224         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4225         mono_method_get_vtable_index() to get the vtable index.
4226
4227 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4228
4229         * method-to-ir.c (mono_method_to_ir2): Don't create native
4230         wrappers for array methods, because they're never called (and if
4231         they were called they wouldn't work).
4232
4233 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4234
4235         * method-to-ir.c (mono_method_to_ir2): Array methods are
4236         special-cased and must not be invoked indirectly via the (M)RGCTX
4237         when generic sharing is turned on.  Fixes #431413.
4238
4239 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4240
4241         * method-to-ir.c: When generic sharing is active, call
4242         non-interface virtual generic methods via the standard trampoline.
4243
4244         * mini-trampolines.c: Handle virtual generic shared methods.
4245
4246         * mini.h, mini-x86.c, mini-x86.h: New argument for
4247         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4248         method thunks and which is the trampoline to call if the lookup
4249         fails.  Enable the virtual generic method thunk for x86.
4250
4251         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4252         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4253         argument but assert that it's NULL, because these archs don't yet
4254         implement the virtual generic method thunk.  Changes in the IMT
4255         thunk data structures.
4256
4257 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4258
4259         * aot-compiler.c (emit_globals): Avoid invalid characters in
4260         the static linking symbol.
4261
4262         * objects.cs: Add a test for the range check optimization. Fix warnings.
4263
4264         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4265         optimization from the current JIT.
4266
4267         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4268         later in decompose_array_access_opts () to allow more optimizations.
4269
4270         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4271         mono_decompose_soft_float () for consistency.
4272
4273         * mini-ops.h: Fix arguments of OP_STRLEN.
4274
4275         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4276         into a separate function.
4277         (reset_cast_details): Ditto.
4278         (handle_unbox): Save cast details. Fixes #431254.
4279
4280         * method-to-ir.c: Remove some obsolete FIXMEs.
4281
4282 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4283
4284         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4285
4286 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4287
4288         * mini-codegen.c: More work on macros to make them
4289         ready for multiple regbanks.
4290
4291 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4292
4293         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4294
4295         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4296
4297 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4298
4299         * mini-codegen.c (mono_spillvar_offset): Proper support for
4300         multiple regbanks.
4301
4302 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4303
4304         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4305         the stack overflow changes.
4306
4307 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4308
4309         * mini-codegen.c: Make all bank macros depend on reg_bank.
4310
4311         * mini-codegen.c (mono_local_regalloc): Make free mask
4312         initialization regbank aware.
4313
4314 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4315
4316         * mini-codegen.c (mono_local_regalloc): Extract callee
4317         mask selection to a function and make it regbank aware.
4318
4319 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4320
4321         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4322         code to deal with many regbanks.
4323
4324 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * mini-codegen.c: More fp->regbank changes.
4327
4328 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4329
4330         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4331         of a hardcoded constant.
4332
4333 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4334
4335         * method-to-ir.c (type_from_stack_type): Fix typo.
4336
4337 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4338
4339         * mini-ia64.c (emit_move_return_value): Convert float return values to
4340         double.
4341
4342         * objects.cs: Add a new test.
4343         
4344         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4345         VARARG methods to fix an assert later.
4346
4347         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4348         end so it at least compiles.
4349
4350 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4351
4352         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4353
4354 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4355
4356         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4357         optimization to a new function (emit_optimized_ldloca_ir) and enable
4358         it for both ldloca and ldloca_s.
4359
4360 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4361
4362         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4363         gshared CASTCLASS code.
4364
4365         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4366         amd64, where the libc stack unwinder encounters stack frames referring to
4367         native code in unmapped memory.
4368
4369         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4370         sharing.
4371
4372         * generics.cs: Add new test.
4373
4374 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4377         add a check that one of the ARM_FPU_ constants is defined.
4378
4379         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4380         
4381         * mini-exceptions.c: Fix build on non-altstack platforms.
4382
4383         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4384         sharing of vtypes.
4385
4386         * ir-emit.h: Add a comment to NEW_PCONST.
4387
4388         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4389
4390         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4391
4392         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4393         after the changes to MonoJitDomainInfo.
4394
4395 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4396
4397         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4398
4399 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4400
4401         * mini-ppc.c: Compiler warning fixes.
4402
4403 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4404
4405         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4406         for pinvokes.
4407
4408 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4409
4410         * exceptions-ppc.c, mini-ppc.h: Compile
4411         mono_arch_handle_altstack_exception() on Darwin, too.
4412
4413 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4414
4415         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4416         work on archs which don't have generic sharing implemented, only
4417         without the vtable_arg.
4418
4419 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4420
4421         * mini.c: Added comment explaining why delegate ctor icall
4422         wrappers are compiled.
4423
4424 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4425
4426         * mini.c: Don't produce trampolines to delegate ctor icall
4427         wrappers but compile them upfront.
4428
4429 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4430
4431         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4432         runtime-set function when going back to managed code. Currently this
4433         is used to set back the protection on the soft ovf pages and/or to
4434         throw the stack overflow exception that happened in unmanaged code.
4435
4436 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4437
4438         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4439         runtime-set function when going back to managed code. Currently this
4440         is used to set back the protection on the soft ovf pages and/or to
4441         throw the stack overflow exception that happened in unmanaged code.
4442
4443 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4444
4445         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4446         the support code for restoring stack protection after stack overflows
4447         that happen in unmanaged code. Don't set the exec permission on the
4448         soft overflow area.
4449
4450 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4451
4452         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4453         delegate->method_ptr is set. Fixes #428054.
4454
4455 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * tests.cs: Rename to ratests.cs.
4458
4459         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4460         emit_get_rgctx_... functions.
4461
4462 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4463
4464         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4465
4466 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4467
4468         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4469         before asserting that method is sharable.
4470
4471 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4472
4473         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4474         whether method needs a static RGCTX wrapper used instead of
4475         complex conditions.
4476
4477         * generic-sharing.c, mini.h: A few functions moved to
4478         metadata/generic-sharing.c.
4479
4480 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4481
4482         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4483         Generic code sharing for value types, which essentially means
4484         treating value type methods like static methods.  The RGCTX is
4485         passed in the same way.
4486
4487 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4490         opcode when creating multi-dimensional arrays of open types.
4491
4492         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4493         open generic types.
4494
4495         * generics.cs: Add a test.
4496
4497         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4498
4499 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4500
4501         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4502
4503         * mini.c (mini_method_compile): Set it when running under the debugger. 
4504
4505         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4506         vreg optimization if the flag is set.
4507
4508         * driver.c (mono_main): Add --attach= option to pass options to
4509         the attach agent.
4510
4511         * mini.c (sigquit_signal_handler): Start the attach agent.
4512
4513         * ssapre.c: Disable this to save space since it is not yet ported to
4514         linear IR.
4515
4516         * regalloc2.c: Disable this to save space.
4517
4518         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4519
4520 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4521
4522         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4523         the -v option useful again.
4524
4525 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4528         --break-at-bb.
4529
4530         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4531         arrays of arrays. Fixes #428406.
4532
4533         * method-to-ir.c (mini_emit_castclass): Ditto.
4534
4535         * objects.cs: Add new test.
4536         
4537 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4538
4539         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4540         was wrong at it choked against target_type_is_incompatible for byref types.
4541
4542 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4543
4544         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4545         places.
4546
4547 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4548
4549         * mini-exceptions.c: update a few more exceptions-related counters.
4550
4551 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4552
4553         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4554         new functions to allocate from persistent mempools.
4555
4556 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4559         multiple register banks in the future.
4560
4561         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4562
4563 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4564
4565         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4566
4567         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4568
4569         * mini.h: Export type_to_eval_stack_type.
4570
4571         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4572         is only ins->klass of byref types.
4573
4574 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4575
4576         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4577         (mini_emit_memcpy2): Ditto.
4578
4579         * mini-amd64.c: Fix a warning.
4580
4581 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4582
4583         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4584         linking.
4585
4586 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4587
4588         * method-to-ir.c: Extract stloc micro-optimization to a
4589         function and apply it to all cases.
4590
4591 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4592
4593         * method-to-ir.c: Don't fail generic code sharing in cases we
4594         already support.
4595
4596 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4597
4598         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4599
4600 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4601
4602         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4603         implementation.
4604
4605 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4606
4607         * trace.c: make tracing more useful and correct, with per-thread
4608         id and indent info.
4609
4610 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4611
4612         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4613         doing a method call and the argument is an R4.
4614
4615 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4618         generic methods.
4619
4620 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4621
4622         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4623
4624 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4625
4626         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4627         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4628
4629 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4630
4631         * driver.c: Add a --agent argument (not supported yet) to load managed
4632         agent assemblies before loading the main assembly, similarly to how the
4633         Java VM handles agents.
4634
4635 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4636
4637         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4638         function to do stack layout of local variables.
4639
4640 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4641
4642         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4643         calculation.
4644
4645 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4646
4647         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4648         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4649         JIT if DISABLE_JIT is defined.
4650
4651         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4652         defined.
4653
4654 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4655
4656         * iltests.il.in: Disable the fconv test on PPC (the result is
4657         undefined according to ECMA).
4658
4659 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4660
4661         * iltests.il.in: Enable tail call tests for PPC.
4662
4663         * mini.h: Add variable for storing incoming valuetype argument
4664         addresses for tail calls.
4665
4666         * mini-ppc.c: Implement valuetype arguments and return values for
4667         tailcalls on Linux.
4668
4669 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4670
4671         * mini-ppc.c: Partially implement tail calls (struct arguments and
4672         return values not supported).
4673
4674         * method-to-ir.c: Enable tail calls on PPC.
4675
4676 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4677
4678         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4679         runtime-invoke wrappers to work around the problem of them getting
4680         assigned to a random class.
4681
4682         * aot-runtime.c (mono_aot_get_method): Ditto.
4683         
4684 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4685
4686         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4687         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4688
4689 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4690
4691         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4692         until they're implemented properly.
4693
4694         * exceptions-ppc.c: Use arch-independent exception-handling code
4695         instead of custom one.
4696
4697         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4698         for Linear IR.
4699
4700         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4701
4702         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4703         applies when __powerpc__ is defined.
4704
4705 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4708         methods to their code to avoid computing the full name of wrappers and
4709         doing a lookup in a string hash table.
4710
4711 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4712
4713         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4714         we identify bblocks before method_to_ir () is ran.
4715
4716         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4717         Also avoid optimizing branches pointing to themselves.
4718
4719         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4720
4721 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4722
4723         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4724
4725 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4726
4727         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4728         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4729         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4730         'buf'.
4731
4732         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4733         jumped to the same entry in plt_jump_table.
4734
4735 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4738         dynamic images.
4739
4740 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4741
4742         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4743         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4744         #421807.
4745
4746 2008-08-29  Geoff Norton  <gnorton@novell.com>
4747
4748         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
4749         segment, and doesn't properly handle .space as .text.  Fixes
4750         AOT Mach/ARM
4751
4752 2008-08-29  Geoff Norton  <gnorton@novell.com>
4753
4754         * mini.c: Disable the mach exception handler when running on 
4755         ARM
4756
4757 2008-08-29  Geoff Norton  <gnorton@novell.com>
4758
4759         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
4760         globals on Darwin/ARM
4761
4762 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
4765         since too many things depend on it. Instead, call 
4766         mono_runtime_set_no_exec ().
4767         
4768         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
4769         the new JIT.
4770
4771         * aot-compiler.c: Add an 'asm-only' AOT option.
4772
4773         * mini.c: Avoid initializing the runtime when doing AOT compilation.
4774                 
4775         * aot-compiler.c (compile_method): Disable gshared support for now as it
4776         doesn't yet work.
4777
4778 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4779
4780         * mini-amd64.h : Fix a compiler warning.
4781
4782         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
4783           Changed to use a callback function to retrieve the unwind info.
4784           This avoids problems observed when code blocks were removed by
4785           unloading an app domain.
4786
4787         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
4788           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
4789           to work properly.
4790
4791         Contributed under MIT/X11 license.
4792
4793 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4794
4795         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
4796           case to keep the stack aligned to 8.
4797
4798         Contributed under MIT/X11 license.
4799
4800 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
4801
4802         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
4803         avoid repeated linear searches.
4804
4805 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4806
4807         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
4808         methods it can't handle.
4809         
4810         * aot-compiler.c (add_method): Avoid adding a method twice.
4811         (add_wrappers): Add runtime invoke wrappers for all methods.
4812
4813         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
4814         function to create an aot-compatible version of this trampoline.
4815
4816         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
4817
4818 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4819
4820         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
4821
4822         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
4823         with a generic sharing failure.
4824
4825         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
4826
4827         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
4828         CEE_RETHROW. Fixes #419634.
4829
4830         * mini.c (mono_method_to_ir): Ditto.
4831
4832         * exceptions.cs: Add a new test.
4833         
4834         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
4835         to mono_type_stack_size_internal () since some callers might not pass in
4836         an rgctx.
4837
4838         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
4839         instrument_prolog. Fixes #419878.
4840
4841         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
4842         doubles in soft float mode volatile.
4843
4844 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4845
4846         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
4847
4848         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
4849         to handle soft float correctly.
4850
4851         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
4852         the fast path.
4853
4854         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
4855
4856         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
4857         to sp, since the generics catch code requires it.
4858
4859         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
4860         copying.
4861
4862         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
4863         mono_arch_emit_imt_argument ().
4864
4865         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
4866
4867         * mini-arm.c tramp-arm.c: Generic sharing updates.
4868
4869 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4870
4871         * mini-arm.c: Fix the arm build.
4872
4873         * generic-sharing.c (mini_type_get_underlying_type): New helper function
4874         handling enums, generic instances and generic sharing.
4875         (mini_type_stack_size_full): Ditto.
4876
4877         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
4878         
4879         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
4880
4881         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
4882
4883         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
4884         trampolines.
4885
4886         * mini-arm.c: Various small generic sharing changes.
4887
4888         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
4889         this for x86.
4890         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
4891         custom code.
4892
4893         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
4894         helper function to return a generic class init trampoline.
4895
4896         * method-to-ir.c mini.c: Use it.
4897         
4898         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
4899         arch-specfic function to return a generic class init trampoline.
4900
4901         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
4902         the GENERIC_CLASS_INIT custom code.
4903
4904         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
4905         a fatal error, not a sharing failure.
4906
4907         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
4908         needed.
4909
4910         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
4911         trampoline argument from MONO_ARCH_VTABLE_REG.
4912
4913         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4914         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4915         argument, and pass the vtable in VTABLE_REG.
4916
4917         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4918         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4919         argument, and pass the vtable in VTABLE_REG.
4920         (mono_arch_create_trampoline_code_full): Remove some special casing for
4921         the rgctx fetch trampoline.
4922
4923         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
4924         Fixes #419273.
4925
4926         * iltests.il: Add a test for it.
4927
4928 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4929
4930         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
4931
4932         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
4933         no longer needed.
4934
4935         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
4936         use mono_jit_info_table_find () to avoid recursion.
4937         (mono_delegate_trampoline): Add a sync wrapper here.
4938
4939         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
4940         here.
4941
4942         * mini.c (mono_method_to_ir): Ditto.
4943         
4944         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
4945         add_sync_wrapper argument. Don't add a sync wrapper here.
4946         (mono_create_jump_trampoline): Don't add a sync wrapper here.
4947
4948         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
4949         
4950 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4951
4952         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
4953           of nonvolatile registers back from MonoContext to CONTEXT.
4954
4955         Contributed under MIT/X11 license.
4956
4957 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4958
4959         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
4960           arguments on Winx64 there are only 4 argument registers.  For this
4961           logic to work the last argument must be pulled from the stack.  
4962
4963         Contributed under MIT/X11 license.
4964
4965 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4966
4967         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4968
4969         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
4970         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
4971         encode/decode_method_ref ().
4972
4973         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
4974
4975         * aot-runtime.c (decode_patch): Ditto.  
4976
4977         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
4978         MONO_PATCH_INFO_METHOD.
4979
4980         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
4981         MonoGenericJitInfo.
4982
4983         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
4984         MonoGenericJitInfo.
4985
4986         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
4987
4988         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
4989         one from the caller.
4990
4991         * aot-runtime.c (decode_generic_inst): New function to decode and
4992         return a interned generic inst.
4993         (decode_klass_ref): Use it.
4994         (decode_method_ref): Ditto.
4995
4996         * aot-compiler.c (emit_exception_debug_info): Save 
4997         jinfo->has_generic_jit_info too.
4998
4999 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5000
5001         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
5002
5003         * iltests.il.in: Add a test for fconv_to_i.
5004
5005         * liveness.c: Disable the liveness2 pass for now to save space.
5006
5007         * regalloc2.c: Include mempool-internals.h to fix warnings.
5008
5009         * aot-compiler.c (encode_method_ref): Encode the context of generic
5010         instance methods.
5011
5012         * aot-runtime.c (decode_method_ref): Inflate generic methods using
5013         the context saved in the aot file.
5014
5015         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5016
5017         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5018
5019         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
5020         volatile so they won't be optimized away.
5021
5022 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
5023
5024         * ssa.c:
5025         * ssa2.c:
5026         * mini.c:
5027         * regalloc2.c:
5028         * dominators.c: Remove duplicated functions that now are in
5029         mempool-internals.h.
5030
5031 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5032
5033         * aot-compiler.c: Fix warnings.
5034
5035         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5036
5037         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5038
5039         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5040         as the patch type.
5041
5042         * mini.c (mono_resolve_patch_target): Ditto.
5043         
5044         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5045         (encode_klass_ref): Add support for encoding VARs/MVARs.
5046
5047         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5048
5049         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5050         the handling of the got entries into a separate 'decode_got_entry' function.
5051         Add support for RGCTX_FETCH.
5052
5053         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5054         clobbered by the trampoline code.
5055
5056         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5057         not clobbered by the indirect calling code.
5058
5059 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5060
5061         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5062         to fix the build.
5063
5064 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5065
5066         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5067         signature using the compilation mempool otherwise we would leak it.
5068
5069 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5070
5071         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5072         mono_emit_abs_call ().
5073
5074         * patch-info.h: Add GENERIC_CLASS_INIT.
5075
5076         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5077
5078         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
5079         as their target as a near call.
5080
5081         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5082         ABS handling code.
5083         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5084
5085         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
5086         call to a runtime function described by a patch.
5087
5088         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
5089         mono_emit_abs_call, this has the advantage that the ABS handling code in
5090         mono_codegen () can handle them both, and can handle other stuff in the
5091         future without additional code.
5092
5093         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
5094         entry.
5095         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
5096         abs addresses.
5097
5098         * mini.h: Add missing bblock related prototypes.
5099
5100         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5101         reverse_inst_list_len fields.
5102
5103         * mini.c: Refactor this file a bit by moving branch optimizations to 
5104         branch-opts.c.
5105
5106         * method-to-ir.c: Merge generic sharing changes missed earlier.
5107
5108         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5109
5110         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5111         shared patches. Process METHODCONST as a shared patch.
5112
5113         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5114         as it crashes on the 2.0 mscorlib.
5115
5116         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5117         to cause crashes.
5118         
5119         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5120         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5121         by IMT.
5122
5123         * aot-compiler.c: Reorganize the got handling code to be a bit more
5124         understandable.
5125
5126 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5127
5128         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5129         mono_patch_info_equals/hash, and use it to massively simplify
5130         get_plt_index ().
5131
5132         * mini.c (mono_patch_info_hash): Simplify this and add support for
5133         more patch types.
5134
5135         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5136
5137         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5138         handling code, since an offset is not enough to identify a trampoline.
5139
5140         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5141
5142 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5143
5144         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5145
5146         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5147
5148         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5149
5150         * decompose.c: PPC decompositions for various ops.
5151
5152         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5153
5154 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5157         call the generic trampoline code using a call, instead of a jump, to
5158         remove some special casing from the generic trampoline code.
5159
5160         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5161         (mono_codegen): Ditto.
5162
5163         * aot-compiler.c aot-runtime.c: Ditto.
5164
5165         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5166
5167         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5168         helper function to find the offset corresponding to a lazy fetch trampoline.
5169
5170         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5171         when doing generic sharing.
5172
5173         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5174         places.
5175         
5176         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5177         mini-trampolines.c to be with the other trampoline creation functions.
5178
5179         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5180         as it is equal to method->signature in most cases, add a 
5181         mono_emit_method_call_full variant which takes a signature and an imt
5182         argument as well.
5183
5184 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5185
5186         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5187         to this function, since it could be computed easily from the method 
5188         argument.
5189         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5190         more.
5191
5192         * method-to-ir.c mini.c: Remove references to 
5193         compile_generic_method_wo_context.
5194
5195         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5196         generic method calls.
5197         
5198         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5199         dimensional non-szarrays.
5200
5201         * mini.c (mini_init): Register mono_array_new_1.
5202
5203         * jit-icalls.c (mono_array_new_1): New jit icall.
5204
5205         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5206         pointing to the method.
5207
5208         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5209         method addresses belonging to METHOD_JUMP patches in the 
5210         jump_target_got_slot_hash.
5211         (mono_aot_load_method): Ditto.
5212
5213         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5214         METHOD_JUMP patches.
5215
5216         * mini.c (mini_create_jit_domain_info): New helper function which 
5217         initializes/frees domain->runtime_info.
5218         (mini_free_jit_domain_info): Ditto.
5219         (mini_init): Install the domain hook functions with the runtime.
5220
5221         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5222         information maintained by the JIT.
5223
5224         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5225         insertion into jump_table_hash into mono_codegen (), also implement proper
5226         locking.
5227
5228         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5229         tail calls, it is already done by the aot code.
5230         
5231         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5232         mechanism on amd64.
5233
5234         * iltests.il.in: Make the jmp test a bit more complex.
5235
5236         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5237         generic instances which doesn't have a token.
5238
5239         * aot-runtime.c (decode_method_ref): Ditto.
5240         
5241         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5242         can handle this case now.
5243         (handle_box): Ditto.
5244
5245 2008-08-15  Geoff Norton  <gnorton@novell.com>
5246
5247         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5248         debugging check.
5249
5250 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5251
5252         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5253         calling generic methods.
5254
5255         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5256
5257         * aot-runtime.c (decode_patch_info): Ditto.
5258
5259         * mini.c (mono_resolve_patch_target): Ditto.
5260         
5261         * patch-info.h: Add METHOD_RGCTX.
5262
5263         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5264
5265 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5266
5267         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5268         arguments in registers.
5269
5270         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5271         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5272
5273         * mini.c (mini_method_compile): Abort aot compilation for generic
5274         methods if generic sharing is disabled.
5275         
5276         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5277         an mrgctx.
5278
5279         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5280         requiring an mrgctx.
5281
5282         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5283         store instructions when converting a vcall to a normal call.
5284
5285         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5286         mono_arch_find_jit_info.
5287
5288 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5289
5290         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5291         avoid calling mono_method_full_name () for every method even if the
5292         env var is not set.
5293         (check_inline_caller_method_name_limit): Ditto.
5294
5295 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5296
5297         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5298         assemblies in one run.
5299
5300         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5301         skipped methods if it is not 0.
5302
5303         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5304
5305 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5306
5307         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5308           MONO_ARCH_HAVE_UNWIND_TABLE.
5309
5310         Contributed under MIT/X11 license.
5311
5312 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5313
5314         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5315           from default optimizaton list on Winx64.
5316
5317         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5318
5319         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5320           the LMF from the MonoJitTlsData structure.
5321
5322         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5323
5324         Contributed under MIT/X11 license.
5325
5326 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5327
5328         * mini.c (sigsegv_signal_handler): Fix the build.
5329
5330         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5331         assembly->aot_module.
5332
5333         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5334         hash table. This simplifies and speeds up a lot of code, and fixes support
5335         for .netmodules.
5336
5337         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5338         with the runtime.
5339
5340         * mini-exceptions.c: Ditto.
5341         
5342         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5343         'native_offset' argument, since these are computed in the 
5344         mono_find_jit_info () function.
5345
5346         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5347         is used by exceptions-ppc.c.
5348
5349         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5350         mono_arch_find_jit_info ().
5351         
5352         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5353         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5354         generic code in mini-exceptions.c.
5355
5356 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5359
5360         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5361         
5362         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5363         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5364         called while holding the loader lock. Fixes #415608.
5365         (mono_aot_get_method_from_token_inner): Ditto.
5366
5367 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5370         to reduce differences between this and the generic implementation in
5371         mini-exceptions.c.
5372         (ves_icall_get_frame_info): Ditto.
5373
5374         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5375
5376         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5377         longer neccesarry.
5378
5379         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5380         mono_arch_get_call_filter () and make it non-static, for consistency with the
5381         other architectures.
5382
5383 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5384
5385         * mini.c:
5386         * local-propagation.c:
5387         * mini-x86.c: Correct the name of arch defines.
5388
5389 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5390
5391         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5392         NO_EMULATE_LONG_SHIFT_OPS define.
5393
5394 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5395
5396         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5397         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5398
5399         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5400         MACH fixes. Merged from the 2.0 branch.
5401
5402         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5403
5404         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5405         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5406
5407         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5408
5409         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5410         mono_marshal_get_native_wrapper () signature changes.
5411
5412 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5413
5414         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5415         conversion bug under arm.
5416
5417 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5418
5419         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5420
5421         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5422         with overflow checking.
5423
5424 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5425
5426         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5427         to the genmdesc.pl file
5428
5429 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5430
5431         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5432         arg_array in the soft-float versions of the LOAD/STORE macros.
5433
5434         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5435         implementation.
5436
5437         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5438
5439 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5440
5441         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5442         a float HFA. Fixes #413621.
5443
5444 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5445
5446         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5447         frame_size to args_size. Fixes build.
5448
5449 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5450
5451         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5452         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5453
5454         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5455         the stack are not unaligned. Fixes #413247.
5456         
5457 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5458
5459         * mini.c: update jitted methods performance counters.
5460
5461 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5462
5463         * mini-exceptions.c: increase the exceptions thrown performance
5464         counter in mono_handle_exception ().
5465
5466 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5469         can work with netmodules.
5470
5471 2008-07-28  Geoff Norton  <gnorton@novell.com>
5472
5473         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5474         regression tests.
5475
5476 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5477
5478         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5479         correct place.
5480
5481 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5482
5483         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5484           The float param registers and other param registers must be the 
5485           same index on Windows x64.
5486
5487         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5488           ArgValuetypeAddrInIReg argument case.  Setting the argument
5489           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5490
5491         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5492           variable computed above as the copy length for arguments of storage
5493           type ArgValuetypeAddrInIReg.
5494
5495         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5496           ArgValuetypeAddrInIReg argument case.  This case will rely on
5497           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5498
5499         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5500           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5501           jump and tail call instructoins as they do not follow the typical call behavior.
5502
5503         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5504           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5505           local variable and pass the local variable by reference to the called method.
5506
5507         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5508           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5509           of a struct is passed in a register it must be saved with the other
5510           volatile argument on the stack.
5511
5512         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5513           frame pointer the stack adjustment value must be saved to the unwind 
5514           info structure.
5515
5516         Contributed under MIT/X11 license.
5517
5518 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5519
5520         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5521         which got lost in the merge.
5522
5523 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5526         build.
5527
5528         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5529         
5530         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5531         icalls, since they won't be patched.
5532
5533         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5534         different code sequence when running under valgrind to prevent some valgrind
5535         errors.
5536
5537         * iltests.il.in: Add new regression test.
5538
5539         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5540         end with a throw.
5541
5542         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5543         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5544
5545         * iltests.il.in: Add new test.
5546
5547         * aot-compiler.c: Fix some warnings.
5548
5549         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5550         Fixes #412494.
5551
5552 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5553
5554         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5555         (mini_usage_jitdeveloper): Add a missing --wapi option.
5556
5557 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * mini-codegen.c: Simplify the is_fp macros.
5560         (free_up_ireg): Remove, use free_up_reg instead.
5561         (free_up_reg): Fix the fp case.
5562
5563 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5564
5565         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5566         lowered earlier.
5567
5568         * exceptions-x86.c: Merge some changes which seemed to have got lost
5569         in the linear-ir merge.
5570
5571         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5572
5573         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5574         long vreg volatile even if the variable was already created.
5575
5576         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5577         volatile variables.
5578
5579 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5580
5581         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5582
5583         * mini.c (mono_jit_compile_method_inner): Add support for 
5584         MONO_EXCEPTION_BAD_IMAGE.
5585
5586         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5587         mini_method_get_context () returns NULL. Fixes #356531.
5588
5589         * mini.c (mono_method_to_ir): Ditto.
5590         
5591         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5592         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5593
5594 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5597         in the LDFTN implementation.
5598
5599 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5600
5601         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5602         code, patch calls to icalls, too, even if they're not in the
5603         shared generic code hash.  Fixes #411962.
5604
5605 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5606
5607         * cpu-x86.md: Increase the length of the fcall opcodes.
5608
5609         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5610         calls returning floats.
5611
5612         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5613         on NEWARR.
5614         
5615         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5616         missed earlier.
5617
5618         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5619         into the domain->method_code_hash.
5620
5621         * aot-compiler.c: Fix win32 build.
5622
5623         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5624         
5625         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5626         gshared NEWARR implementation.
5627
5628         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5629
5630         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5631         can be used outside of method_to_ir.
5632
5633         * mini.h (MonoCompile): Add arg_types field.
5634
5635         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5636         
5637         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5638         the values of the local arg_array and param_types array.
5639
5640 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5643         got accesses might only get generated later when NEWOBJ is decomposed.
5644         
5645         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5646         looking up the native code of the target method when a delegate is called
5647         for the first time.
5648
5649         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5650         optimization.
5651
5652         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5653
5654         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5655         AOT work on platforms without a working dlsym implementation.
5656
5657         * mini.h: Bump AOT image format version.
5658         
5659 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5660
5661         * mini-exceptions.c: Free a MonoType with
5662         mono_metadata_free_type() instead of g_free().
5663
5664         * aot-runtime.c: Free a MonoType.
5665
5666 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5667
5668         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5669         optimization.
5670
5671         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5672         fp stack on x86.
5673
5674 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5675         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5676         profiler hook.
5677
5678 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5679
5680         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5681         NEWOBJ calls on valuetypes.
5682
5683         * iltests.il.in: Add new test.
5684
5685         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5686
5687 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5688
5689         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5690         is no longer needed.
5691
5692         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5693         non register sized integer arguments.
5694         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5695         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5696         emit_memcpy2 ().
5697
5698         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5699         CEE_MONO_RETOBJ.
5700         
5701         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5702         two a binop with different sized arguments is emitted.
5703
5704         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5705         instruction in the ins==NULL case.
5706
5707 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5708
5709         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5710
5711         * mini-x86.c: Fix osx build.
5712
5713         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5714         opcodes as well.
5715
5716         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5717         instruction for non int sized variables.
5718
5719         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5720         implementation.
5721
5722 2008-07-23  Robert Jordan  <robertj@gmx.net>
5723
5724         * method-to-ir.c: Fix MSVC build.
5725
5726 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5729         a non int sized type, widen it to an int since newer versions of gcc seem to
5730         generate code which needs this.
5731
5732         * ssa2.c abcremoval2.c: Fix warnings.
5733
5734         * *: Merge the Linear IR branch.
5735
5736         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5737         the ChangeLog file there describes all the changes done over the years. 
5738         Further documentation can be found at www.mono-project.com/Linear_IL.
5739
5740 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5741
5742         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5743           The float param registers and other param registers must be the 
5744           same index on Windows x64.
5745
5746         Contributed under MIT/X11 license.
5747
5748 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
5749
5750         * mini.c: Make the previous fix GC safe.
5751
5752 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
5753
5754         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
5755
5756 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5757
5758         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
5759           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
5760           ArgValuetypeAddrInIReg instead.
5761
5762         Contributed under MIT/X11 license.
5763
5764 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
5765
5766         * mini-codegen.c (get_register_spilling): Fix a warning.
5767
5768 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
5769
5770         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
5771         for types which the initialization fails. Raises the provided exception
5772         at the right stop after cleanup.
5773
5774 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
5775
5776         * aot-compiler.c: Free most of the memory allocated during compilation.
5777
5778         * mini.c (mini_parse_debug_options): Fix a leak.
5779         
5780         * mini.c (mini_method_compile): Don't add the method to the jit info tables
5781         during aot compilation.
5782
5783 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
5786         it has too much register pressure.
5787
5788 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5789
5790         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
5791
5792 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5793
5794         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5795         on x86.
5796
5797         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5798         on amd64 similar to the way it is done on arm.
5799
5800         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5801
5802         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
5803         consistency, normalize error messages, avoid loading aot-only modules in
5804         normal mode.
5805
5806         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
5807         for consistency.
5808
5809         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
5810
5811 2008-07-11  Martin Baulig  <martin@ximian.com>
5812
5813         * debug-debugger.h
5814         (MonoDebuggerInfo): Add `interruption_request'.
5815
5816 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5817
5818         * aot-compiler.c (emit_plt): Remove some dead code.
5819
5820         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
5821
5822         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
5823         return the plt info offset belonging to a given plt entry.
5824
5825         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
5826         mono_aot_get_plt_info_offset.
5827         
5828         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
5829         similar to the amd64 code by makeing jumps through a separate jump table 
5830         instead of embedding the jump addresses into the code.
5831
5832 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
5835         method.
5836
5837 2008-07-10  Martin Baulig  <martin@ximian.com>
5838
5839         * mini.c (mini_method_compile): Disable generics sharing when
5840         running in the debugger.
5841
5842 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5843
5844         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
5845
5846         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
5847         the local register allocator from running out of registers on x86 when 
5848         using aot.
5849
5850 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
5851
5852         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
5853         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
5854         C4146.
5855
5856         Contributed under MIT/X11 license.
5857
5858 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
5861         speed up the assembler.
5862
5863 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
5866         support.
5867
5868         * mini.c: Move the soft float handling macros a bit earlier, add 
5869         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
5870         place.
5871
5872         * mini.h: Add prototype for mono_arch_fixup_jinfo.
5873
5874         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
5875         read-only to help catch code allocation requests.
5876         
5877         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
5878         and turn it off when using --aot-only or when compiling with --aot=full.
5879
5880         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
5881         jump table for switches from the normal domain mempool, not the code
5882         manager.
5883
5884         * mini-trampolines.c (get_unbox_trampoline): New function to return an
5885         unbox trampoline which handles aot-only mode too.
5886
5887         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
5888         an AOTed unbox trampoline.
5889
5890         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
5891
5892 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5893
5894         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
5895         ""
5896
5897         Contributed under MIT/X11 license.
5898
5899 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5900
5901         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
5902           the unwind information for the method at the end of the allocated block.
5903           
5904         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
5905           MonoCompileArch to hold the unwind info for SEH on Winx64
5906         
5907         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
5908           frame pointer info for the method being compiled.
5909           
5910         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
5911           the call to mono_exception_from_token.
5912           
5913         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
5914           storing the method prolog information in a format that the Winx64 SEH can understand.  This
5915           information is stored a the end of the method block because it is all 32-bit offset based.
5916
5917         Contributed under MIT/X11 license.
5918
5919 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5920
5921         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
5922
5923         * wapihandles.c: Fix warnings.
5924
5925         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
5926         mode.
5927
5928         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
5929         mono_jit_compile_method in aot-only mode since that calls the type 
5930         initializer.
5931         
5932         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
5933         get_delegate_invoke_impl in aot-only mode.
5934
5935         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
5936
5937 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
5938
5939         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
5940
5941         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
5942         is on by default.
5943
5944         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
5945
5946         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
5947         init trampoline from the AOT file as well.
5948
5949         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
5950         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
5951         code.
5952
5953         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
5954         mono_init.
5955
5956         * exceptions-amd64.c: Add _full variants for the remaining exception code
5957         creation functions as well, allow emission of relocatable code, remove
5958         caching since that is now done by the caller.
5959
5960         * mini-exceptions.c: Add _full variants for the remaining exception code
5961         creation functions as well, add aot-only support.
5962
5963         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
5964         if we can determine a proper token for them.
5965         (add_wrappers): Add a few more wrappers.
5966         (emit_method_code): Remove some dead code.
5967         (emit_trampolines): Emit exception code too.
5968
5969         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
5970
5971         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
5972         mono_array_new_va which avoids varargs.
5973
5974         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
5975
5976         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
5977         mono_arch_create_specific_trampoline () in all places.
5978
5979         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
5980         a bit so it can be used for other things as well.
5981         
5982         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
5983         on demand as well.
5984
5985         * exceptions-amd64.c: Rename the caching from the exception code creation
5986         functions, it is done by the caller instead.
5987         
5988         * exceptions-amd64.c: Change the signature of the exception code creation 
5989         functions to allow the creation of relocatable code later.
5990
5991         * mini-exceptions.c: Add a set of functions to query the various 
5992         runtime-generated exception functions.
5993
5994         * mini.c mini-exceptions.c: Use the newly added functions instead of the
5995         mono_arch_.. () functions.
5996         
5997 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5998
5999         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
6000
6001         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
6002
6003         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
6004         (mini_get_vtable_trampoline): Ditto.
6005
6006         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
6007         code in the AOT case by returning the code size and a list of relocations to
6008         the caller.
6009
6010         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
6011
6012 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6013
6014         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
6015           clean the stack.
6016
6017         Contributed under MIT/X11 license.
6018
6019 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
6022         so the buffer size can be computed correctly. Fixes #404735.
6023
6024         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
6025         normally as cfg->debug_info is already freed.
6026
6027 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * mini-amd64.c: For calls returning vtypes in registers, don't store
6030         the return address on the stack, instead allocate a separate local for
6031         it. Fixes #404729.
6032
6033 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6034
6035         * mini-trampolines.c, mini.h: Add an argument to
6036         mono_create_jit_trampoline_in_domain() for turning off the adding
6037         of the sync wrapper.
6038
6039         * mini.c: Use the JIT trampoline without sync instead of
6040         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6041         be patched.
6042
6043 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6044
6045         * driver.c: Turn on GSHARED optimization by default.
6046
6047 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6050         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6051
6052         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6053         create a variant of the generic trampoline code callable from AOTed trampolines.
6054
6055         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6056         trampoline code callable from AOTed trampolines.
6057
6058         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6059
6060 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6061
6062         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6063         pass-through manner.
6064
6065         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6066         and don't fail sharing for them anymore.
6067
6068         * mini-exceptions.c: Handle exceptions in shared generic methods.
6069
6070         * generic-sharing.c: When checking the context of a generic
6071         method, also check its class's context.  Don't treat wrappers as
6072         sharable.
6073
6074         * mini-trampolines.c: Some code factored out to
6075         metadata/generic-sharing.c.  Handle the MRGCTX case.
6076
6077         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6078         we must deal with the method being of another instantiation of the
6079         class.  Add static rgctx invoke wrappers to generic methods.
6080
6081 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6082
6083         * mini.c: Provide all jit infos of generic shared methods with a
6084         generic jit info.
6085
6086         * mini-exceptions.c: Handle the new situation that a generic info
6087         might be available, but not info about the this/vtable/mrgctx
6088         variable.
6089
6090 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6091
6092         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
6093         generic methods.
6094
6095 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
6096
6097         * dominators.c (check_dominance_frontier): Fix a warning.
6098
6099         * mini.h: Add some missing prototypes.
6100
6101         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6102
6103         * driver.c (mono_jit_init_version): Correct the comments since the first
6104         argument should be the name of the root domain, not a filename.
6105
6106         * aot-runtime.c (make_writable): Error out if this is called while running
6107         with --aot-only.
6108         (load_aot_module): Ditto.
6109
6110         * aot-compiler.c: Really fix the computation of method indexes.
6111
6112         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6113         optimizations as this is no longer called frequently.
6114
6115         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6116         method and the invoke impl code and pass it to the delegate trampoline instead of
6117         just the delegate class.
6118
6119 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6120
6121         * aot-compiler.c: Fixup the computation of method indexes.
6122         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6123         the method builder infrastructure.
6124
6125         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6126         has no header.
6127
6128         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6129         mode, load the method right away instead of creating a trampoline.
6130
6131         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6132
6133         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6134         some checks a bit.
6135
6136 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6139         (mono_aot_load_method): Use method_index instead of method->token.
6140
6141         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6142         can handle icalls etc. properly.
6143
6144         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6145
6146         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6147
6148         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6149         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6150         JIT_ICALL_ADDR patch type.
6151
6152         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6153
6154         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6155         request flag.
6156         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6157
6158         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6159
6160 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6163         domain->jit_code_hash.
6164
6165 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6166
6167         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6168
6169 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6170
6171         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6172         get_this_arg_from_call, let it compute it when needed.
6173
6174         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6175         gsctx from code only when needed.
6176
6177         * mini-trampolines.c (get_generic_context): Rename this to 
6178         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6179         it can be called by the arch backends.
6180
6181         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6182
6183 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * driver.c (mono_main): Add experimental --aot-only command line option.
6186
6187         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6188         set.
6189
6190 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
6191
6192         * driver.c (DllMain): Remove mono_module_handle.
6193
6194         Contributed under MIT/X11 license.
6195
6196 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6197
6198         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6199         for emitting methods which are not in the source assembly. Detect and report
6200         failure of assembling+linking.
6201         
6202         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6203
6204         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6205
6206 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6207
6208         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6209
6210 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * mini.h: Remove some obsolete prototypes.
6213
6214         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6215
6216 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6217
6218         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6219         supported by Visual Studio, so use alloca().
6220
6221 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6222
6223         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6224         Fixes #402585.
6225
6226 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6227
6228         * mini.c: Fail sharing of a generic method if it contains an open
6229         catch clause (because we don't pass MRGCTXs yet).
6230
6231 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6232
6233         * mini.c: When compiling a method with generic sharing, insert the
6234         method instantiated with an all-Object generic context into the
6235         jit info table, instead of the context of the first instantiation
6236         of the method we happen to compile.
6237
6238 2008-06-18  Martin Baulig  <martin@ximian.com>
6239
6240         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6241         `major_version' and `minor_version'.
6242
6243 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6244
6245         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6246         mono_method_is_generic_sharable_impl() takes an additional
6247         argument specifying whether to treat type variables as reference
6248         types.
6249
6250 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6251
6252         * mini.h: Removed obsolete prototypes.
6253
6254 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6255
6256         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6257         already handle them.
6258
6259 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6260
6261         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6262         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6263         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6264         tramp-x86.c: Added a MonoGenericContext* argument to
6265         mono_arch_get_unbox_trampoline() so that it can call other
6266         functions which require it.
6267
6268 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6269
6270         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6271         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6272         mono_arch_get_this_arg_from_call() takes a
6273         MonoGenericSharingContext* as well.
6274
6275 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6276
6277         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6278         implement generic sharing of unbox.
6279
6280 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6281
6282         * mini.c: Don't compute the vtable to determine whether a field is
6283         special static, because it might not work for open types.
6284
6285 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6286
6287         * mini.c: Removed the unused token_type and token_source arguments
6288         from get_runtime_generic_context_ptr().
6289
6290 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6291
6292         * mini.c (ADD_BINOP): fix the build
6293
6294 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6295
6296         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6297         a widening op.
6298
6299 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6300
6301         * mini.h: Removed class relations enum that's not used anymore.
6302
6303 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6304
6305         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6306
6307         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6308         the lazy fetch trampoline access code.
6309
6310 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6311
6312         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6313
6314 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6315
6316         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6317
6318         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6319
6320         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6321
6322 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6323
6324         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6325         intrinsics.
6326
6327         * mini-ops.h: Add MIN/MAX_UN opcodes.
6328
6329         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6330         intrinsics.
6331
6332         * basic-math.cs: Add more min/max tests.
6333
6334         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6335
6336 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6337
6338         * mini.c: Small fix in the prologue of emit_castclass.
6339
6340 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6341
6342         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6343
6344         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6345         do not work even for unsigned types. Fixes #400014.
6346
6347         * basic-math.cs: Add regression tests for unsigned Min/Max.
6348
6349 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6350
6351         * mini.c: Added additional context_used argument to several
6352         functions, which will be needed for sharing generic methods.  Use
6353         GET_RGCTX macro wherever appropriate.  Declare only one
6354         context_used in mono_method_to_ir().
6355
6356 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6357
6358         * mini.c, generic-sharing.c: Removed generic class relations.
6359
6360         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6361         functions due to MRGCTX changes.
6362
6363 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6364
6365         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6366         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6367         with calculated IMT.
6368
6369         * mini.c: Generic sharing of calls via generic interfaces.
6370
6371         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6372         generic method with non-constant MonoGenericContext*.  Instead,
6373         the context is taken out of the method itself.
6374
6375 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6376
6377         * mini.c: Generic sharing of ldvirtftn.
6378
6379 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6380
6381         * mini.c: Generic sharing of ldftn.
6382
6383 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6384
6385         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6386
6387 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6388
6389         * mini.c: Generic sharing of the special case of ldtoken followed
6390         by a call to GetTypeFromHandle.
6391
6392 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6393
6394         * mini.c: Generic sharing of box for nullable types.
6395
6396 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6397
6398         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6399         are passed on the stack. Fixes #324807.
6400
6401 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6402
6403         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6404         for the ArgValuetypeAddrInIReg case.
6405
6406         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6407         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6408
6409         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6410         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6411         local variable and pass the local variable by reference to the called method.
6412           
6413         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6414         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6415
6416         Contributed under MIT/X11 license.
6417
6418 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6419
6420         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6421
6422         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6423         everything.
6424
6425 2008-06-10  Martin Baulig  <martin@ximian.com>
6426
6427         * debug-mini.c
6428         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6429
6430 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
6431
6432         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6433         possible error when no arguments are passed.
6434
6435         Contributed under MIT/X11 license.
6436
6437 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6438
6439         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6440         where the file name is NULL.
6441
6442 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * mini.c: Fix s390 build.
6445
6446 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6447
6448         * trace.c (mono_trace_parse_options): Fix warnings.
6449
6450         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6451
6452 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6453
6454         * mini.c (remove_block_if_useless): Avoid printing the method name.
6455         
6456         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6457         MONO_INST_NEW.
6458
6459         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6460         LMF. Not yet used.
6461
6462         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6463         translated code after it has been patched.
6464
6465 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6466
6467         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6468         avoid problems during code patching on SMP systems.
6469         (emit_call): Avoid adding a patch info which is already added by 
6470         emit_call_body.
6471         (mono_arch_emit_exceptions): Ditto.
6472
6473 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6476         MONO_TYPE_ISSTRUCT already checks for it.
6477
6478 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6479
6480         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6481           structs with floats on Winx64 the float registers are not used.  
6482           The integer registers are always used..
6483         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6484           only one register will be used and only if the size of the struct 
6485           is 1,2,4, or 8 bytes.
6486
6487         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6488           to work for Winx64.
6489
6490         Contributed under MIT/X11 license.
6491
6492 2008-06-05  Martin Baulig  <martin@ximian.com>
6493
6494         * debug-debugger.c (debugger_lookup_class): Also call
6495         mono_class_setup_methods() here; we're only called from RTI.
6496
6497 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6498
6499         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6500         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6501         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6502         Post-process object files and add dtrace-generated object, if necessary.
6503
6504         Contributed under MIT/X11 license.
6505
6506 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6507
6508         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6509         element class.
6510
6511         * mini.c: Generic sharing for unbox.any and castclass.
6512
6513 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6514
6515         * mini.c: Ignore tailcall prefix in shared generic code and when
6516         doing calls which require a vtable/rgctx argument.
6517
6518 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6519
6520         * mini.c: Don't free the JIT info.
6521
6522         * driver.c: Changes in the JIT info table testing code.
6523
6524 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6525
6526         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6527         interruption. Fix some warnings.
6528
6529         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6530         interruption_checkpoint.
6531
6532 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6533
6534         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6535         from embedding applications.
6536
6537 2008-06-02  William Holmes  <billholmes54@gmail.com>
6538
6539         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6540           reserving 32 bytes on the stack when making calls. 
6541
6542         Contributed under MIT/X11 license.
6543
6544 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6545
6546         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6547         the linear IL branch.
6548
6549         * driver.c: Print out more information for --version on arm.
6550
6551 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6552
6553         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6554         bb_exit instead, since out of line bblocks might not actually be emitted
6555         out-of-line.
6556         
6557         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6558         maximum epilog size for out of line bblocks if tracing is enabled.
6559
6560         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6561
6562 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6563
6564         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6565
6566 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6567
6568         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6569         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6570         opcodes.
6571
6572 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6573
6574         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6575         the 'value' to store is a constant.
6576
6577         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6578
6579         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6580         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6581
6582 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6583
6584         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6585         for accessing method->generic_container.
6586
6587 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6588
6589         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6590         
6591         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6592
6593         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6594
6595         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6596         fails.
6597
6598 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6599
6600         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6601
6602         * mini.c: Handle the case when mono_class_vtable () fails.
6603
6604 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6605         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6606         the stat profiler.
6607
6608 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6609
6610         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6611         together with domain sharing.
6612
6613 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6614
6615         * mini.c: Treat callvirts to final methods like non-virtual calls
6616         when doing generic sharing, i.e. look them up in the runtime
6617         generic context.
6618
6619 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6620
6621         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6622         with computed types (for generic sharing).
6623
6624         * mini.c: Generic sharing for mkrefany and refanyval.
6625
6626 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6627
6628         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6629         possible.
6630
6631         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6632         the generic sharing code.
6633         
6634         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6635         when needed.
6636
6637 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6640
6641 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6642
6643         * driver.c: updated copyright date
6644
6645 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6646
6647         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6648         needed.
6649
6650 2008-05-19  Martin Baulig  <martin@ximian.com>
6651
6652         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6653         pointing to the new `_mono_debug_using_mono_debugger' variable.
6654
6655         * driver.c
6656         (mono_main): Check mono_debug_using_mono_debugger() rather than
6657         the `MONO_INSIDE_MDB' environment variable to check whether we're
6658         inside the debugger.
6659
6660 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6661
6662         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6663         argument.
6664
6665 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6666
6667         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6668
6669         * mini.c: Added mini_assembly_can_skip_verification. This
6670         function checks if the assembly requested to skip verification. 
6671         Fixes part of #387274.
6672
6673 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6674
6675         * mini.c (mini_get_method): Disable the check for open generic classes when
6676         using generic sharing.
6677
6678         * generics.cs: Add a test for #387034.
6679
6680         * mini.c (mini_get_method): Check whenever the method class is an open generic
6681         type, and return NULL in that case, causing a verification error. Fixes
6682         #384123.
6683
6684 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6685
6686         * driver.c (mono_main): Revert r102623. The right
6687         thing to do is to enable the verifier under verifiable
6688         unless a --security flag was passed.
6689
6690         We need this non-trivial behavior for --verify-all otherwise
6691         mcs-compileall won't be able to use it. As it needs everything to
6692         be verified under validil.
6693
6694 2008-05-06  Martin Baulig  <martin@ximian.com>
6695
6696         Fix #383749.
6697
6698         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6699         (mono_debugger_thread_cleanup): Likewise.
6700         (mono_debugger_extended_notification): Likewise.
6701
6702 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6703
6704         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6705         against both inflated and non-inflated methods. We need to check against the
6706         generic definition for cases where the instantiated method is not visible.
6707         We need to check against the inflated types for cases where the instantiation
6708         changes any super type. This fixes #382986.
6709
6710         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6711         that check for visibiliy as generic params only appears as the type subject
6712         of tokens on call opcodes. Field manipulation and ldftn must always
6713         target an exact type.
6714
6715 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6716
6717         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6718         if no related --security flag is passed.
6719
6720 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6721
6722         * mini-arch.h: Prepare support for ppc64.
6723
6724         Contributed under MIT/X11 license.
6725
6726 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6727
6728         * aot-runtime.c: Prepare support for ppc64.
6729
6730         Contributed under MIT/X11 license.
6731
6732 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6733
6734         * mini-ops.h: Prepare support for ppc64.
6735
6736         Contributed under MIT/X11 license.
6737
6738 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
6739
6740         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6741
6742         Contributed under MIT/X11 license.
6743
6744 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
6745
6746         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
6747         assemblies, since aot_name is not a full path, causing us to load MS.NET 
6748         assemblies on windows.
6749
6750 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6751
6752         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
6753         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
6754         * main.c: Use UTF-8 encoded command line instead of Windows default code
6755         page on Windows to support Unicode.
6756         * driver.c (DllMain): New function for mixed-mode assembly support.
6757         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
6758         export __stdcall functions without decoration.
6759
6760         Contributed under MIT/X11 license.
6761
6762 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6763
6764         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
6765         saving it very early.
6766
6767 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6768
6769         * mini.h, mini.c: Lots of code for accessing the old RGCTX
6770         deleted.  The only way to access the new RGCTX is via the
6771         trampline.
6772
6773         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
6774         vtable instead of the RGCTX to static methods.
6775
6776         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
6777         accessing the new RGCTX.
6778
6779         * generic-sharing.c: There is no separation between self, type
6780         arguments and other types in the RGCTX anymore.
6781
6782 2008-04-25  Jonathan Chambers <joncham@gmail.com>
6783
6784         * mini-amd64.c (add_general): Remove previous stack adjustment.
6785         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
6786         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
6787         for 32 bytes of stack space reserved for all calls.
6788         
6789         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
6790         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
6791         adjustment.
6792         
6793         Code contributed under MIT/X11 license.
6794
6795 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
6796
6797         * mini.c (mini_method_verify): Only verify non-inflated methods, check
6798         against the root definition, peeling out method and type instantiations.
6799         Cache verify success results, code that fails verification is still
6800         checked multiple times.
6801
6802 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6803
6804         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
6805
6806 2008-04-23  Jonathan Chambers <joncham@gmail.com>
6807
6808         * mini-amd64.c (add_general): Always increment stack on Win64.
6809         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
6810         on Win64.
6811         
6812         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
6813         stack based argument handling on Win64.
6814         
6815         Code contributed under MIT/X11 license.
6816
6817 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
6818
6819         * Makefile.am (version.h): Add support for git-svn.
6820
6821 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
6824         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
6825         avoiding allocations and libc functions which might deadlock.
6826         
6827         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
6828         'no-gdb-backtrace' option is set.
6829
6830         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
6831
6832         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
6833
6834 2008-04-21  Martin Baulig  <martin@ximian.com>
6835
6836         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
6837         and `get_lmf_addr'; `notification_address' is no longer a pointer.
6838
6839 2008-04-21  Martin Baulig  <martin@ximian.com>
6840
6841         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
6842         `thread_vtable', `event_handler_ptr' and `event_handler'.
6843
6844 2008-04-21  Martin Baulig  <martin@ximian.com>
6845
6846         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
6847         allows delayed initialization of the `executable_code_buffer' when
6848         attaching.
6849
6850 2008-04-21  Martin Baulig  <martin@ximian.com>
6851
6852         * mini.h (mono_debugger_create_notification_function): Removed.
6853         * tramp-*.c (mono_debugger_create_notification_function): Removed.
6854
6855         * mdb-debug-info64.s
6856         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6857
6858         * mdb-debug-info32.s
6859         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6860
6861         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
6862         currently only works on x86 and x86_64, so don't create it on ppc.
6863
6864 2008-04-21  Martin Baulig  <martin@ximian.com>
6865
6866         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
6867
6868         * mini.c
6869         (mini_method_compile): In the fp elimination check, check
6870         `debug_options.mdb_optimizations' in addition to
6871         mono_debug_using_mono_debugger().       
6872
6873         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
6874         disable some JIT optimizations which are only disabled when
6875         running inside the debugger.
6876         Added `--help-debug' option to describe the debugging options.
6877         (parse_debug_options): New static function to parse the `--debug'
6878         options, so we can easily add more stuff in future.
6879
6880 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
6881
6882         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
6883         the method has no body.
6884
6885 2008-04-19  Jonathan Chambers <joncham@gmail.com>
6886
6887         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
6888         assembly is not allowed in MSVC 64-bit compiler. 
6889         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
6890         as we get floating point exceptions everywhere.
6891         
6892         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
6893         correctly align arguments for call to throw_exception.
6894         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
6895         
6896         Code contributed under MIT/X11 license.
6897
6898 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
6899
6900         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
6901
6902 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
6903
6904         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
6905
6906         * mini-amd64.c (NEW_INS): Set cil_code.
6907
6908         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
6909         from mini-amd64.c so all debugger related logic is in one place.
6910
6911         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
6912         later won't have a random ip assigned to them.
6913
6914 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
6915
6916         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
6917         the arch specific function initializes code_size.
6918         (mono_create_delegate_trampoline): Ditto.
6919
6920         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
6921         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
6922         platforms.
6923
6924         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
6925         running under the debugger.
6926
6927         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
6928         debugger.
6929
6930         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
6931         debugger. Also move the disabling of optimizations here from driver.c.
6932         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
6933         debugger.
6934
6935         * mini.h (MonoCompile): Add a few new flags.
6936
6937 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
6940         so the cil_code field of created MonoInst's is properly set.
6941         (mini_select_instructions): Ditto.
6942
6943         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
6944         (MONO_INST_NEW_CALL): Ditto.
6945
6946         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
6947         in many places so the ins->cil_code field is properly initialized.
6948
6949         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
6950         place.
6951
6952 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6953
6954         * mini.c (mini_method_compile): Print a different message when compiling a 
6955         shared method.
6956         
6957         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
6958         > 1.
6959
6960 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6961
6962         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
6963         SSE2 instructions.
6964
6965         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
6966         
6967 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6968
6969         * mini.c (handle_stack_args): Make this return void since its return value was
6970         never used. Also set cfg->unverifiable for invalid IL instead of calling
6971         G_BREAKPOINT ().
6972
6973 2008-04-10  Mark Probst  <mark.probst@gmail.com>
6974
6975         * mini.c: Make sure "this" is live in catch clauses with type
6976         variables in shared generic code.
6977
6978 2008-04-08  Mark Probst  <mark.probst@gmail.com>
6979
6980         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
6981         generic_class_is_reference_type() to ensure the proper behaviour
6982         when sharing generic code and the type in question is a type
6983         argument.
6984
6985 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6986
6987         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
6988         race conditions when printing thread dumps. Fixes #377738.
6989
6990 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
6991         
6992         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
6993         shows up when both MonoInst arguments can cause aliasig.
6994         There is likely no way in the current JIT to trigger this problem, but
6995         it showed up in the development of generics sharing, when in a new
6996         opcode both args of an OP_GROUP can be aliases (addresses of a local).
6997         When the generics sharing code will be committed, its tests will be
6998         valid also for this bug.
6999
7000 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7001
7002         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
7003         PATCH_INFO_METHOD.
7004
7005         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
7006         NULL.
7007
7008 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
7009
7010         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
7011         use a more detailed exception message for InvalidCastException.
7012
7013         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
7014
7015         * driver.c (mono_main): Add --debug=casts option to turn on better 
7016         InvalidCastException message details.
7017
7018         * mini.c (mini_get_debug_options): New helper function to return the address of
7019         the debug_options variable.
7020
7021         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
7022         the jit_tls TLS variable.
7023
7024         * mini.c (mono_jit_tls): New TLS variable.
7025
7026         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
7027         option is used.
7028
7029 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
7030
7031         * mini.h: Removed verifer related stuff. This code was moved to verify.c
7032
7033         * mini.c: Removed verifer related stuff, code moved to verify.c.
7034
7035         * driver.c: Using code from verify.c instead of mini.c.
7036
7037 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7038
7039         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7040         longer valid.
7041
7042 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7043
7044         * mini.c (check_for_method_verify): Enabling verification of
7045         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7046         have been fixed.
7047
7048 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7049
7050         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7051         caller saved registers as well.
7052         
7053         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7054         saved registers as well.
7055
7056 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7059
7060         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7061         code.
7062
7063 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7064
7065         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7066         to get_call_info.
7067         (get_call_info): Take a gsctx argument instead of 'cfg'.
7068
7069 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7070
7071         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7072         mono_verify_all is set.
7073
7074         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7075
7076         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7077
7078 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7079
7080         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
7081         an exception.
7082
7083         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7084         verifier and the code generated by the compiler.
7085
7086 2008-03-25  Mark Probst  <mark.probst@gmail.com>
7087
7088         * mini.c: Generic sharing of the non-nullable case of the box
7089         instruction.
7090
7091 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
7092
7093         * inssel.brg: Fix the build.
7094
7095         * iltests.il.in: Add a test for lconv.ovf.u8.un.
7096
7097 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
7098
7099         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7100         Array:Address. Fixes #372410.
7101
7102         * iltests.il.in: New tests for readonly prefix.
7103
7104 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7105
7106         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7107         mini-trampolines.c.
7108
7109         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7110         mini-exceptions.c.
7111
7112         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7113         
7114         * mini.c (mono_decompose_op_imm): New helper function.
7115
7116         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
7117         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7118         return value.
7119
7120         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7121         mono_arch_output_basic_block. Fix warnings.
7122
7123         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7124         for now.
7125
7126 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7127
7128         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7129         since the extra frame is now detected automatically inside the loop.
7130
7131         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7132         opts which are now in mono_peephole_ins ().
7133         
7134         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7135
7136         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7137         frames and skip duplicate managed-to-native frames. Fixes #367665.
7138
7139         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7140         opts which are now in mono_peephole_ins ().
7141         (mono_arch_peephole_pass_2): Ditto.
7142
7143         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7144
7145         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7146         arch independent peephole optimizations.
7147
7148         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7149         opts which are now in mono_peephole_ins ().
7150
7151         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7152         
7153         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7154
7155         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7156         pattern.
7157
7158         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7159         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7160         opcode. 
7161
7162 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7163
7164         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7165         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7166         return value.
7167
7168         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7169         mono_arch_output_basic_block. Fix warnings.
7170
7171 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7174         conv.ovf.u.un.
7175
7176 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7177
7178         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7179         conv.ovf.u.un.
7180
7181         * iltests.il: Add new tests.
7182
7183 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
7184
7185         * mini.c: Removed Windows version macros.
7186
7187 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7188
7189         * generic-sharing.c: Put reflection types in the extensible part
7190         of the runtime generic context.
7191
7192         * mini.c: Generic sharing of the GetTypeHandle special case of the
7193         ldtoken instruction.
7194
7195 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7196
7197         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7198
7199         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7200         
7201         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7202         consistency with the other version on the linear IR branch.
7203
7204         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7205
7206         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7207
7208         * iltests.il.in: Add new tests.
7209
7210 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7211
7212         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7213
7214         * iltests.il.in: Add new tests.
7215
7216 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7217
7218         * mini.c: Two variables with the same name were declared in
7219         nesting contexts and one wasn't initialized.  Fixed.
7220
7221 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7222
7223         * mini.c: Generic sharing of the initobj instruction.
7224
7225 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7226
7227         * mini.c: make the test to optimize ldtoken from typeof() more
7228         precise.
7229
7230 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7231
7232         * mini.c: Generic sharing of the initobj instruction for reference
7233         types.
7234
7235 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7236
7237         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7238         the mono_breakpoint_clean_code() code to perform bound checks.
7239
7240 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7241
7242         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7243         mono_arch_patch_callsite() to include the start of the managed method
7244         to be able to perform bound checks.
7245
7246 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7247
7248         * mini.c: Generic sharing for the isinst instruction.
7249
7250 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7251
7252         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7253         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7254         with the runtime generic context argument.
7255
7256         * mini.c: Share calls to several types of unsharable methods by
7257         putting the address of the method code in the runtime generic
7258         context and doing an indirect call.
7259
7260         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7261         to switches.
7262
7263 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7264
7265         * generic-sharing.c: Change due to a change in the runtime genric
7266         context API.
7267
7268 2008-03-15  Martin Baulig  <martin@ximian.com>
7269
7270         * tramp-x86.c
7271         (mono_arch_nullify_class_init_trampoline): Add call to
7272         mono_breakpoint_clean_code() to make things work when running
7273         inside the debugger.
7274
7275         * tramp-amd64.c
7276         (mono_arch_nullify_class_init_trampoline): Add call to
7277         mono_breakpoint_clean_code() to make things work when running
7278         inside the debugger.
7279
7280 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * inssel-long.brg (reg): Fix 64 bit build.
7283
7284 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7285
7286         * mini.c, mini.h: Share static generic code by passing it an
7287         implicit argument pointing to the runtime generic context.
7288
7289         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7290         inssel-long32-mips.brg: New opcodes for calling shared static,
7291         which need to be passed the runtime generic context.
7292
7293         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7294         argument on the stack in the prologue if needed.  New function for
7295         finding the runtime generic context argument from the registers
7296         saved by the trampoline.
7297
7298         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7299         runtime generic context argument.
7300
7301         * tramp-amd64.c: Also restore the register used for the runtime
7302         generic context argument.
7303
7304         * mini-trampoline.c: Resolve shared static calls by consulting the
7305         runtime generic context via the new argument.
7306
7307         * generic-sharing.c: Add an argument to sharability-checking
7308         functions that specifies whether type variables should be treated
7309         as sharable type arguments.
7310
7311         * inssel-x86.brg: Removed a superfluous, buggy rule.
7312
7313         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7314         to switches.
7315
7316 2008-03-14  Martin Baulig  <martin@ximian.com>
7317
7318         * debug-debugger.c (main_thread_handler): Call
7319         mono_runtime_run_main() without sending any notifications.
7320
7321         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7322
7323 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7324
7325         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7326
7327 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7328
7329         * tramp-x86.c: Fixed register restore offsets in the trampoline
7330         code for ECX and EDX.
7331
7332 2008-03-12  Geoff Norton  <gnorton@novell.com>
7333
7334         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7335         different ucontext_t implementations.
7336         * exceptions-arm.c: Use the above defines to get exceptions working on 
7337         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7338         * mini-arm.c: Implement iPhone icache support (based on a patch by
7339         Luke Howard lukeh@padl.com)
7340
7341 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7342
7343         * mini.c: Enable generic sharing of calls to non-static
7344         non-interface non-generic non-value-type methods.
7345
7346         * mini-trampolines.c: Resolve calls from shared generic code.
7347
7348 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7349
7350         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7351
7352         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7353
7354 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7355
7356         * mini.c: some fixes for the AOT compiler.
7357
7358 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7359
7360         * cpu-amd64.md: Add clob:1 to some float opcodes.
7361
7362 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7363
7364         * mini.h: Added MiniVerifierMode enumeration.
7365
7366         * mini.c: Added mini_verifier_set_mode to control
7367         the usage of the new verifier.
7368
7369         * mini.c (mono_method): Integrated the new verifier.
7370
7371         * driver.c: Extended --security option with validil and
7372         verifiable options to activate the new verifier.
7373
7374 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7375
7376         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7377         optimization to ctors taking 0 or 2 arguments too.
7378
7379         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7380         a bit.
7381
7382         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7383
7384         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7385
7386 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7387
7388         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7389         non-aot case as well.
7390
7391         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7392
7393         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7394         changes.
7395
7396         * aot-compiler.c (encode_patch): Ditto.
7397
7398         * mini.h (G_MININT32): Fix the definition of this.
7399
7400 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7401
7402         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7403
7404         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7405
7406 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7409         methods returning vtypes in registers.
7410         (mono_arch_allocate_vars): Ditto.
7411
7412         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7413
7414         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7415
7416         * generics.cs: Add a test from the linear IR branch.
7417
7418         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7419
7420         * mini.c (inline_method): Cache failed inline attempts.
7421
7422 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7423
7424         * mini.c: For shared methods of generic classes put the location
7425         of "this" into the MonoGenericJitInfo.
7426
7427         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7428         register out of a MonoContext by register number.  Add the generic
7429         sharing context as an argument to mono_arch_find_this_argument().
7430
7431         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7432         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7433         for new arch function.
7434
7435         * mini-exception.c: Handle open exception clauses in shared
7436         generic code.
7437
7438         * mini-trampolines.c: Supply additional argument to
7439         mono_arch_find_this_argument().
7440
7441 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7442
7443         * Makefile.am (regtests): Run the bench.exe tests last.
7444
7445 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7446
7447         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7448         a bit.
7449
7450 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7451
7452         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7453         with MS.
7454
7455         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7456         
7457         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7458
7459         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7460         whose class has no cctor.
7461
7462         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7463
7464 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7467         unverified.
7468
7469 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7472         to be in sync with the code on the linear IR branch.
7473
7474         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7475
7476         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7477
7478 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7479
7480         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7481
7482         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7483
7484         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7485
7486         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7487
7488         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7489         
7490         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7491         body.
7492
7493 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7494
7495         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7496         OP_LOADR4_MEMBASE emission.
7497
7498         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7499         (mono_spillvar_offset_float): Ditto.
7500
7501         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7502
7503         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7504         emission.
7505
7506         * basic-long.cs: Add regression tests for them.
7507
7508         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7509         use.
7510         (mono_arch_allocate_vars): Fix representation of single-precision float
7511         argument.
7512         (mono_arch_output_basic_block): Ditto.
7513
7514         * inssel-mips.brg: Ditto, remove duplicate items.
7515
7516         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7517         arguments of tail calls as on other platforms.
7518         (mono_arch_output_basic_block): Handle tail calls.
7519
7520         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7521         register.
7522
7523         * objects.cs (test_5_pass_static_struct): Add test for it.
7524
7525         Contributed under MIT/X11 license.
7526
7527 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * Makefile.am: Use gmcs for compiling the regression tests.
7530
7531         * *.2.cs *.2.il: Rename to *.cs and *.il.
7532
7533 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7534
7535         * regalloc.h: Make the vassign array smaller.
7536
7537         * mini.c (mini_method_compile): Remove an unused field in cfg.
7538
7539         * mini-codegen.c: Add a bunch of micro optimizations.
7540
7541 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7542
7543         * regalloc.h: Remove some unused fields.
7544
7545 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7546
7547         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7548
7549         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7550
7551 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7552
7553         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7554
7555         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7556         trampoline: Fetch an entry from the runtime generic context.  If
7557         it's NULL, jump to the actual trampoline to fill the runtime
7558         generic context.  Otherwise, return it.
7559
7560         * mini.c: Call the lazy fetch trampoline to get entries out of the
7561         runtime generic context.
7562
7563         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7564         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7565         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7566
7567 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7568
7569         * mini.c: Fetch data out of the extensible part of the runtime
7570         generic context instead of calling a helper function.
7571
7572         * generic-sharing.c: Some functions moved into
7573         metadata/generic-sharing.c.  Helper function for fetching other
7574         types now checks and asserts against extensible rgctx (just for
7575         debugging purposes - the helper function isn't called anymore
7576         unless for debugging).
7577
7578 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7581         for tail calls up to the point that the tests in iltests.exe run. Also add a
7582         dummy CKFINITE implementation.
7583         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7584         needed for trampoline LMF frames.
7585
7586         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7587         trampoline LMF frames.
7588
7589 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7590
7591         * mini.c (inline_method): clean any pending loader error when inlining fail.
7592         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7593
7594 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7595
7596         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7597
7598         * aot-runtime.c (decode_patch_info): Ditto.
7599
7600         * mini.c (mono_resolve_patch_target): Ditto.
7601         
7602         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7603         icall wrappers.
7604
7605         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7606         
7607         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7608         if it references an icall address.
7609
7610 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7611
7612         * cpu-s390x.md: Remove some more unused opcodes.
7613         
7614         * cpu-s390x.md: Remove some unused opcodes.
7615
7616         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7617         mono_op_imm_to_op ().
7618
7619         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7620         instead of a switch statement.
7621         
7622         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7623         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7624
7625         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7626         
7627         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7628
7629         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7630         -1.
7631
7632 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7633
7634         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7635         opened. Fixes #362607.
7636
7637         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7638
7639         * iltests.il.in: Add a test for static methods in interfaces.
7640
7641 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7642
7643         * genmdesc.c (build_table): Fix a crash on older glib versions.
7644
7645         * cpu-sparc.md: Remove some unused opcodes.
7646         
7647         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7648         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7649
7650         * cpu-amd64.md: Remove some unused opcodes.
7651
7652         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7653         like the other opcodes.
7654
7655 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7656
7657         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7658
7659         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7660
7661         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7662         variables 'cfg' instead of 'm' for consistency.
7663
7664         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7665
7666         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7667         argument holding the vtype return address, to avoid the ambigious use of
7668         cfg->ret for this purpose.
7669
7670         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7671
7672         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7673         
7674         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7675         new mono_print_ins () function which only takes one argument.
7676
7677 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7678
7679         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7680         macro arguments.
7681
7682 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7683
7684         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7685
7686         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7687
7688         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7689         opcodes and other small changes.
7690
7691         * mini-ops.h: Add some new opcodes from the linear IR branch.
7692
7693         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7694
7695         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7696         opcodes, use the REG_MEMBASE opcodes instead.
7697         
7698         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7699         opcodes, use the REG_MEMBASE opcodes instead.
7700         
7701         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7702         linear IR branch.
7703
7704         * mini.c (mono_op_imm_to_op): New helper function.
7705
7706         * mini-ops.h: Add some opcodes from linear IR branch.
7707
7708 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7709
7710         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7711         <tsv@solvo.ru>.
7712
7713 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7714
7715         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7716         OP_ICONV_TO_R4/R8.
7717
7718         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7719
7720 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7721
7722         * aot-compiler.c (emit_method_code): Add an assert.
7723
7724         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7725         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7726         methods.
7727
7728 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7731         some load/store opcodes so they are consistent. 
7732         (mono_arch_emit_prolog): Simplify some code.
7733
7734         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7735
7736         * objects.cs: Add tests for large argument offsets on ARM.
7737
7738         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7739         stack offsets. Fixes #359651.
7740
7741         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7742
7743         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7744
7745         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
7746
7747         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
7748
7749         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
7750
7751         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
7752         rid of CEE_CONV_R_UN.
7753
7754         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
7755
7756 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
7757
7758         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
7759
7760         * mini.c (mono_normalize_opcodes): Add some more opcodes.
7761
7762         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
7763
7764         * cpu-amd64.md: Remove some unused opcodes.
7765
7766         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
7767
7768         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
7769
7770         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
7771         arch specific functions for its parts. Call the peephole pass after local
7772         regalloc so the prolog can compute a more accurate max_offset.
7773         
7774         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
7775         the corresponding OP_I/OP_L opcodes.
7776
7777         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
7778
7779         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
7780
7781 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7782
7783         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
7784         as they are handled in mini.c.
7785
7786         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
7787         
7788         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
7789         case since it is handled in mini.c.
7790
7791         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
7792
7793         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
7794
7795         * *.c: Use the new opcodes in the IR and back end code.
7796
7797         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
7798
7799         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
7800
7801 2008-02-06  Mark Probst  <mark.probst@gmail.com>
7802
7803         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
7804         an assert because it has a race condition.
7805
7806 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7807
7808         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
7809
7810         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
7811
7812         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
7813
7814         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
7815         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
7816
7817 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7818
7819         * cpu-amd64.md (move): Correct the maximum size of move.
7820
7821 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7822
7823         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
7824         the generic class init trampoline to return quickly if the class
7825         is already inited.
7826
7827 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
7830         issues where an 32 bit callsite cannot be patched by a 64 bit address.
7831
7832 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7833
7834         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
7835         branch.
7836
7837 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
7838
7839         * objects.cs: Add some soft-float tests.
7840
7841         * mini.c: Fix a couple more soft-float issues.
7842
7843         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
7844
7845         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
7846         avoid a REX prefix.
7847
7848 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
7851         exception happens while compiling a virtual method.
7852
7853 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7854
7855         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
7856         
7857         * mini-sparc.c: Fix build.
7858
7859         * mini-sparc.c (get_call_info): Add support for generic sharing.
7860
7861         * mini-exceptions.c: Add a FIXME.
7862
7863 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7864
7865         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
7866         altstack handling code.
7867
7868         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
7869         
7870         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
7871
7872         * mini-s390.c: Add support for generic sharing.
7873
7874         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7875         Fix CAS on s390.
7876         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7877
7878         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
7879
7880         * mini-s390x.c: Add support for generic sharing.
7881         
7882         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7883         Fix CAS on ia64.
7884         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7885
7886         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
7887         can be used since it takes a 16 bit signed immediate.
7888
7889         * inssel-s390x.brg: Fix OP_SETRET.
7890
7891         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
7892
7893         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
7894
7895         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
7896
7897         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
7898
7899         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
7900         in one place.
7901
7902         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
7903         stuff.
7904
7905         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
7906         of the unused mono_arch_patch_delegate_trampoline stuff.
7907
7908 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * basic-long.cs: Move the fp related tests to basic-float.cs.
7911
7912         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
7913
7914         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
7915
7916         * basic-calls.cs: Add a test for proper float argument passing.
7917
7918         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
7919         if the context corresponds to an exception received through a signal.
7920
7921         * exceptions.cs: Add a test for nullref handling at the start of a try
7922         clause.
7923
7924         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
7925
7926         * jit-icalls.c (mono_break): New JIT icall.
7927
7928         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
7929
7930         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
7931
7932 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * cpu-*.md: Get rid of unused opcodes.
7935
7936         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
7937
7938         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
7939         by all platforms.
7940
7941         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
7942         define.
7943
7944         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
7945         the arch independent trampoline code in mini-trampolines.c.
7946
7947         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
7948
7949         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
7950
7951         * mini-s390.h: Remove an unused define.
7952         
7953         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
7954         the arch independent trampoline code in mini-trampolines.c.
7955
7956         * mini-arm.c (mono_arch_emit_prolog): Fix build.
7957
7958 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
7961
7962         * mini-s390.c (mono_arch_emit_prolog): Fix build.
7963
7964         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
7965
7966         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
7967
7968         * cpu-amd64.md: Use smaller sizes for int opcodes.
7969
7970         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
7971
7972         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
7973         objects.cs.
7974
7975         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
7976         debugging.
7977
7978         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
7979         instead of though a pointer to save an indirection when accessing elements of
7980         the array.
7981
7982         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
7983         some typos.
7984         (NOT_IMPLEMENTED): New helper macro.
7985         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
7986         of a bb.
7987
7988         * *.c: Use the new helper macro.
7989
7990 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
7993
7994 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7995
7996         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
7997         stack slots.
7998
7999 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
8000
8001         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
8002         profiling is enabled.
8003         
8004         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
8005         the end.
8006         (mono_arch_emit_prolog): Add more first bblock optimizations.
8007
8008         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
8009         in order if possible.
8010         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
8011         bblock, since the arguments are still in their original registers.
8012
8013         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
8014
8015 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8016
8017         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
8018         as well.
8019
8020         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
8021         offset 0.
8022
8023         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
8024
8025         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
8026         process async exceptions received while in unmanaged code.
8027
8028         * mini.c (mini_init): Install a callback with the runtime which will be called
8029         when a thread receives an async exception while in unmanaged code.
8030
8031         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
8032
8033         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8034
8035 2008-01-16  Wade Berrier  <wberrier@novell.com>
8036
8037         * cpu-g4.md:
8038         * cpu-arm.md:
8039         * cpu-s390x.md:
8040         fix build
8041
8042 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8043
8044         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8045         compilation with sun cc.
8046
8047         * cpu-*.md: Fix the build.
8048
8049         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8050
8051         * mini-amd64.h: Add some comments to the MonoLMF structure.
8052
8053         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8054         
8055         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8056         in the LMF structure if possible. This saves two instructions in the
8057         managed->native wrappers.
8058
8059         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8060
8061 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8062
8063         * generic-sharing.c: New type argument lookup code which uses the
8064         runtime generic context template.
8065
8066 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8067
8068         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8069
8070         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8071         (mono_arch_output_basic_block): Fix localloc implementation.
8072
8073         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8074
8075         * mini-ia64.c (peephole_pass): Fix ia64 build.
8076
8077         * mini-amd64.c (peephole_pass): Fix a warning.
8078         
8079         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
8080         at a constant offset from sp/fp.
8081
8082         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8083         instead of obtaining it from *lmf in the managed method case.
8084
8085 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8086
8087         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
8088
8089 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
8090
8091         * mini.h (MonoInstList): New type.
8092         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
8093         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
8094         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
8095         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
8096         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
8097         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
8098         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8099         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8100         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8101         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8102         MONO_INST_LIST_FOR_EACH_ENTRY,
8103         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8104         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8105         mono_inst_list_first, mono_inst_list_last,
8106         mono_inst_list_next, mono_inst_list_prev): New instruction
8107         list handling interfaces.
8108         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8109         list head 'ins_list'.
8110         (MonoInst): Replace next pointer with list head 'node'.
8111         (MonoCallInst): Make 'out_args' a MonoInstList.
8112         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8113         (MonoCompile): Delete reverse_inst_list and
8114         reverse_inst_list_len.
8115         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8116         mono_arch_lowering_pass, mono_arch_local_regalloc,
8117         mono_arch_output_basic_block, mono_arch_emit_prolog):
8118         Convert to new instruction lists.
8119         (insert_after_ins): Delete.
8120         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8121         instruction lists.
8122         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8123         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8124         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8125         mono_emulate_opcode, mono_emit_load_got_addr,
8126         inline_method, mono_method_to_ir, mono_print_bb_code,
8127         print_dfn, decompose_pass, nullify_basic_block,
8128         replace_out_block_in_code, remove_block_if_useless,
8129         merge_basic_blocks, move_basic_block_to_end,
8130         try_unsigned_compare, optimize_branches, mono_print_code,
8131         mini_select_instructions, remove_critical_edges): Likewise.
8132         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8133         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8134         mono_arch_output_basic_block, mono_arch_emit_prolog):
8135         Likewise.
8136         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8137         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8138         mono_arch_output_basic_block): Likewise.
8139         (inst_list_prepend, insert_after_ins): Delete.
8140         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8141         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8142         instruction lists.
8143         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8144         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8145         mono_arch_emit_prolog): Likewise.
8146         * cfold.c (mono_constant_fold): Likewise.
8147         * liveness.c (visit_bb, mono_analyze_liveness,
8148         optimize_initlocals): Likewise.
8149         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8150         * graph.c (mono_draw_code_cfg): Likewise.
8151         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8152         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8153         mono_ssa_cprop): Likewise.
8154         * abcremoval (get_relations_from_previous_bb, process_block):
8155         Likewise.
8156         * local-propagation (mono_cprop_invalidate_values,
8157         mono_local_cprop_bb): Likewise.
8158         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8159         peephole_pass, mono_arch_output_basic_block,
8160         mono_arch_emit_prolog): Likewise.
8161         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8162         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8163         mono_arch_emit_prolog): Likewise.
8164         (insert_after_ins): Delete.
8165         * aliasing.c (print_code_with_aliasing_information,
8166         mono_build_aliasing_information, mono_aliasing_deadce):
8167         Convert to new instruction lists.
8168         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8169         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8170         mono_arch_local_regalloc, mono_arch_output_basic_block):
8171         Likewise.
8172         (insert_after_ins): Delete.
8173         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8174         peephole_pass, mono_arch_output_basic_block): Convert to
8175         new instruction lists.
8176         * mini-codegen (InstList, inst_list_prepend,
8177         insert_after_ins): Delete.
8178         (insert_before_ins, get_register_force_spilling,
8179         get_register_spilling, free_up_ireg, free_up_reg,
8180         create_copy_ins, create_spilled_store, alloc_int_reg,
8181         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8182         to new instruction lists.
8183         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8184         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8185         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8186         (insert_after_ins): Delete.
8187         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8188         mono_arch_local_regalloc, mono_arch_output_basic_block,
8189         mono_arch_call_opcode): Convert to new instruction lists.
8190         (insert_after_ins): Delete.
8191         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8192         peephole_pass, mono_arch_output_basic_block,
8193         mono_arch_emit_prolog): Convert to new instruction lists.
8194
8195 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8196
8197         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8198
8199         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8200         Fixes #353182.
8201
8202         * Makefile.am (version.h): Make this work with non-bash shells.
8203
8204 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8205
8206         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8207
8208 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8209
8210         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8211         the InitializeArray optimization.
8212
8213 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8214
8215         * mini.c driver.c: Don't include os/gc_wrapper.h.
8216
8217 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * mini.c (print_jit_stats): Print GC statistics if available.
8220
8221 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8222
8223         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8224
8225 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8226
8227         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8228
8229 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8232         
8233         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8234
8235         * driver.c (mono_main): Ditto.
8236
8237 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8238
8239         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8240
8241         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8242         in the vtable can't be encoded.
8243         (compile_method): Ditto.
8244
8245 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8246
8247         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8248         defined.
8249
8250         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8251         lmf->rbp.
8252
8253         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8254         the top LMF entry belongs to the current method.
8255
8256         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8257
8258 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8259
8260         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8261         
8262         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8263
8264         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8265
8266         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8267
8268         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8269
8270         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8271         implementation.
8272
8273         * basic-float.cs: Add an ulong->double cast test.
8274
8275 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8276
8277         * mini.c (mono_method_to_ir): Fix a warning.
8278
8279 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8280
8281         * mini-ops.h: Add OP_SWITCH.
8282
8283         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8284         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8285
8286 2007-12-11  Geoff Norton  <gnorton@novell.com>
8287
8288         * mini-s390x.c: Minor change to the MAX() define to allow
8289         it to compile with other gcc versions.
8290
8291 2007-12-11  Geoff Norton  <gnorton@novell.com>
8292
8293         * cpu-s390x.md:
8294         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8295
8296 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8297
8298         exceptions-arm.c (mono_arch_get_restore_context): Restore
8299         the frame pointer.
8300
8301         exceptions-arm.c (throw_exception): Save the frame pointer.
8302         This is a partial fix for #323747. Only the client side is
8303         fixed.
8304
8305 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8306
8307         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8308         was using an unrelated variable to log the class which
8309         needed the cctor to be called. This was crashing on arm.
8310
8311 2007-12-09  Robert Jordan  <robertj@gmx.net>
8312
8313         * mini-x86.c (mono_arch_emit_epilog):
8314         Consider all kinds of 64-bit types. Fixes #323114.
8315
8316 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8317
8318         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8319
8320 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8323
8324 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8325
8326         * mini.c: run type ctor before allocating an object, not only
8327         when running it's constructor method (fixes at least part of bug #342507).
8328
8329 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8330         
8331         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8332         
8333         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8334         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8335         function.
8336
8337         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8338         mono_generic_class_init_trampoline () the same as it is done with the other
8339         trampolines.
8340
8341         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8342         aot-runtime.c aot-compiler.c: Implement AOT support.    
8343
8344 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8345
8346         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8347         build for archs which don't have the vtable trampoline defined
8348         yet.
8349
8350 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8351
8352         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8353
8354         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8355
8356         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8357
8358         * tramp-<ARCH>.c: Use the new helper function.
8359
8360 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8361
8362         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8363         trampoline call, which takes a vtable argument.
8364
8365         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8366         OP_TRAMPCALL_VTABLEs like other calls.
8367
8368         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8369         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8370         call.  Implemented a support function which fetches the vtable
8371         from a register set.
8372
8373         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8374         Implemented a generic class init trampoline, using the
8375         OP_TRAMPCALL_VTABLE opcode.
8376
8377         * mini.c: Implemented static field access when sharing generic
8378         code.  This implies initing the class using the new
8379         OP_TRAMPCALL_VTABLE call.
8380
8381 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8382
8383         * mini.c: Don't compile methods with sharing enabled if their
8384         classes are disabled for sharing.
8385
8386 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8387
8388         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8389         opcodes. Fixes #346563.
8390
8391         * objects.cs: Add a new test.
8392
8393         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8394
8395         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8396         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8397
8398 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8399
8400         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8401
8402 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8403
8404         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8405         code stream.
8406
8407 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8408
8409         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8410
8411         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8412         optimization in the AOT case.
8413         
8414 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8417         
8418         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8419
8420         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8421
8422         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8423
8424         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8425         is created by the inlined delegate ctor.
8426
8427         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8428
8429         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8430
8431 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8432
8433         * cpu-x86.md: Fix the length of ckfinite.
8434
8435 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8436
8437         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8438         
8439         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8440         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8441
8442         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8443
8444         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8445         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8446
8447 2007-11-28  Martin Baulig  <martin@ximian.com>
8448
8449         * mini-x86.c
8450         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8451         after creating the trampoline.
8452
8453 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8456
8457         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8458         the same version.
8459
8460         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8461         instead of the calling method to help AOT.
8462
8463         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8464
8465 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8466
8467         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8468         is defined.
8469
8470 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8471
8472         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8473         
8474         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8475         (encode_method_ref): No need to handle generic method definitions specially.
8476
8477         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8478
8479         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8480         decode_klass_info.
8481
8482         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8483         encode_klass_info.
8484         (compile_method): Enable generic sharing.
8485
8486 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8487
8488         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8489         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8490
8491         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8492         generic code.
8493
8494         * mini-trampolines.c: Fix a warning.
8495
8496         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8497         NEW_PCONST.
8498         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8499         (generic_class_is_reference_type): Remove unused function.
8500
8501         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8502         in the generic vtable trampoline case.
8503
8504         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8505         
8506         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8507         return an AOT method based on a vtable slot.
8508
8509         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8510
8511         * mini.c (mini_get_vtable_trampoline): Export this.
8512
8513 2007-11-22  Martin Baulig  <martin@ximian.com>
8514
8515         * debug-debugger.h
8516         (MonoDebuggerInfo): Move `debugger_version' up.
8517
8518 2007-11-22  Martin Baulig  <martin@ximian.com>
8519
8520         * mini-amd64.c
8521         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8522
8523         * mini-trampolines.c
8524         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8525         after compiling the method.
8526
8527 2007-11-20  Martin Baulig  <martin@ximian.com>
8528
8529         * debug-mini.c
8530         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8531         (mono_debugger_remove_breakpoint): Likewise.
8532         (mono_debugger_check_breakpoints): Likewise.
8533
8534         * debug-debugger.c: Implement the new breakpoint interface here.
8535
8536 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8537
8538         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8539         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8540
8541         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8542
8543 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8544
8545         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8546
8547         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8548         mini.c.
8549
8550         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8551         mini.c.
8552
8553         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8554         returning a vtype in a register.
8555
8556         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8557         here from the arch specific code.
8558
8559         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8560         mini.c.
8561
8562         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8563         (mono_arch_emit_prolog): Increment maximum prolog size.
8564
8565         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8566         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8567
8568         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8569         MonoGenericSharingContext.
8570
8571         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8572         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8573
8574 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8575
8576         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8577         which extract fields out of the runtime generic context.  Full
8578         sharing of the NEWARR opcode.
8579
8580 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8581
8582         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8583         --enable-minimal=ssa.
8584
8585 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8586
8587         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8588         mono_marshal_get_delegate_invoke () signature change.
8589
8590 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8591
8592         * mini.c: Removed the shared context in favor of the generic
8593         sharing context.  Allocate the MonoJitInfo structure with room for
8594         the generic sharing context if it's needed.
8595
8596         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8597         domain-internals.h now.
8598
8599         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8600
8601         * generic-sharing.c: Several changes for working without a shared
8602         context and instead operating on open types instead.
8603
8604 2007-11-12  David S. Miller  <davem@davemloft.net>
8605
8606        * inssel-sparc.brg: Fix double instruction emit.
8607
8608 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8609
8610         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8611         Get/Set/Address methods.
8612         
8613         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8614         mono_marshal_get_delegate_invoke signature change.
8615
8616 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8617
8618         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8619         This can happens with dynamic methods. Fixes the other bug in #322722.
8620
8621 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8622
8623         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8624         BX call sequence.
8625
8626         * mini-arm.c (arm_patch): Implement patching of BX call
8627         sequence. Fixes one of the bugs in #322722.
8628
8629 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8630
8631        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8632        under Linux.  We only need to flush every 32-byte cache line.    
8633
8634 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8635
8636         * mini.c:
8637         move_basic_block_to_end: Add branches when needed, eventually creating
8638         a new BB.
8639         optimize_branches: added a parameter that tells if it's ok to create
8640         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8641         and avoid calling move_basic_block_to_end when it's not ok.
8642         Fixes bug 318677.
8643
8644 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8645
8646         * mini.c: Abort inlining call to InitializeArray if something
8647         looks wrong.  Let the icall handle it, which now has proper safety
8648         checks.
8649
8650 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8651
8652         * mini.c (mono_spill_call): add support for soft-float.
8653
8654         * mini.c (mono_method_to_ir): add support for soft-float
8655         to inlined functions that return float.
8656
8657         * mini.c (mono_method_to_ir): add support for soft-float
8658         to cee_stsfld opcode on float fields.
8659
8660 2007-11-05  Geoff Norton  <gnorton@novell.com>
8661
8662         * mini-x86.h: Fix the structure access for X86 Leopard.
8663
8664
8665 2007-11-05  Martin Baulig  <martin@ximian.com>
8666
8667         * mini-trampolines.c
8668         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8669         after compiling the method to notify the debugger.
8670
8671 2007-11-05  Martin Baulig  <martin@ximian.com>
8672
8673         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8674
8675 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8676
8677         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8678         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8679
8680 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8681
8682         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8683         native-to-managed wrappers.
8684         
8685 2007-11-01  Geoff Norton  <gnorton@novell.com>
8686
8687         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8688         members.
8689
8690 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8691
8692         * mini.c, mini-x86.c: when getting back from unmanaged code
8693         to managed via a marshaled delegate we also need to set the
8694         right domain.
8695
8696 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8697
8698         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8699         for amd64.
8700
8701 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8702
8703         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8704         let the debugger or other external agents to tell the JIT when
8705         a sw breakpoint has been inserted in the code that the JIT needs
8706         to be able to inspect.
8707
8708 2007-10-31  Martin Baulig  <martin@ximian.com>
8709
8710         * debug-debugger.h
8711         (MonoDebuggerInfo): Remove `runtime_class_init'.
8712
8713 2007-10-30  Martin Baulig  <martin@ximian.com>
8714
8715         * debug-mini.h
8716         (mono_debugger_thread_created): Added `MonoThread *' argument.
8717         (mono_debugger_extended_notification): New public method.
8718         (mono_debugger_trampoline_compiled): New public method.
8719
8720         * debug-mini.c
8721         (MonoDebuggerThreadInfo): Added `thread' and
8722         `extended_notifications' fields.
8723
8724         * debug-debugger.c
8725         (debugger_executable_code_buffer): New static variable.
8726
8727         * debug-debugger.h
8728         (MonoDebuggerInfo): Added `executable_code_buffer',
8729         `executable_code_buffer_size', `breakpoint_info_area',
8730         `breakpoint_table' and `breakpoint_table_size'.
8731
8732 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8733
8734         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8735         that IP  either is an unused value or the vtable pointer. IMT 
8736         calls use vtable + offset now. Reduced by almost half the size
8737         of IMT entries.
8738
8739 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8740
8741         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8742         defines to access param registers. Replace long usage with
8743         gsize as sizeof(long) != sizeof(void*) on Win64.
8744
8745         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
8746         on Win64. Fix intrinsic, use _AddressOfReturnAddress
8747         instead of non-existant _GetAddressOfReturnAddress.
8748
8749         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
8750         param registers. Save/restore %rdi and %rsi in MonoLMF.
8751
8752         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
8753         param registers. Modify (throw_exception) signature to take 
8754         %rdi and %rsi on Win64. 
8755
8756         Code is contributed under MIT/X11 license.
8757
8758 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8759
8760         * helpers.c: unlink debugging output files.
8761
8762 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8763
8764         * mini.c: Move mono_create_ftnptr () to object.c.
8765
8766 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8767
8768         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
8769         optional. This function can now be used to disassemble code generated
8770         outside the JIT such as trampolines and IMT thunks.
8771
8772         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
8773
8774         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
8775         vtable pointer from a ldr instruction.
8776
8777         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
8778         new IMT call sequence.
8779
8780         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
8781         call sequence for interface invocations.
8782
8783         * mini-arm.c (mono_arch_emit_imt_argument): added, required
8784         for imt support. This function is empty since IMT on ARM requires no
8785         special handling on the IR side.
8786
8787         * mini-arm.c (mono_arch_find_imt_method): added, required for
8788         imt support.
8789
8790         * mini-arm.c (mono_arch_find_this_argument): added, required
8791         for imt support.
8792
8793         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
8794         a ldr instruction to load a value stored in the code stream.
8795
8796         * mini-arm.c (mono_arch_build_imt_thunk):added, required
8797         for imt support.
8798
8799
8800 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * mini.c (mini_init): Install the jump trampoline callback.
8803
8804 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8805
8806         * mini-trampolines.c: handle synchronized methods with the common
8807         vtable trampoline (bug #335601).
8808
8809 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
8810
8811         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
8812
8813         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
8814         64 bit platforms.
8815
8816         * mini-ia64.h mini-ia64.c: Add support for IMT.
8817
8818         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
8819         prolog. Fixes #331958.
8820
8821 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
8824
8825 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8826
8827         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
8828         trampoline.
8829
8830 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8831
8832         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
8833         trampoline.
8834
8835 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
8836
8837         * mini-x86.c, mini-x86.h: x86 support for the common vtable
8838         trampoline.
8839
8840 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8841
8842         * mini-trampolines.c: changed the magic rampoline to understand
8843         the common vtable trampoline method: the method to invoke is
8844         determined by the vtable displacement of the call.
8845
8846 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8847
8848         * mini.c, mini.h: register the common vtable trampoline if the
8849         architecture supports it.
8850
8851 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8852
8853         * cpu-amd64.md: use the correct max length for tls_get.
8854
8855 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
8856
8857         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
8858         CEE_STELEM_ANY. Fixes #333696.
8859
8860 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8861
8862         * exceptions-x86.c: provide more graceful handling of the case where
8863         we followed a bogus function pointer from managed code (bug #332866).
8864
8865 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8866
8867         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
8868         replaces the generic_shared flag and will carry more information
8869         in the future.
8870
8871         * generic-sharing.c: Added mini_type_stack_size() which allows
8872         allows open types if given a generic sharing context.
8873         mini_get_basic_type_from_generic() takes a
8874         MonoGenericSharingContext* instead of a MonoCompile* now.
8875
8876         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
8877         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
8878         mini-sparc.c, mini-x86.c: Trivial changes required by the two
8879         changes above.  Just passing arguments through to the right
8880         places.
8881
8882 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8883
8884         * mini-arm.c: unify the call emission to emit_code_seq().
8885
8886 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
8887
8888         * tramp-arm.c: reduced the trampoline size.
8889
8890 2007-10-10  Mark Probst  <mark.probst@gmail.com>
8891
8892         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
8893         variable handling out of arch-specific code.
8894
8895 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
8896
8897         * mini-arm.c: implemented fast delegate dispatch.
8898
8899 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8900
8901         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
8902         that fp elimination is turned off if the space required by locals is too
8903         big. Fixes #331958.
8904
8905 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8906
8907         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
8908         ARM to the new style trampoline.
8909
8910 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8911
8912         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
8913
8914         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
8915
8916 2007-10-09  Martin Baulig  <martin@ximian.com>
8917
8918         * debug-debugger.h
8919         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
8920         `field_info_offset_offset'.     
8921
8922 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
8923
8924         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
8925         removed more internal usage of the r11 register and made it available
8926         to the register allocator.
8927
8928 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8929
8930         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
8931         when sharing generics and treat type variables as references.
8932
8933 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8934
8935         * mini-ppc.c: started removing the internal uses of register r11
8936         to eventually allow the register allocator to manage it as an
8937         additional available register.
8938
8939 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8940
8941         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
8942
8943 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
8944
8945         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
8946         specific trampolines as they are not performance critical as a jump
8947         target (maybe align as before only for AOT code?). This saves about
8948         200 KB of native code on x86 for monodevelop startup.
8949
8950 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8951
8952         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
8953         monodevelop startup.
8954
8955 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
8956
8957         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
8958
8959         * mini-sparc.h mini-sparc.c: Implement IMT support.
8960
8961         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
8962         its smaller and doesn't clobber sparc_g1.
8963
8964         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
8965
8966 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8967
8968         * mini-ppc.c: optimized the size of the IMT thunks a bit.
8969
8970 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
8971
8972         * mini-ppc.c: implemented fast delegate invocation.
8973
8974 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
8975
8976         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
8977
8978 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8979
8980         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
8981         code to the new style trampoline in preparation for IMT support.
8982
8983 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8984
8985         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
8986         systems already. This also reduces the specific trampiline sizes and
8987         prepares for the use of r12 as the IMT identifier register.
8988
8989 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8990
8991         * mini-mips.h: endianess fix (simplified from a patch by
8992         Thomas Kunze <thommy@tabao.de>, bug #323737).
8993
8994 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8995
8996         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
8997         to access ucontext fields and enable netbsd support
8998         (partially from Magnus Henoch <mange@freemail.hu>).
8999
9000 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9001
9002         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
9003         use the preprocessor from the CPP env var if it is set.
9004
9005 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9006
9007         * mini-trampolines.c: fixed an assertion and moved it earlier in the
9008         code, before interface_offset gets used.
9009
9010 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
9013         mono_class_setup_vtable () before accessing klass->vtable.
9014
9015 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
9018         hackish.
9019
9020 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9021
9022         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
9023         IMT slots (this saves hundreds of KB of memory in programs like
9024         IronPython and Monodevelop).
9025
9026 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9027
9028         * mini.c: print the delegate counter.
9029
9030 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
9031
9032         * mini-x86.c: make it easier to enable the debugging code for IMT
9033         slots.
9034
9035 2007-09-28  Martin Baulig  <martin@ximian.com>
9036
9037         * debug-debugger.h
9038         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9039         `mono_method_klass_offset' and `mono_method_token_offset'.
9040
9041 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9042
9043         * mini.c: First generics sharing implementation.  Can only share
9044         in very simple cases.  If sharing doesn't work it falls back to
9045         dedicated compilation.
9046
9047         * mini.h: Flag in MonoCompile to specify whether generic
9048         compilation is shared.  Flags enum for marking which generic inst
9049         of a context is used.  Prototypes for helper functions.
9050
9051         * generic-sharing.c: Helper functions for generic method sharing.
9052
9053         * optflags-def.h: Optimization flag (gshared) for enabling generic
9054         method sharing added.
9055
9056         * Makefile.am: generic-sharing.c added.
9057
9058 2007-09-19 Daniel Nauck <dna@mono-project.de>
9059
9060         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9061
9062 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9063         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9064         fixes bug 325507.
9065
9066 2007-09-19  Martin Baulig  <martin@ximian.com>
9067
9068         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9069         mono_debug_cleanup() is now part of mono_cleanup().
9070
9071 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * driver.c (mono_main): Fix a warning.
9074
9075 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9076
9077         * aot-compiler.c: Optimize various parts when processing large assemblies.
9078         Fixes ##325568.
9079
9080         * mini.c (mono_patch_info_hash): Improve hash function.
9081
9082 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9083
9084         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9085         
9086         Code is contributed under MIT/X11 license.
9087
9088 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9089
9090         * mini.c (mini_init): Fix a leak.
9091
9092         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
9093
9094 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9095
9096         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
9097
9098 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9099
9100         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9101
9102 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9103
9104         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9105         variance tests.
9106
9107         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9108
9109         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9110
9111         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9112
9113         * aot-runtime.c (decode_patch_info): Ditto.
9114
9115 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9116
9117         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9118         static case. Cache delegates in architecture specific code, 
9119         based on number of parameters.
9120         
9121         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9122         in architecture specific code, based on number of parameters.
9123         
9124         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9125         caching happen in architecture specific code now.
9126         
9127         Code is contributed under MIT/X11 license.
9128
9129 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9130
9131         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9132         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9133         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9134
9135         Code is contributed under MIT/X11 license.
9136
9137 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9138         * mini.c: (mono_thread_abort) Fixed bug #82416.
9139
9140 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9141
9142         * mini.: hook the new managed GC allocation feature into the JIT.
9143
9144 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9145
9146         * mini.c: implementation for the new runtime tls opcode.
9147
9148 2007-09-11  Martin Baulig  <martin@ximian.com>
9149
9150         * debug-debugger.h
9151         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9152         `mono_method_inflated_offset'.
9153
9154 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9155
9156         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9157         async exceptions into a method.
9158
9159         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9160         purpose of testing whenever the unwinder works at every instruction.
9161
9162 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9163
9164         * mini.c: check accessibility of method used in ldftn (fixes
9165         bug #82635).
9166
9167 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9168
9169         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9170
9171         * inssel.brg: Fix a warning.
9172
9173 2007-09-03  Martin Baulig  <martin@ximian.com>
9174
9175         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9176         now takes the `main_method' as argument.
9177
9178 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9179
9180         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9181
9182 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9183
9184         * driver.c: include the cil-coff.h header on Windows.
9185         
9186         Code is contributed under MIT/X11 license.
9187
9188 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9189
9190         * mini.c, driver.c: don't include the cil-coff.h header.
9191
9192 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9193
9194         * mini.c: flag places that needs fixes fo soft-float support.
9195
9196 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9197
9198         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9199         endian systems (partially from Dean Jenkins, bug #81924).
9200
9201 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9202
9203         * mini.c (check_linkdemand): Remove embedded reference object in
9204         call to LinkDemandSecurityException.
9205         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9206         with an IntPtr instead of a reference object.
9207
9208 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9209
9210         * mini.c (handle_initobj): Handle alignment properly.
9211
9212         * inssel.brg (mini_emit_memset): Ditto. 
9213
9214         * inssel.brg (mini_emit_memcpy): Ditto. 
9215
9216         * inssel-sparc.brg: Ditto.              
9217
9218         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9219
9220 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9221
9222         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9223         exceptions raised in unmanaged code. Fixes part of #82594.
9224
9225 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9226
9227         * mini.c (mono_method_to_ir), declsec.c
9228         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9229
9230 2007-08-22  Martin Baulig  <martin@ximian.com>
9231
9232         * debug-mini.h
9233         (MonoDebuggerThreadInfo): New typedef.
9234         (mono_debugger_thread_table): New global variable.
9235         (mono_debugger_thread_created): New public function.
9236         (mono_debugger_thread_cleanup): New public function.
9237
9238         * debug-debugger.h
9239         (MonoDebuggerInfo):
9240         - removed `get_current_thread' and `lookup_assembly'.
9241         - removed `data_table'.
9242         - added `thread_table'.
9243
9244         * mini.c
9245         (mono_thread_start_cb): Call mono_debugger_thread_created().
9246         (mono_thread_attach_cb): Likewise.
9247         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9248         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9249         initial domain.
9250
9251         * driver.c (mono_main): Move mono_debug_init() up, before calling
9252         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9253
9254 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9255
9256         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9257         together when passing several arguments of type double (gives a small
9258         speedup and saves a few bytes of generated code).
9259
9260 2007-08-20  Jb Evain  <jbevain@novell.com>
9261
9262         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9263
9264 2007-08-20  Jb Evain  <jbevain@novell.com>
9265
9266         * mini.c (mono_method_to_ir): throw MethodAccessException
9267         and FieldAccessException instead of InvalidProgramException.
9268
9269 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9270
9271         * mini.c: CoreCLR security checks.
9272
9273         * mini.h: Removed MonoSecurityMode (moved to
9274         metadata/security-manager.h) and mono_security_mode global var
9275         (replaced by set/get functions in security-manager.h).
9276
9277         * driver.c: Added "core-clr-test" security mode for testing.  Used
9278         set-function for setting security mode.
9279
9280 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9281
9282         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9283         the new jit_info_table.
9284
9285         * driver.c: Test code for the new jit_info_table (enabled by the
9286         define MONO_JIT_INFO_TABLE_TEST).
9287
9288 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9289
9290         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9291         detection of call <REG> instruction sequence. Fixes build on freebsd.
9292
9293 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9294
9295         * mini-exceptions.c: Fix a warning.
9296
9297 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9298
9299         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9300         stack overflow handling code on amd64 too.
9301
9302         * mini-exceptions.c (mono_setup_altstack): Make this use 
9303         mono_thread_get_stack_bounds ().
9304
9305         * mini-x86.h: Disable sigaltstack on solaris x86.
9306
9307 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9308
9309         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9310
9311 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9312
9313         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9314
9315 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9316
9317         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9318
9319         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9320
9321 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9322
9323         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9324         due to alignment.
9325
9326 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9327
9328         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9329         to be emitted (bug #82281).
9330
9331 2007-08-01  Martin Baulig  <martin@ximian.com>
9332
9333         Merged the `debugger-dublin' branch.
9334
9335         * debug-debugger.h (MonoDebuggerInfo):
9336         Removed the `old_*' compatibility entries.
9337         Added `debugger_version' and `data_table'.
9338         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9339         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9340
9341         * debug-mini.c
9342         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9343         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9344         instead of a `gconstpointer'.
9345         (mono_debugger_insert_method_breakpoint): Return a
9346         `MonoDebugMethodAddressList *'.
9347
9348 2007-06-28  Martin Baulig  <martin@ximian.com>
9349
9350         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9351
9352 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9353
9354         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9355         __builtin_frame_address () since it is broken on older gcc versions.
9356
9357 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9358
9359         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9360         on the stack overflow handling and made the managed stack overflows
9361         catchable in most cases using soft guard pages.
9362         * exceptions-x86.c: added code to restore the protection in the soft
9363         guard pages at the end of exception handling.
9364
9365 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9366
9367         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9368
9369 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9370
9371         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9372         exception handling.
9373
9374 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9375
9376         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9377         signal handling support until it has been ported to the new mechanism.
9378         * mini.c: fixed stack overflow detection and use the new
9379         architecture code  to handle signals on the altstack.
9380
9381 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9382
9383         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9384         stack overflows on the alt stack.
9385
9386 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9387
9388         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9389         stack overflows on the alt stack.
9390
9391 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9392
9393         * exceptions-ppc.c: cleanup preparing for altstack support.
9394
9395 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9396
9397         * exceptions-arm.c: cleanup preparing for altstack support.
9398
9399 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9400
9401         * mini.c (print_jit_stats): Output hazard pointer stats.
9402
9403 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9404
9405         * driver.c, mini.c: Replaced security mode flags with a single
9406         enum variable.
9407
9408 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9409
9410         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9411
9412 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9413
9414         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9415         (which doesn't do anything yet) for activating Core CLR
9416         (Silverlight) security.
9417
9418 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9419
9420         * mini-codegen.c: work around a possible gcc bug on arm.
9421
9422 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9423
9424         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9425         message for platforms that don't support AOT compilation.
9426
9427 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9428
9429         * mini.h, mini.c, driver.c: temporary smcs hack.
9430
9431 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9432
9433         * mini-arm.h, mini-arm.c: arm EABI fixes.
9434
9435 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9436
9437         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9438         case.
9439
9440         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9441         trampolines taking a method argument.
9442
9443         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9444
9445         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9446         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9447
9448         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9449         JIT compilation throws an exception. Fixes #82050.
9450
9451 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9452
9453         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9454         with the MONO_EXCEPTION_ defines.
9455
9456 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9457
9458         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9459         #82117.
9460         
9461         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9462         the cause of an assertion.
9463
9464 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9465
9466         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9467         removed.
9468
9469 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9470
9471         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9472         assert. Should fix #82103.
9473
9474 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9475
9476         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9477         here too. Fixes #82095.
9478
9479         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9480         addresses.
9481
9482         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9483
9484         * mini-amd64.h: Enable IMT for amd64.
9485         
9486         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9487
9488 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9491
9492 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9493
9494         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9495         as soon as check_linkdemand sets an exception_type.
9496
9497 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9498
9499         * mini-x86.c: fixed offsets for IMT call sequence.
9500         * mini-x86.h: enable IMT again.
9501
9502 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9503
9504         * trace.c (mono_trace_enter_method): Decode MonoType too.
9505
9506         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9507
9508         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9509
9510         * mini-amd64.c: Add preliminary IMT implementation.
9511         
9512 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9513
9514         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9515         understand the new IMT-base interface invocation (thanks to
9516         Daniel Nauck for the report and the remote debugging session).
9517
9518 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9519
9520         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9521
9522 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9523
9524         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9525
9526 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9527
9528         * mini-trampolines.c: implement AOT IMT support.
9529         * mini-x86.h: enable IMT support for wider testing.
9530
9531 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9532
9533         * inssel.brg (emit_imt_argument): Add aot support here.
9534
9535         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9536
9537 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9538
9539         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9540         of the IMT implementation, partially from massi, with my
9541         implementation of the bsearch sequence. Disabled by default until
9542         the AOT code is implemented.
9543
9544 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9545
9546         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9547
9548         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9549
9550 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9551
9552         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9553         arch-independent IMT JIT code from Massimiliano
9554         Mantione (massi@ximian.com) with small cleanups from me.
9555
9556 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9557
9558         * Makefile.am: fix svn invocation to get the svn revision to be
9559         independent of the local language (build fix).
9560
9561 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9562
9563         * mini.c (inline_method): Reset cfg->exception_type if the
9564         inlining is aborted.  Fixes: 82049.
9565
9566 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9567
9568         * mini.c: remove assert from exception handling code when exception_ptr
9569         is not set.
9570
9571 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9572
9573         * mini.c (mono_codegen): Add an assert.
9574
9575         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9576         enter and leave code.
9577         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9578
9579 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9580
9581         * mini-ppc.c: fixed memory corruption for localloc(0)
9582         (bug #81852).
9583
9584 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9585         
9586         * mini.c: Fix warnings.
9587
9588 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9589
9590         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9591         to emit better double->int conversions.
9592
9593 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9594
9595         * mini.c: the provided Min/Max optimizations are valid for unisgned
9596         ints.
9597
9598 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9599
9600         * 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
9601
9602 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9603
9604         * mini.c (mono_running_on_valgrind): Add support for reporting the
9605         method and  its boundaries to valgrind.
9606
9607 2007-06-28  Martin Baulig  <martin@ximian.com>
9608
9609         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9610
9611 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9614
9615         * generic.2.cs: Add new test case.
9616
9617 2007-06-25  Martin Baulig  <martin@ximian.com>
9618
9619         Merged the `debugger-dublin' branch.
9620
9621         * debug-mini.c
9622         (mono_debugger_insert_method_breakpoint): New public method.
9623         (mono_debugger_remove_method_breakpoint): Likewise.
9624         (mono_debugger_check_breakpoints): New static method.
9625         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9626
9627         * debug-debugger.h (MonoDebuggerInfo):
9628         Renamed (to keep backward compatibility in the vtable):
9629         `insert_breakpoint' -> `old_insert_breakpoint'.
9630         `remove_breakpoint' -> `old_remove_breakpoint'.
9631         `create_string' -> `old_create_string'.
9632         `lookup_class' -> `old_lookup_class'.
9633         `lookup_type' -> removed; changed into a dummy field.
9634         `lookup_assembly' -> `old_lookup_assembly'.
9635         Added (same functionality, but different signature):
9636         `create_string', `lookup_class', `lookup_assembly'
9637         Added new:
9638         `get_method_addr_or_bpt', `remove_method_breakpoint',
9639         `runtime_class_init'.
9640
9641         * debug-debugger.c: Merged the `debugger-dublin' branch.
9642
9643 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9646         well.
9647         (peephole_pass): Likewise.
9648
9649 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9650
9651         * driver.c: hopefully make setaffinity work also for ancient
9652         versions of linux.
9653
9654 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9655
9656         * driver.c : win32 build fix.
9657
9658 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9659
9660         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9661         processor if it is set.
9662
9663 2007-06-21  Martin Baulig  <martin@ximian.com>
9664
9665         * debug-mini.h: New file.
9666
9667         * debug-mini.c
9668         (mono_debugger_insert_breakpoint_full): Moved here from
9669         ../metadata/mono-debug-debugger.c.
9670         (mono_debugger_remove_breakpoint): Likewise.
9671         (mono_debugger_breakpoint_callback): Likewise.
9672
9673 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9674
9675         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9676         changes in MonoGenericClass.
9677
9678 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9679
9680         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9681
9682 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9683
9684         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9685         removal of MonoGenericMethod.
9686
9687 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9688
9689         * mini-exceptions.c: hooks for the exception events profiling API.
9690
9691 2007-06-14  Randolph Chung  <tausq@debian.org>
9692
9693         * Makefile.ma: Add hppa target.
9694         * mini-arch.h: Include mini-hppa.h
9695         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9696         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9697         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9698
9699 2007-06-14  Randolph Chung  <tausq@debian.org>
9700
9701         * inssel.brg: Add rules for "chained" compare-branch operations so that
9702         a single compare op can affect multiple branches.  Adjust cost for
9703         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9704         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9705         cost for some rules so that they can more easily be overridden by
9706         per-arch rules (with fixes from lupus).
9707         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9708
9709 2007-06-13  Randolph Chung  <tausq@debian.org>
9710
9711         * mini-ops.h: Reorder branch ops so that they match the order of the
9712         corresponding CEE_* ops.  The code expects them this way.
9713         Add new ops for HPPA target.
9714         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9715
9716 2007-06-13  Randolph Chung  <tausq@debian.org>
9717
9718         * mini-exceptions.c: Handle cases where the stack grows towards
9719         larger addresses.
9720         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9721
9722 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9723
9724         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9725         counter.
9726         * driver.c: explain where a non-matching corlib is found.
9727
9728 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9729
9730         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9731
9732 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9733
9734         * mini-exceptions.c: Generate a method profile leave event during
9735         an exception to ensure that the profiler gets notified.
9736
9737 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9738
9739         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9740         branch.
9741
9742         * cpu-amd64.md: Add long_and/or/xor opcodes.
9743
9744 2007-06-06  Wade Berrier  <wberrier@novell.com>
9745
9746         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
9747         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
9748         length of instruction shr_imm (expected 8, got 10)
9749
9750 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
9751
9752         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
9753
9754 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9755
9756         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9757         MonoInternalHashTable again (fixed bug in the internal hash table
9758         code).
9759
9760 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9761
9762         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
9763         Have to figure out what makes it crash the SWF regression.
9764
9765 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
9766
9767         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
9768
9769 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9770
9771         * mini.c: optimize out the type check when storing null in a
9772         reference array.
9773
9774 2007-06-04  Mark Probst  <mark.probst@gmail.com>
9775
9776         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9777         MonoInternalHashTable.
9778
9779 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9780
9781         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
9782         signed integer methods.
9783
9784 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9785
9786         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
9787         permanently since the current approach doesn't work.
9788
9789 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9790
9791         * inssel.brg (stmt): Only call delegate->invoke_impl if 
9792         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
9793
9794 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9795
9796         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
9797         the sreg2==rdx case.
9798         
9799         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
9800         account if it contains a rex prefix.
9801         (peephole_pass): Handle OP_FMOVE as well.
9802
9803 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9804
9805         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
9806         as it causes regressions.
9807
9808 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
9809
9810         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
9811         static case as well.
9812
9813         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
9814
9815         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9816         (mono_arch_get_this_arg_from_call): Ditto.
9817
9818         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
9819
9820         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9821         invoke_impl field.
9822
9823         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9824         (mono_arch_get_this_arg_from_call): Ditto.
9825
9826         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
9827         
9828         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
9829         try to create optimized invoke code and use that for further invocations. 
9830         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
9831
9832         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
9833
9834 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
9835
9836         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
9837         sealed classes or methods.
9838         *devirtualization.cs: tests for the new optimization
9839
9840 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
9841
9842         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
9843         by the update_volatile () function.
9844
9845 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
9846
9847         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
9848         require it.
9849
9850         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
9851
9852 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
9853
9854         * mini.c: Add configure checks for header files.
9855         * mini-x86.c: Add configure checks for header files.
9856         * trace.c: Add configure checks for header files.
9857         * aot-runtime.c: Add configure checks for header files.
9858         * aot-compiler.c: Add configure checks for header files.
9859         * driver.c: Add configure checks for header files.
9860         * mini-codegen.c: Add configure checks for header files.
9861         
9862         Code is contributed under MIT/X11 license.
9863
9864 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
9867         icompare_imm -128 + op_iclt. Fixes #81703.
9868
9869 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
9870
9871         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
9872
9873 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9874
9875         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
9876         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
9877         so that all isinst checks now use "interface_bitmap".
9878
9879 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
9880
9881         * cpu-amd64.md (jmp): Fix a warning.
9882
9883         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
9884
9885         * basic.cs: Add new regression test.
9886
9887         * basic.cs: Remove test which is now in basic-long.cs.
9888
9889         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
9890
9891         * basic-long.cs: Add new test.
9892         
9893 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
9894
9895         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
9896
9897 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
9898
9899         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
9900
9901         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
9902         places.
9903         
9904         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
9905         throwing code a bit.
9906
9907         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
9908         the exception throwing code a bit.
9909
9910         * mini-x86.c (get_call_info): Allocate result from a mempool.
9911
9912 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
9913
9914         * aot-compiler.c (find_typespec_for_class): Fix the assert.
9915
9916         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
9917
9918         * mini.h (MonoCompile): Add 'token_info_hash' field.
9919
9920         * mini.c: Save token->method associations during compilation so the AOT 
9921         compiler can use it.
9922         
9923         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
9924         which reference generic classes and methods.
9925
9926 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
9929
9930         * aot-compiler.c (compile_method): Fix a typo in a comment.
9931
9932         * aot-runtime.c (decode_cached_class_info): Skip generic types.
9933
9934         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
9935         everything generic.
9936
9937         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
9938
9939 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
9940
9941         * mini.h (MonoCompile): Add 'args' field.
9942
9943         * mini.c (mono_compile_create_vars): Store variables representing the arguments
9944         into cfg->args.
9945
9946         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
9947
9948 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * mini.c (mono_compile_get_interface_var): Remove this unused function.
9951
9952         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
9953
9954         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
9955         opcodes for some opcodes.
9956
9957         * mini.h *.brg *.c: Use the new opcodes.
9958
9959 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9960
9961         * mini.h: Bumped aot revision.
9962
9963         * inssel.brg: modified code generation of type checks for interfaces
9964         to use the new "MonoClass.interface_bitmap" instead of the old
9965         "MonoClass.interface_offsets".
9966
9967 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
9968
9969         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
9970
9971 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
9972
9973         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
9974         64 bit platforms.
9975
9976 2007-04-27  Neale Ferguson <neale@sinenomine.net>
9977
9978         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
9979
9980 2007-04-27  Wade Berrier  <wberrier@novell.com>
9981
9982         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
9983         mini.h) to fix build.
9984
9985 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
9988         
9989         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
9990         causes the corlib unit tests to fail.
9991
9992 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
9993
9994         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
9995
9996         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
9997
9998         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
9999         opcodes to the comparison relations.
10000
10001         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
10002         opcodes to their types.
10003         
10004         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
10005
10006         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
10007         it in cfg->arch.cinfo.
10008
10009         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
10010
10011         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
10012         cfg->cil_offset_to_bb.
10013
10014 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10015
10016         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
10017         created becase of initlocals.
10018
10019 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
10020
10021         * mini-alpha.c cpu-alpha.md: More alpha port work from 
10022         Sergey Tikhonov <tsv@solvo.ru>.
10023
10024 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
10025
10026         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
10027
10028 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * cpu-s390.md (break): Correct the length of break instruction.
10031
10032 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10033
10034         * mini.c: fix a couple of soft-float issues and comments.
10035
10036 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10037
10038         * trace.c (is_filenamechar): - is also a filename char.
10039
10040 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10041
10042         * mini-s390.c: Correct checking for enum type in return value processing.
10043
10044 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10045
10046         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10047         (version.h): Makefile is in the build directory.
10048
10049 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10050
10051         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10052
10053 2007-04-11  Martin Baulig  <martin@ximian.com>
10054
10055         * mini.c (can_access_member): Fix handling of generic classes;
10056         fixes #81259.
10057
10058 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10059
10060         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10061
10062 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10063
10064         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10065
10066 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10067
10068         * mini-codegen.c: make sure the right spill amount is
10069         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10070
10071 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10072
10073         * mini-ppc.c: fixes for the fp_branch_nan test.
10074
10075 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10076
10077         * basic.cs: Comment out new test which still fails on ia64.
10078
10079 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10080
10081         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10082
10083 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10084
10085         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
10086
10087 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
10088
10089         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
10090         on 64 bit machines. Fixes part of #80738.
10091
10092         * basic.cs: Add regression test.
10093
10094 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * inssel.brg basic.cs: Revert previous change to fix build.
10097
10098         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10099         platforms.
10100         
10101         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10102
10103         * basic.cs: Add new regression test.
10104
10105 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10106
10107         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10108         many arguments.
10109
10110 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10111
10112         * cpu-s390x.md: Correct length of break instruction.
10113
10114 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10115
10116         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10117         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10118
10119 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10120
10121         * *.c: Begin WIN64 port.
10122         * mini.c:  Use correct register in profiler.
10123         * mini-amd64.c: No inline assembly on Win64.
10124         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10125         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10126         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10127         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10128         mono_arch_ip_from_context for Win64.
10129         
10130         Contributed under MIT/X11 license.
10131
10132 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10133
10134         * exceptions-amd64.c (seh_handler): Ditto.
10135
10136         * exceptions-x86.c (seh_handler): Fix a memory leak.
10137
10138 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10139
10140         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10141         mini-s390x.c: fixed peephole optimizations to deal
10142         correctly with 1 and 2 byte reload avoidance.
10143
10144 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10145
10146         * cpu-s390.md, cpu-s390x.md: update localloc length.
10147
10148 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10149
10150         * cpu-g4.md: added missing descriptions.
10151
10152 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10153
10154         *  Makefile.am: Add support so the tail tests are not executed on
10155         PowerPC as that is a known limitation of the PowerPC port.
10156
10157 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10158
10159         * runmdesc.bat:  Move to msvc directory.
10160         
10161 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10162
10163         * runmdesc.bat:  Run executable that was produced by the current
10164         target and sent via an argument.
10165         
10166 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10169         #81102.
10170
10171         * generics.2.cs: Add regression test.
10172
10173 2007-03-09  Wade berrier  <wberrier@novell.com>
10174
10175         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10176
10177 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10178
10179         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10180         AOT code depends on this.
10181
10182 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10183
10184         * mini.c: more precise tracking of types in the eval stack
10185         (part of fix for bug #81044).
10186
10187 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10190
10191         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10192
10193 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10196
10197         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10198
10199 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10200
10201         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10202         a pointer on 64 bit systems. Fixes #80190.
10203
10204         * iltests.il: Add new regression test.
10205
10206 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10207
10208         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10209
10210 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10211
10212         * trace.c: Remove an erroneous alignemnt check when tracing.
10213           Fixes --trace on OSX86.
10214
10215 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10216
10217         * mini-$(arch).h: initialize SP in context for all the archs.
10218
10219 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10220
10221         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10222         regressions in the thread tests.
10223
10224 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10225
10226         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10227         - fixed implementation of LOCALLOC opcode
10228         - implemented non-un compare for floats
10229         - code cleanup
10230         - implementation of FDIV and CKFINITE opcodes
10231         - fixes for latest mono updates
10232         - additional arch opcodes
10233
10234 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10235
10236         * Makefile.am: simplify and merge rules for cross-compilation.
10237
10238 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10239
10240         * local-propagation.c: Actually *apply* the fix for bug 80591...
10241
10242 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10243
10244         * mini-exceptions.c: backuot part of the last change
10245         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10246
10247 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10248         * inssel.brg: Fix bug 59286.
10249
10250
10251 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10252
10253         * mini-exceptions.c: patch from Zoltan to correctly check for
10254         stack boundaries (using the stack register, not the frame register),
10255         fixes bugs #80724, #79717.
10256
10257 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10258
10259         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10260         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10261
10262         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10263         presence of frame pointer elimination.
10264
10265 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10266         
10267         * mini-x86.h: NetBSD UCONTEX_REG defines.
10268
10269 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * inssel-amd64.brg: Fix amd64 build.
10272
10273 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10274
10275         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10276         on amd64.
10277
10278 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10279
10280         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10281         ends.
10282
10283         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10284
10285 2007-01-30 Mark Mason <mason@broadcom.com>
10286
10287            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10288            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10289            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10290            beginning support for CEE_JMP [not quite working yet]
10291            * tramp-mips.c: LMF handling now works
10292         
10293 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10294
10295         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10296
10297         * mini.h (NULLIFY_INS): New macro.
10298
10299 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10300
10301         * mini.c: statistical profiler fix for windows, patch
10302         from Tor Lillqvist (tml@novell.com).
10303
10304 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10305         * local-propagation.c: Fix bug 80591.
10306
10307 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10308
10309         * Makefile.am: put back the --export-dynamic option as with
10310         the previous gmodule flags (thanks to Robert Jordan).
10311
10312 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10313
10314         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10315
10316         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10317         simplify and speed up the local register allocator. Also rename some fields
10318         like iassign->vassign.
10319         
10320         * regalloc.c: Remove some functions which are no longer used since their
10321         inlined version is in mini-codegen.c.
10322         
10323         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10324
10325         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10326
10327 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10330         narrowing. Fixes #80622.
10331
10332         * iltests.il: Add new regresssion test. 
10333
10334 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10335
10336         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10337         debug-debugger.c, debug-debugger.h: warning fixes.
10338         * driver.c: updated copyright year and made it fit in one line.
10339
10340 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10341
10342         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10343
10344 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10345
10346         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10347
10348         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10349
10350         * iltests.il: Add new test for bug #80507.
10351
10352 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10353
10354         * mini-arm.h: use soft-float also on vfp for now.
10355
10356 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10357
10358         * mini.c: fix some more soft-float issues.
10359
10360 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10363
10364 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10365         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10366         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10367         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10368
10369 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10370
10371         * mini-arm.c: typo fix.
10372
10373 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10374
10375         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10376
10377 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10378
10379         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10380         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10381
10382         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10383
10384         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10385
10386         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10387         
10388         * inssel.brg: Fix a warning.
10389
10390         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10391
10392         * abcremoval.c ssa.c ssapre.c: Update after this change.
10393         
10394         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10395
10396         * dominators.c (df_set): Use mono_bitset_union_fast.    
10397
10398 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10399
10400         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10401         mini-codegen.c: reduce relocations and memory usage for the cpu
10402         description.
10403
10404 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10405
10406         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10407
10408         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10409         to reduce their size.
10410
10411 2007-01-19 Mark Mason <mason@broadcom.com>
10412
10413         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10414         * mini-mips.c: more configuration macros, support long conditional branches, additional
10415         asserts, fix epilog instrumentation.
10416         * mini-mips.h: use standard stack walk
10417         * cpu-mips.md: increase size of div, rem and conditional branches
10418         
10419 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10420
10421         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10422         to cpu spec data.
10423
10424 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10425
10426         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10427         (compile_method): Ditto.
10428
10429         * aot-runtime.c (decode_klass_info): Ditto.
10430
10431         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10432         needed by the code generated by inssel.brg. Also fix a warning.
10433
10434 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10435
10436         * mini.c: deal with enums that become genericinsts by
10437         being nested in a generic class (bug #79956).
10438
10439 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10440
10441         * mini.c: match the generic definition to check for
10442         private access with generic types (bug #78431).
10443
10444 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10445
10446         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10447         to make life easier for people cross-compiling that insist on not
10448         using scratchbox.
10449
10450 2007-01-17 Mark Mason <mason@broadcom.com>
10451
10452         * inssel-long.brg: patch to deal with mips missing flags
10453         * inssel-long32-mips.brg: implement overflow checks
10454         * insset-mips.brg: implement overflow checks
10455         * mini-mips.h: implement conditional exception handling
10456         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10457           Remove unused code, minor cleanups.
10458         * exceptions-mips.c: minor cleanups
10459         * mini-ops.h: add mips conditional exception ops
10460         * cpu-mips.md: add mips conditional exception ops
10461
10462         
10463 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10464
10465         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10466         to deal with mips missing of flags.
10467
10468 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10469
10470         * exceptions-ppc.c: execute fault handlers.
10471
10472 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10473
10474         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10475
10476 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10477
10478         * mini.c: handle also floating point values in initialize_array.
10479
10480 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10481
10482         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10483         array initialization and make it conditional on the intrins option.
10484
10485 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10486
10487         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10488         relocations and put the patch info names close to the enum definition.
10489
10490 2007-01-15 Mark Mason <mason@broadcom.com>
10491
10492         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10493
10494 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10495
10496         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10497
10498 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10499
10500         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10501
10502 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10503
10504         * Makefile.am: distribute the mips sources.
10505
10506 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10507
10508         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10509         directly.
10510
10511 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10512
10513         * cpu-x86.md: back out for now as this triggers other regressions.
10514
10515 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10516
10517         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10518         to eax:edx, so ecx can't get allocated to them (bug #80489).
10519
10520 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10521
10522         * mini.c, mini-exceptions.c: enabled running fault handlers
10523         (bug #80469).
10524
10525 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10526
10527         * driver.c: If nothing fail, do not use the string "failed",
10528         because it makes it very annoying to view test result logs on the
10529         web. 
10530
10531 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10532
10533         * debug-debugger.c (mono_debugger_main): Rename "main" to
10534         "main_method" to prevent a warning.
10535
10536         Remove a warning for unused field.
10537
10538 2006-12-28  Martin Baulig  <martin@ximian.com>
10539
10540         * debug-debugger.c
10541         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10542
10543 2006-12-22  Martin Baulig  <martin@ximian.com>
10544
10545         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10546         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10547         seperate `.mdb_debug_info' section, so we can access it from the
10548         debugger even if the binary is stripped.
10549
10550         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10551         from the `.mdb_debug_info' here to prevent the linker from
10552         removing that section.
10553
10554         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10555         mdb-debug-info64.s.
10556
10557 2006-12-19  Robert Jordan  <robertj@gmx.net>
10558
10559         * mini-x86: enable the code to return small structures in
10560         registers for FreeBSD as well. Fixes bug #80278.
10561         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10562
10563 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10564
10565         * mini-x86.c: align the stack when calling the profiler
10566         function instrumenting the prolog (on OSX).
10567
10568 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10569
10570         * mini.c: emit a break opcode where Debugger.Break () is called.
10571
10572 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10573
10574         * mini.c (mono_method_to_ir): Provide useful information on this
10575         assert, to prevent others from debugging like I did.
10576
10577 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10578
10579         * mini.c: enable code which was incorrectly commented
10580         (bug #80235).
10581
10582 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10583
10584         * mini-x86.c: enable on OSX, too, the code to return small
10585         structures in registers.
10586
10587 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10588
10589         * mini-x86.c: remove the use of the dynamic code manager here, too.
10590
10591 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10592
10593         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10594         mono_debugger_create_notification_function() to use
10595         mono_global_codeman_reserve () instead of a dynamic code manager.
10596
10597 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10598
10599         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10600         ves_array_element_address() jit icall and use a generated
10601         managed method instead (which is about 4 times faster for a rank 3
10602         array access).
10603
10604 2006-11-29  Mark Mason  <mason@broadcom.com>
10605
10606         * basic-calls.cs: additional tests for passing
10607         structures as function arguments.
10608
10609 2006-11-29  Mark Mason  <mason@broadcom.com>
10610
10611         * mini-mips.h: disable custom exception handling
10612         * mini-mips.c: throw/rethrow should use jalr to call
10613         exception stubs.  Fixed bug with passing structures
10614         by value. More support for tracing floating point
10615         functions.
10616
10617 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10618
10619         * mini.c: fixed typo in the soft-float ldind.r4 handling
10620         (bug #80086).
10621
10622 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10623
10624         * mini.c, mini.h, driver.c: added --runtime command line
10625         option to select a different runtime than the autodetected one.
10626         * jit.h: added API for embedders to initialize with a specific
10627         runtime version.
10628
10629 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10630
10631         * mini.c: handle also boxing of r4 values (bug #80024).
10632
10633 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10634
10635         * mini-ppc.c: force indirect calls until we reserve
10636         enough address space for all the generated code.
10637
10638 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10639
10640         * exceptions-arm.c: workaround bugs in the libc definition
10641         of struct ucontext.
10642
10643 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10644
10645         * inssel.brg: fixes from me and Mark Mason.
10646
10647 2006-11-23  Dick Porter  <dick@ximian.com>
10648
10649         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10650         semaphore display now we've fixed the initial value
10651
10652 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10653
10654         * inssel.brg: partially revert the last change to fix the build.
10655
10656 2006-11-21  Mark Mason  <mason@broadcom.com>
10657
10658         * inssel.brg: Add and use compare-and-branch macros to support
10659         architectures that do not have condition code registers (ie. MIPS).
10660         * *-mips.{c,brg,md}: Fix copyright statements
10661
10662 2006-11-20  Mark Mason  <mason@broadcom.com>
10663
10664         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10665         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10666         * mini.h: Added declaration for mono_print_ins()
10667         * mini-codegen.c: added ins_spec initializer for MIPS
10668         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10669         vreg to be virtual and hreg to be non-virtual.
10670         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10671         is not yet working/implemented correctly.
10672         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10673         non-static, fixup calls to print_ins() from other parts in the file.
10674
10675 2006-11-20  Mark Mason  <mason@broadcom.com>
10676
10677         * basic-calls.cs: added tests for passing structures as arguments
10678         to calls.
10679
10680 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10681
10682         * inssel-long32.brg: optimize signed division by power of two.
10683
10684 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10685
10686         * mini-arm.c: added support for interworking with thumb code
10687         (mono must be still be built using the ARM instruction encoding).
10688
10689 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10690
10691         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10692         verifier has different rules for it.   Fixes a few verifier issues
10693         in the test suite.
10694
10695         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10696         at the end, so people know what happened.
10697
10698 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10699
10700         * brach-opts.c: in optimize_exception_target() make sure we
10701         are in a catch clause (fixes bug #79871).
10702
10703 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10704
10705         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10706         more soft-float support fixes.
10707
10708 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10709
10710         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10711         that are passed half on the stack and half in registers.
10712
10713 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10714
10715         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10716         more mips integration work from Mark E Mason 
10717         <mark.e.mason@broadcom.com>.
10718
10719 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10720
10721         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10722         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10723         tramp-mips.c: added sources for the mips port, not
10724         integrated in the build yet. Contributed by
10725         Mark E Mason <mark.e.mason@broadcom.com>.
10726
10727 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10728
10729         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10730
10731 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10732
10733         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10734         put the soft-float rules in its own file since it seems to
10735         break s390 compilation.
10736
10737 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10738
10739         * mini-arm.c: fixed wrnings.
10740
10741 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10742
10743         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10744         inssel-arm.brg: ARM support for soft-float.
10745
10746 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10747
10748         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
10749         loads and stores of 32 bit fp values.
10750
10751 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
10752
10753         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
10754
10755         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
10756         works. Fixes #79852 and #79463.
10757
10758 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10759
10760         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
10761         more soft-float support WIP and fixes.
10762
10763 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
10764
10765         * mini-arm.c: some VFP updates.
10766
10767 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10768
10769         * mini-exceptions.c: 0 is a valid local var offset in some
10770         architectures, don't assert (bug #78508).
10771
10772 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
10773
10774         * exceptions-arm.c: fixed off by one error in stack walk code.
10775
10776 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10777
10778         * mini.h, mini.c: more precise tracking of type load exceptions.
10779
10780 2006-11-03  Robert Jordan  <robertj@gmx.net>
10781
10782         * Makefile.am: [WIN32] Add monow.exe target.
10783         * driver.c: [WIN32] Don't detach the console when debugging.
10784         Fixes bug #79797.
10785         
10786 2006-10-30  Miguel de Icaza  <miguel@novell.com>
10787
10788         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
10789
10790 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * aot-compiler.c (emit_method_info): Add a case missed earlier.
10793
10794         * driver.c (mini_regression): Fix --regression with AOT.
10795
10796         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
10797
10798 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
10799
10800         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
10801
10802         * mini-sparc.h: Don't use sigaction on sparc/linux.
10803
10804         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
10805
10806         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
10807
10808         * mini-exceptions.c: Add proper include files for getpid ().
10809
10810 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
10811
10812         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
10813         address instead of a MonoJitInfo* to avoid decoding the exception info for the
10814         method.
10815
10816         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
10817         name cache to reduce its size.
10818
10819         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10820
10821 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10822
10823         * mini-x86.c: Save/restore the current LMF structure more efficiently using
10824         the mono_lmf TLS variable.
10825
10826         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
10827         trampoline lmf frames.  
10828
10829         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
10830
10831 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
10832
10833         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
10834         the mono_lmf TLS variable.
10835
10836         * mini-exceptions.c: Access the LMF structure through accessors.
10837
10838         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
10839         variable instead of in jit_tls->lmf.
10840
10841         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
10842         
10843         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
10844         trampoline lmf frames.
10845
10846         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
10847
10848 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10849
10850        * mini.c trace.c mini-x86.c: Revert these too.
10851         
10852        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
10853        signature change.
10854
10855 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
10856
10857         * genmdesc.c: removed now dead code.
10858
10859 2006-10-09  Robert Jordan <robertj@gmx.net>
10860
10861         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
10862
10863 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10864
10865         * mini.h: do not leave gaps in the opcode values.
10866
10867 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
10868
10869         * jit-icalls.h: flag functions as internal here, too.
10870
10871 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
10872
10873         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
10874         functions with the internal attribute.
10875
10876 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
10877
10878         * aot-compiler.c: fclose the file descriptor in the profile read loop.
10879
10880 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
10881
10882         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
10883         for soft-float.
10884
10885 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
10888         tail calls as on other platforms.
10889
10890         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
10891
10892         * iltests.il: Add a few tailcall tests.
10893
10894 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10895
10896         * driver.c: fix loop for old compilers (bug #79521).
10897
10898 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
10899
10900         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
10901
10902         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
10903
10904         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
10905         metadata without any code.
10906
10907         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
10908         more precise debugging information using gdb.
10909
10910 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * inssel-ia64.brg: Make the helper methods static.
10913
10914 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10915
10916         * inssel-x86.brg: make the helper methods static.
10917
10918 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
10919
10920         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
10921
10922 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10923
10924         * mini.c: updates for monoburg changes.
10925         * inssel.brg: make a few helper functions static as they should.
10926
10927 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
10928
10929         * Makefile.am: Move mini-codegen.c to common_sources.
10930
10931 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10932
10933         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
10934         instructions.
10935         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
10936         mini-ppc.h: port to use the common local register allocator.
10937
10938 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * mini.h: Remove the comment too then.
10941
10942 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
10943
10944         * mini.h: put back backend.data which is to be used shortly and
10945         doesn't increase the size of MonoInst. If any 64 bit arch aligned
10946         pointers on 4 byte boundaries it'd have much bigger issues running
10947         and you can ifdef it out anyway.
10948
10949 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10950
10951         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
10952         MonoInst size by 4 bytes on 64 bit machines.
10953
10954 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10955
10956         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
10957         replacement with more meaningful field names. Arch maintainers, please
10958         check the assigned names are good enough for your arch.
10959
10960 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10961
10962         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
10963         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
10964
10965 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10966
10967         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
10968         relocations and memory requirements, put the optimization flags
10969         definitions in their own file.
10970
10971 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
10972
10973         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
10974
10975         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
10976
10977 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
10978
10979         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
10980
10981 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
10982
10983         * inssel.brg: use the correct function to get the size of an item
10984         in an array, given an element class.
10985         * aot-compiler.c: do not access class->class_size directly.
10986
10987 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10988
10989         * mini.h, debug-mini.c: added a debugging function to print
10990         info about local variables and arguments in a jitted method.
10991
10992 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
10993
10994         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10995
10996         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
10997
10998 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
11001         inner and outer loops when passing vtypes.
11002
11003 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
11004
11005         * mini-ppc.c: take into account the cpu errata for cache flushing
11006         which caused some random errors (bug #79381).
11007
11008 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
11011         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
11012
11013 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
11014
11015         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
11016         loaded.
11017
11018         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
11019         freebsd ports tree.
11020
11021         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
11022         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
11023
11024         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
11025         displacement.
11026
11027 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
11028
11029         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
11030
11031 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
11032
11033         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11034         macro does not have to be changed during debugging.
11035
11036         * 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>.
11037
11038         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11039
11040         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11041         
11042         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11043         MONO_ARCH_NO_EMULATE_MUL is defined.
11044
11045         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11046
11047         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11048
11049         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11050
11051         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11052         
11053 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11054
11055         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11056         stuff to mini-exceptions.c where it is used.
11057
11058         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11059         setup code, the real one is in mini-exceptions.c.
11060
11061         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11062         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11063         some changes from the freebsd ports tree.
11064
11065         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11066         constants.
11067         
11068         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11069
11070 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11071
11072         * mini.c: on Linux, check for /proc to be mounted
11073         (bug# 79351, novell bug#201204).
11074
11075 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11076
11077         * mini.c: handle cases where pthread_attr_getstack() behaves
11078         incorrectly (bug #78096).
11079
11080 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
11081
11082         * mini-arm.c: support larger stack frames (bug #79272).
11083
11084 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11085
11086         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
11087
11088         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
11089         tokens.
11090
11091         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
11092         mono_class_from_name () to find a class from its name.
11093
11094         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
11095
11096 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
11097
11098         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11099
11100 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
11101
11102         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11103
11104 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11105
11106         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11107         callinfo->trampoline.
11108
11109         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11110         fixes #79271.
11111         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11112         future.
11113
11114 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11117
11118 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11119
11120         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11121         stats.method_trampolines, it is already done by the generic trampoline code.
11122
11123         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11124         
11125 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11128
11129         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11130
11131         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11132
11133         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11134         
11135         * mini.c (print_jit_stats): Print new stats.
11136
11137         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11138
11139 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11140
11141         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11142         Address on two dimensional arrays. Fixes #78729.
11143
11144         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11145
11146         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11147         a method.
11148
11149         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11150
11151         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11152         #79130.
11153         
11154         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11155         a race condition.
11156         (mini_get_ldelema_ins): Ditto.
11157
11158 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11159
11160         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11161         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11162         Fixes #79213.
11163
11164 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11165
11166         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11167         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11168
11169         * exceptions-s390x.c: Cosmetic change.
11170
11171         * tramp-s390.c: Fix warning.
11172
11173         * cpu-s390.md: Correct length of mul_imm.
11174
11175 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11176
11177         * aot-compiler.c: added binary writer with ELF backend
11178         implementation (only on Linux/x86 for now).
11179
11180 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11181
11182         * Makefile.am: Don't run net 2.0 AOT tests.
11183
11184         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11185         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11186
11187         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11188
11189 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11190
11191         * aot-compiler.c: simplified and refactored the asm-writing code
11192         to allow different backends.
11193
11194 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11195
11196         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11197
11198         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11199         little. Share patches of type TYPE_FROM_HANDLE as well.
11200
11201         * mini.c (mono_patch_info_equal): New helper function.
11202         (mono_patch_info_hash): Ditto.
11203
11204         * aot-compiler.c (emit_method_code): Fix s390 build.
11205
11206         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11207         is not handled because it is stored as a flag and not as a type ctor. Fixes
11208         #79016.
11209
11210 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * aot-compiler.c: Fix computation of GOT slot statistics.
11213         
11214         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11215         Also remove support for not PIC AOT.
11216
11217         * mini.h: Bump AOT file format version.
11218
11219         * objects.cs: Add a test for #78990.
11220
11221         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11222         (peter.dettman@iinet.net.au). Fixes #79087.
11223
11224         * basic-long.cs: Add a test for the above.
11225
11226 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11229         
11230         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11231         code somewhat.
11232
11233 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11234
11235         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11236         exceptions.
11237
11238 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11239
11240         * mini.c: Don't verify COM proxy invoke calls
11241         
11242
11243 2006-08-10  Dick Porter  <dick@ximian.com>
11244
11245         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11246         which process is holding semaphores locked.
11247
11248 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * mini-ia64.c mini-amd64.c: Fix #79027.
11251
11252         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11253
11254         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11255
11256         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11257         implicit arguments in a vararg call. Fixes #79027.
11258
11259 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11260
11261         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11262         (mono_get_array_new_va_signature): Ditto.
11263
11264 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * aot-runtime.c: Call init_plt lazily.
11267
11268         * inssel-long.brg: Fix unsigned long->int conversion.
11269
11270         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11271
11272         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11273         that most data is now in the .rss/.data section.
11274
11275 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11276
11277         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11278
11279         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11280
11281         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11282
11283         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11284
11285         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11286         virtual call. Fixes #79010.
11287
11288         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11289         and use the result as the this argument in the real call.
11290
11291         * generics.2.cs: Add a new test for #79010.
11292         
11293 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11294
11295         * mini-x86.c: Fix a warning.
11296
11297         * aot-compiler.c: Add a bunch of statistics.
11298
11299         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11300
11301 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11302
11303         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11304
11305 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11306
11307         * 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>.
11308
11309 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11310
11311         * mini.c (mono_method_to_ir): Obtain the original method in the
11312         CIL stream and use this to perform validation.
11313
11314         Fixed: #78816
11315
11316 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11317
11318         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11319         (mono_arch_call_opcode): Ditto.
11320
11321         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11322         #78826.
11323
11324         * mini.c (mono_patch_info_dup_mp): New helper function.
11325         
11326         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11327         compilation. Fixes #78827.
11328
11329 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
11330
11331         * declsec.c: Use original security informations for
11332           MONO_WRAPPER_MANAGED_TO_MANAGED.
11333
11334 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11335
11336         * mini.c: Allow Com Interop methods/classes and
11337         don't verify COM wrapper calls
11338         
11339
11340 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11341
11342         * inssel-long32.brg: Fix long->i4 checked conversion.
11343
11344         * exceptions.cs: Add a test for the above.
11345
11346 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11347
11348         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11349
11350         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11351         leaks.
11352
11353         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11354         #78775.
11355
11356 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11357
11358         * mini.c: Fix solaris/x86 exception handling.
11359
11360         * Makefile.am: Get rid of $(ICU_LIBS).
11361
11362 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11363
11364         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11365         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11366         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11367
11368         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11369
11370         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11371         this function causes a SIGSEGV.
11372
11373 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11374
11375         * mini.c: Remove unused solaris/x86 includes.
11376
11377 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11378
11379         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11380
11381 2006-06-20  Jb Evain  <jbevain@gmail.com>
11382
11383         * cpu-g4.md: fix max length of start_handler instruction.
11384
11385 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11386         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11387
11388 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11389         * ssa.c: Fixed bug 78653 for SSA based deadce.
11390         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11391         MonoInst.flags, used in SSA based deadce.
11392         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11393         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11394
11395 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11396
11397         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11398         it can end up using non executable memory on ppc64 systems
11399         running ppc32 userspace (fix from Johannes Berg).
11400
11401 2006-06-14  Dick Porter  <dick@ximian.com>
11402
11403         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11404         4.1.1
11405
11406 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11407         * mini.c: Made so that inline is locally disabled if it would
11408         trigger a .cctor, because too many apps depend on this behavior
11409         (which seems to be also the one of the MS CLR).
11410
11411 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11412
11413         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11414         No idea why this worked before.
11415
11416         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11417         which branch to outer exception clauses since they could skip the
11418         inner finally clauses. Fixes #78633.
11419
11420         * exceptions.cs: Add a test for the above.
11421
11422         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11423         Fixes #78629.
11424
11425         * iltests.il: Add a test for the above.
11426
11427 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11428
11429         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11430         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11431
11432         * iltests.il: Add a test for the above.
11433
11434 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11435
11436         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11437         
11438         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11439         methods as instrinsics.
11440
11441 2006-06-09  Wade Berrier <wberrier@novell.com>
11442
11443         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11444         (simple-cee-ops.h ssapre-mini-ops.h)
11445
11446 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11447
11448         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11449         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11450         instruction).
11451         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11452         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11453
11454 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11455
11456         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11457
11458 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11459
11460         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11461         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11462         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11463         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11464         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11465         of opcodes, so that bug 78549 should not happen again.
11466         * ssapre.c: Updated to use the renamed files.
11467
11468 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11469
11470         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11471         in OP_ATOMIC_EXCHANGE_I4.
11472
11473 2006-06-07  Wade Berrier <wberrier@novell.com>
11474
11475         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11476         in mono_debugger_create_notification_function)
11477
11478 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11479
11480         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11481         
11482         * mini.c (type_from_stack_type): Disable some changes which do not
11483         seem to work.
11484
11485         * driver.c: Reenable opts.
11486
11487         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11488         of the evaluation stack.
11489         
11490         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11491         evaluation stack trace at entry to the bblock.
11492
11493         * mini.c (merge_stacks): New function to perform verification of stack merges.
11494         Turned off by default.
11495
11496         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11497         STACK_MP.
11498         
11499 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11500
11501         * local-propagation.c: Fixed bug 78549.
11502
11503 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11504
11505         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11506
11507 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11508
11509         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11510         tramp-arm.c, tramp-ia64.c
11511         (mono_debugger_create_notification_function): Update signature to
11512         new signature and use new protocol for creating the notification
11513         function.  
11514
11515         Should fix the build.
11516
11517 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11518
11519         * exceptions-ppc.c (mono_jit_walk_stack)
11520         (ves_icall_get_frame_info): Fix the build
11521
11522 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11523
11524         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11525
11526 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11527
11528         * il2tests.2.il: New file for generics CIL tests.  Add test for
11529         #78019.
11530         * Makefile.am: Update.
11531
11532         Fix #78019
11533         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11534         to nullable types.
11535
11536 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11537
11538         * aliasing.c: Fixed bug 78311.
11539
11540 2006-05-29  Martin Baulig  <martin@ximian.com>
11541
11542         * mini-exceptions.c (mono_find_jit_info): When computing the
11543         native offset, check whether we're actually inside the method's
11544         code; call mono_debug_print_stack_frame() to format the frame.
11545         (ves_icall_System_Exception_get_trace): Call
11546         mono_debug_print_stack_frame() to format the stack frame.
11547         (ves_icall_get_trace): Update to the new debugging API.
11548         (mono_jit_walk_stack_from_ctx): Likewise.
11549         (ves_icall_get_frame_info): Likewise.
11550
11551         * mini.c (get_method_from_ip): Use the new debugging API.
11552         (mono_print_method_from_ip): Likewise.
11553
11554         * exceptions-ppc.c
11555         (mono_jit_walk_stack): Use the new debugging API.
11556         (ves_icall_get_frame_info): Likewise.   
11557
11558 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11559
11560         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11561
11562 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11563
11564         * mini.c: Added "limitator" to inline for debugging.
11565
11566 2006-05-24  Martin Baulig  <martin@ximian.com>
11567
11568         * debug-debugger.c (mono_debugger_init): Create a private,
11569         malloc()-based code manager for the notification function and
11570         intentionally leak it on exit.  This fixes the crash-on-exit race
11571         condition.
11572
11573         * tramp-amd64.c
11574         (mono_debugger_create_notification_function): Added
11575         `MonoCodeManager *' argument.
11576
11577         * tramp-x86.c
11578         (mono_debugger_create_notification_function): Added
11579         `MonoCodeManager *' argument.
11580
11581 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11582
11583         * aliasing.c: Fixed 64 bit issue.
11584         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11585         default since all known bugs are fixed (one more time!).
11586
11587 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11588
11589         * mini.c: write barrier support.
11590
11591 2006-05-23  Martin Baulig  <martin@ximian.com>
11592
11593         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11594         check at the top of the file.
11595
11596 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11597
11598         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11599         reverting changes without reason and without changelog entries.
11600
11601 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11604         to a few opcodes. Fixes #78439.
11605
11606         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11607         consistency with other archs.
11608
11609         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11610
11611 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11612
11613         * debug-debugger.c: fix the build.
11614
11615 2006-05-17  Martin Baulig  <martin@ximian.com>
11616
11617         * debug-debugger.c
11618         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11619         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11620         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11621         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11622
11623 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11624
11625         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11626
11627 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11628
11629         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11630         MONO_TYPE_GENERICINST.
11631         
11632         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11633         MONO_TYPE_GENERICINST.
11634
11635 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11636
11637         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11638         #78325.
11639
11640 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11641
11642         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11643         mempool.
11644         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11645
11646 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11647
11648         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11649         mono_trace_cleanup ().
11650
11651         * iltests.il: Fix problem with the newly added test.
11652
11653         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11654         due to register constraints, free up the previous hreg. Fixes #78314.
11655
11656         * iltests.il: Add new test for #78314.  
11657
11658         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11659         Interlocked.Add. Fixes #78312.
11660
11661         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11662         
11663 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11664
11665         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11666
11667 2006-05-05  Martin Baulig  <martin@ximian.com>
11668
11669         * debug-mini.c (mono_debug_open_block): New method.
11670
11671         * mini-amd64.c
11672         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11673         the beginning of each basic block.
11674
11675         * mini-x86.c
11676         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11677         the beginning of each basic block.
11678
11679 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11680
11681         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11682         default until I understand why they break the build on amd64.
11683
11684 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11685
11686         * mini.c (mini_cleanup): Call mono_cleanup ().
11687
11688         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11689         errors.
11690
11691 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11692
11693         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11694         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11695         default since all known bugs are fixed, and I cannot reproduce bug
11696         77944... I'm asking Matt Hargett to test again after this commit.
11697
11698 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11699
11700         * mini-codegen.c: Fixed typo that thrashed inline.
11701
11702 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11703
11704         * dominators.c (compute_dominators): Avoid using a worklist since
11705         it is not correct in some cases. Instead, iterate over all bblocks as
11706         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11707
11708 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11709
11710         * mini.c (mono_jit_compile_method_inner): Use
11711         mono_prepare_exception_from_error that resets the value
11712         internally.
11713
11714 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11715
11716         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11717         
11718 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11719
11720         * aliasing.c: Fixed bug 78210.
11721
11722 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11723
11724         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11725         default until all their problems (or the ones they trigger) are fixed.
11726
11727 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11730         
11731         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11732         as loaded only after resolving patches since that could invoke the same method.
11733
11734         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11735
11736         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11737         functions.
11738
11739         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11740         AOT loader.
11741
11742         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11743         stack.
11744
11745         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
11746         made from AOT code through the PLT table.
11747
11748         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
11749         holding the plt offset when a call is made to the aot plt trampoline.
11750         
11751 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11752
11753         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
11754         amd64 AOT support.
11755
11756         * Makefile.am (common_sources): Fix build breakage.
11757
11758         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
11759         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
11760         intra-assembly calls if possible.
11761         
11762         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
11763
11764         * mini-trampolines.c: Handle PLT entries.
11765
11766         * mini.c: Avoid creating a GOT var for calls.
11767
11768         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
11769         from mscorlib code.
11770
11771         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
11772         from mscorlib code.
11773
11774         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
11775         AOT code.       
11776
11777         * mini.h: Bump AOT file format version.
11778         
11779         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
11780         covers more cases.
11781
11782 2006-04-25  Martin Baulig  <martin@ximian.com>
11783
11784         * driver.c: Disable copyprop, consprop and inline when running
11785         inside the debugger.
11786
11787 2006-04-25  Martin Baulig  <martin@ximian.com>
11788
11789         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
11790         with `get_current_thread' and added `detach'.
11791         (MonoDebuggerMetadataInfo): Added `thread_size',
11792         `thread_tid_offset', `thread_stack_ptr_offset' and
11793         `thread_end_stack_offset'.
11794
11795 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11796
11797         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
11798         aot-runtime.c.
11799
11800         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
11801         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
11802
11803         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
11804
11805         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
11806
11807         * aot.c: Add support for ADJUSTED_IID.  
11808
11809 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11810
11811         * aot.c (emit_method_order): Don't align method_order_end.
11812
11813         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
11814         the interface ID changes.
11815
11816 2006-04-21  Dick Porter  <dick@ximian.com>
11817
11818         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
11819         cleaning up a thread.  Fixes the new part of bug 77470.
11820
11821 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
11822
11823         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
11824         to managed wrapper.
11825                      
11826 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
11829         
11830         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
11831         SIGSEGV. Fixes #78072.
11832
11833         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
11834         unregister our SIGABRT handler.
11835
11836 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
11837
11838         * mini.c: Disabled inline where it can alter the call stack in a
11839         way visible from managed code.
11840         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
11841         default.
11842
11843 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
11844
11845         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
11846         on other platforms. Fixes #78089.
11847
11848 2006-04-13  Martin Baulig  <martin@ximian.com>
11849
11850         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
11851         determine whether we're inside the debugger.
11852
11853         * debug-debugger.h
11854         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
11855
11856 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11857
11858         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
11859         handler clauses. Fixes #78024.
11860
11861         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
11862         in the CALL_MEMBASE opcodes. Fixes #78088.
11863         (mono_arch_get_vcall_slot_addr): Ditto.
11864
11865 2006-04-10  Martin Baulig  <martin@ximian.com>
11866
11867         * debug-debugger.c: The thread handling code has now been moved
11868         into ../metadata/threads.c.
11869
11870 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * driver.c (mono_main): Fix --with-gc=none build.
11873
11874         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
11875         (mono_spillvar_offset_float): Ditto.
11876         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
11877         hreg, not when its !global, since on ia64, there is a third category: stacked
11878         registers.      
11879
11880 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
11881
11882         * mini.c: set MonoInst->klass for load field address and a few other
11883         places.
11884
11885 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11886
11887         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
11888
11889 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11890
11891         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
11892         the branch opt changes.
11893
11894 2006-04-06  Dick Porter  <dick@ximian.com>
11895
11896         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
11897         
11898         * wapihandles.c (mini_wapi_seminfo): 
11899         * driver.c (mono_main): Add semaphore info option
11900
11901 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
11902
11903         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
11904         branch optimization changes. Fixes #78009.
11905
11906 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11907
11908         * mini.c: ignore accessibility of methods in managed->native wrappers.
11909
11910 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
11911
11912         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
11913         
11914         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
11915
11916 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
11917
11918         * mini.c: Modify the branch optimizations to preserve the invariant that
11919         the entries inside the in_bb and out_bb arrays are unique.
11920         (mono_unlink_bblock): Avoid creation of new arrays.
11921
11922 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
11923
11924         * mini.c (mono_unlink_bblock): Fix regression caused by previous
11925         change (#77992).
11926
11927 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
11928
11929         * mini.c (optimize_branches): Remove the "optimizations" in
11930         the cbranch1/cbranch2 -> branch cases which were causing several
11931         problems in the past. Fixes #77986.
11932
11933 2006-03-31  Chris Toshok  <toshok@ximian.com>
11934
11935         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
11936         default optimizations :(
11937
11938 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
11939
11940         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
11941         branch.
11942
11943 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
11944
11945         * local-propagation.c: Added comments to structs and removed
11946         "Mono" prefixes from local tree mover types.
11947
11948 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
11949
11950         * Makefile.am (arch_sources): Define this for each architecture so 
11951         libmono_la_SOURCES is defined in one place.
11952
11953 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
11954
11955         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
11956         from handles/.
11957
11958 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
11959
11960         * driver.c: print the GC name supplied by configure.
11961
11962 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
11963
11964         * local-propagation.c: Added tree mover, and moved here all the
11965         local propagation code from mini.c
11966         * mini.c: Added support for treeprop, and moved all the local
11967         propagation code to local-propagation.c
11968         * mini.h: Added support for treeprop
11969         * driver.c: Added support for treeprop, enabled consprop, copyprop,
11970         treeprop, inline and deadce by default
11971         * Makefile.am: Added local-propagation.c
11972
11973 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
11976
11977 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
11978
11979         * debug-debugger.c: make it compile without the Boehm GC.
11980
11981 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11982
11983         * mini.c: fixed issue with mismatch when an icall is registered
11984         with multiple names but same address.
11985
11986 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11987
11988         * declsec.c, mini-exceptions.c: use write barrier to set reference
11989         fields of managed objects.
11990
11991 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11992
11993         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
11994         (can_access_internals): Fix a warning.
11995
11996         * mini.c (print_method_from_ip): Rename this to 
11997         mono_print_method_from_ip so it gets exported.
11998
11999         * trace.c: Deal with strings inside StringBuilder's containing garbage
12000         and fix memory leaks. Fixes #77848.
12001
12002 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12003
12004         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
12005         fixes #77787.
12006
12007 2006-03-16 Neale Ferguson <neale@sinenomine.net>
12008         
12009         * mini-s390.c: Remove OP_X86_TEST_NULL.
12010
12011 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12012
12013         * mini.c: use the correct GetHashCode() for the moving collector.
12014
12015 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
12016
12017         * liveness.c: Regalloc spill cost tuning.
12018
12019 2006-03-15 Neale Ferguson <neale@sinenomine.net>
12020         
12021         * mini-s390x.h: Correct S390_LONG macro.
12022
12023         * mini-s390x.c: Cleanup unused code.
12024
12025 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12026
12027         * jit-icalls.h: New file.
12028
12029         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
12030         icalls and include that instead of including jit-icalls.c.
12031
12032         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
12033         OP_X86 opcodes.
12034
12035 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12036
12037         * mini.c: when checking for member accessibility, also check for
12038         friend assemblies and for explicit interface implementations.
12039
12040 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12041
12042         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12043
12044         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12045
12046         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12047         common cases are done first.    
12048
12049         * mini-ops.h: Only define platform specific opcodes on the given platform.
12050
12051         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12052         branch.
12053         
12054 2006-03-14  Martin Baulig  <martin@ximian.com>
12055
12056         Revert Paolo's change from r57348:
12057
12058         * mini.h: don't use gboolean for bitfields.
12059         * mini.c: verifier changes for fields and methods accessibility.
12060
12061 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12062
12063         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12064
12065         * mini-s390x.c: Fix conv_r_un.
12066
12067         * cpu-s390, cpu-s390x.md: Fix lengths.
12068
12069 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12070
12071         * mini.c: nested types have access to all the nesting
12072         levels, not just the enclosing types.
12073
12074 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12075
12076         * mini.c: added a few more verification checks.
12077
12078 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
12079
12080         * liveness.c: Merge optimizations from the linear-il branch.
12081
12082 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12083
12084         * mini-ia64.c (emit_call): Add a comment.
12085
12086         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
12087
12088         * tramp-ia64.c: Fix some warnings.
12089
12090 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12091
12092         * mini.h: don't use gboolean for bitfields.
12093         * mini.c: verifier changes for fields and methods accessibility.
12094
12095 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12096
12097         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
12098         lazy icall wrapper changes.
12099
12100         * dominators.c: Replace all the dominator algorithms with faster
12101         ones from the linear-il branch.
12102
12103         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12104         the mempool.
12105
12106         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12107         common cases are done first.
12108
12109         * mini-amd64.c: Fix some warnings.
12110
12111         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12112         from the mempool.
12113
12114         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12115         added code.
12116
12117         * mini.h: Add a missing prototype.
12118
12119 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12120
12121         * mini.c: Compile icall wrappers lazily.
12122
12123         * mini-codegen.c: Use printf instead of g_print since its much faster.
12124
12125         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12126         function.
12127
12128         * mini.c (optimize_branches): Cache the negative result from 
12129         remove_block_if_useless ().
12130
12131         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12132         Also fix some bblock linking issues.
12133
12134         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12135         assembly files.
12136
12137         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12138
12139         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12140         accessed fields first, for better cache behavior.
12141         
12142 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12143
12144         * mini.c: speedup IList<T> array accesses.
12145
12146 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12149         inline_costs counter. Fixes #77190.
12150
12151 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12154         trace messages. Fixes #77706.
12155
12156 2006-03-04  Martin Baulig  <martin@ximian.com>
12157
12158         * tramp-amd64.c, tramp-x86.c
12159         (mono_debugger_create_notification_function): Use
12160         mono_global_codeman_reserve() to allocate a buffer at runtime and
12161         return it.
12162
12163         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12164
12165         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12166         notification function at runtime and then call `initialize' in the
12167         `MONO_DEBUGGER__debugger_info' vtable.
12168
12169 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12170
12171         * iltests.il: Fix a visibility problem.
12172
12173 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12174
12175         * driver.c, mini.c: add hooks for the counters API.
12176
12177 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12178
12179         * driver.c: show disabled options.
12180
12181 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12182
12183         * linear-scan.c: always use cost-driven selection.
12184
12185 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12186
12187         * jit-icalls.c (helper_compile_generic_method): Revert change from
12188         2006-02-24.
12189
12190 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12191
12192         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12193
12194 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12195
12196         * inssel.brg: style fixes, mostly to force the updated monoburg
12197         to run for people using svn.
12198
12199 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12200
12201         * mini.c: match monoburg changes.
12202
12203 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12204
12205         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12206         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12207         declaration in the header file.
12208
12209 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12210
12211         * helpers.c: reduce relocations and mem usage.
12212
12213 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12214
12215         * mini.h, mini-codegen.c: disable logging features if
12216         requested by configure.
12217
12218 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12219
12220         * mini.c: tiny verifier changes.
12221
12222 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12223
12224         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12225         cpu-pentium.md: stack alignment changes for osx/x86,
12226         partially from Geoff Norton <gnorton@customerdna.com>.
12227
12228 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12229
12230         * jit-icalls.c (helper_compile_generic_method): Update to changes
12231         in metadata/class.c.
12232
12233 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12234         
12235         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12236         
12237         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12238         interface calls with large offsets.
12239
12240 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12241
12242         * jit-icalls.c (helper_compile_generic_method): Document the
12243         special-case we depend on so that we can inflate the method twice
12244         with the same context with no bad side-effects.
12245
12246 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12247
12248         * mini-x86.c, mini-amd64.c: fix for case when xen support
12249         is disabled.
12250
12251 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12252
12253         * mini-x86.c, mini-amd64.c: generate code to access tls items
12254         in a faster way for Xen systems.
12255
12256 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12257
12258         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12259         updates and compilation fixes for the OSX/x86 port, mostly from
12260         Geoff Norton <gnorton@customerdna.com>.
12261
12262 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12263
12264         * inssel.brg: faster interface call implementation
12265         to sync with the interface_offsets MonoVTable changes.
12266
12267 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12268
12269         * mini.c: more verification checks.
12270
12271 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12272
12273         * mini.c: added a few more verification checks.
12274
12275 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12276
12277         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12278         facility on the processor and use it if available.
12279
12280 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12281
12282         * driver.c, aot.c, mini.c: throw exception if the IL code is
12283         invalid or unverifiable.
12284
12285 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12286
12287         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12288         m.StructField.
12289
12290 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12291
12292         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12293
12294 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12295
12296         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12297         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12298         handling of instantiated generic valuetypes.
12299
12300 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12301
12302         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12303         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12304         instead.
12305
12306         * generics.2.cs: Revert the nullable reftypes tests.
12307
12308 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12309
12310         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12311         using __builtin_frame_address (1) as it doesn't work in the presence
12312         of optimizations. Hopefully fixes #77273.
12313
12314         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12315         -> generics.cs change as it doesn't work with some automake versions.
12316
12317 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12318
12319         * mini.c: handle systems that sue a different way to
12320         retrieve the stack address of the current thread.
12321
12322 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12325         it specially in the makefile.
12326
12327         * generics.2.cs: Add tests for nullable reference types.
12328
12329 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12330
12331         * mini.c: always handle the case when mono_jit_init()
12332         is called in a thread different from the main thread,
12333         confusing libgc (bug #77309).
12334
12335 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12336
12337         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12338
12339 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12340
12341         * mini.c: change optimize_branches () to use a single loop
12342         and introduce a new optimization to simplify some range checks.
12343
12344 2006-02-03  Martin Baulig  <martin@ximian.com>
12345
12346         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12347         and merged with debugger_thread_manager_add_thread().
12348         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12349         inform the debugger about the main thread.
12350
12351 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12352
12353         * basic.cs: Add test for div.un/rem.un constant folding.
12354
12355 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12356
12357         * cpu-s390x.md: correct int_xor_imm length
12358
12359 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12360
12361         * generics.2.cs: New test for #77442.
12362
12363         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12364         #77442.
12365
12366 2006-02-02  Martin Baulig  <martin@ximian.com>
12367
12368         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12369         <mono/metadata/mono-debug-debugger.h>   
12370
12371         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12372
12373 2006-02-02  Martin Baulig  <martin@ximian.com>
12374
12375         * debug-debugger.h: New header file for debug-debugger.c.
12376
12377         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12378         function is a separate thread anymore; add support for attaching.
12379
12380 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * tramp-x86.c: Fix a warning.
12383
12384 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12385
12386         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12387         on very large methods.
12388
12389         * aot.c (load_patch_info): Fix a warning.
12390
12391 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12392
12393         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12394         mini-ops.h: alu membase optimizations.
12395
12396 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12397
12398         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12399         to speedup StringBuilder.
12400
12401 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12402
12403         * dominators.c (mono_compute_natural_loops): Fix detection of
12404         loop body start blocks.
12405
12406         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12407
12408 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12411         #75145.
12412
12413 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12414
12415         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12416
12417 2006-01-25  Martin Baulig  <martin@ximian.com>
12418
12419         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12420         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12421         started to cleanup this file a little bit.
12422
12423 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12424
12425         * mini.c: optimize a codepath frequently happening in generics code.
12426
12427 2006-01-23  Martin Baulig  <martin@ximian.com>
12428
12429         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12430
12431         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12432         functions directly.
12433
12434         * driver.c: debug-debugger.c is only available if
12435         `MONO_DEBUGGER_SUPPORTED' is defined.   
12436
12437 2006-01-23  Martin Baulig  <martin@ximian.com>
12438
12439         * debug-debugger.c: Only enable this on platforms where the Mono
12440         Debugger is working (x86 and x86_64).
12441
12442 2006-01-21  Martin Baulig  <martin@ximian.com>
12443
12444         The Mono Debugger is now using the normal `mono' instead of the
12445         `mono-debugger-mini-wrapper' when executing managed code.
12446
12447         * debug-debugger.c: New file; previously known as
12448         debugger/wrapper/wrapper.c.
12449
12450         * debug-mini.c (mono_init_debugger): Removed.
12451
12452         * driver.c (mono_main): Added new `--inside-mdb' command line
12453         argument which is used when running inside the debugger.
12454
12455 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12456
12457         * liveness.c (mono_analyze_liveness): Remove some unused data
12458         structures.
12459
12460 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12461
12462         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12463
12464 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12467         depends on implementation details of monobitset.
12468
12469         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12470         Fixes #77271.
12471
12472 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12473
12474         * liveness.c: Update after monobitset changes.
12475
12476 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12477
12478         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12479
12480 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12481
12482         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12483
12484         * mini-s390x.c: Remove warning messages.
12485
12486 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12487
12488         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12489
12490 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12491
12492         * generics.2.cs: Add ldelem/stelem_any test.
12493
12494 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12495
12496         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12497
12498 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12499
12500         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12501         
12502 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12503
12504         * generics.2.cs: Reenable vtype tests.
12505
12506         * inssel-x86.brg: Remove an icorrect valuetype rule.
12507
12508 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12509
12510         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12511         initial support for OP_ABS.
12512
12513 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12514
12515         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12516
12517 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12518
12519         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12520         conversion and implement LADD/LSUB.
12521
12522         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12523         architectures.
12524
12525 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12526
12527         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12528
12529         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12530         architectures.
12531
12532 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12533
12534         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12535         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12536         (stack walk problem).
12537
12538 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * aot.c (mono_aot_load_method): Fix a warning.
12541
12542 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12543
12544         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12545
12546 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12547
12548         * iltests.il: Add test for #77148.
12549
12550         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12551         #77148.
12552
12553 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12554
12555         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12556
12557 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12558
12559         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12560         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12561
12562         * basic-long.cs: Add lconv-to-r4/r8 tests.
12563
12564 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12567
12568         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12569         here as on other archs.
12570
12571 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12572
12573         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12574
12575 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12576
12577         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12578         
12579         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12580
12581         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12582         instrument_prolog; Add memory_barrier instruction.
12583
12584 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12587
12588 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12589
12590         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12591
12592         * aliasing.c inssel.brg: Fix warnings.
12593
12594         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12595         could skip initialization of some parts of memory.
12596
12597         * mini.c mini-ia64.c: Fix warnings.
12598
12599         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12600
12601 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12602
12603         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12604         a crash seen on sparc.
12605
12606         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12607         
12608         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12609
12610 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12611
12612         * mini-ops.h: Add s390_backchain instruction
12613
12614         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12615
12616         * cpu-s390.md: Add s390_backchain instruction
12617
12618         * mini-s390.c: Significant ABI changes
12619
12620         * mini-s390.h: Cater for zero length structures
12621
12622 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12623
12624         * mini-s390.c: ABI fixes
12625
12626         * inssel-s390.brg: Remove debug statements
12627
12628         * cpu-s390.md: Fix length of ATOMIC_xx operations
12629
12630 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12631
12632         * basic-float.cs: Add float<->long conversion tests.
12633
12634 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12635
12636         * mini-s390.c: Fix LOCALLOC processing.
12637
12638         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12639
12640 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12641
12642         * iltests.il: Add tests for some opcodes not covered by the other
12643         tests.
12644
12645 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12646
12647         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12648         register loading for Tail processing; Correct trace output.
12649
12650         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12651
12652         * cpu-s390.md: Correct size of jmp instruction. 
12653
12654 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12655
12656         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12657
12658 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12659
12660         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12661           Bring s390 up to current level.
12662
12663 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12664
12665         * generics.2.cs: Disable the newly added tests as they do not work yet.
12666         
12667         * generics.2.cs: Add valuetype tests.
12668
12669 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12670
12671         * basic-long.cs: Add i4->u8 test.
12672
12673         * objects.cs: Add tests for JIT intrinsic.
12674
12675         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12676         optimizations lost by a mistake.
12677
12678 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12679
12680         * basic-long.cs: Remove a test moved to objects.cs.
12681
12682         * arrays.cs: Add more array tests.
12683
12684 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * arrays.cs: Add new tests for multi-dimensional arrays.
12687
12688 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12689
12690         * Makefile.am (test_sources2): Add generics.2.cs.
12691         (EXTRA_DIST): Add test_sources2.
12692
12693 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12694
12695         Support for boxing and unboxing nullable types as well as the
12696         isinst operation on nullables, per the CLI ammendment.
12697
12698         * inssel.brg (CEE_ISINST): Special case for nullable
12699
12700         * mini.c (handle_unbox_nullable): new method
12701         (handle_box): Special case for nullable types
12702         (mono_method_to_ir): Call handle_unbox_nullable in correct
12703         places.
12704
12705         * generics.2.cs: New test suite
12706
12707         * Makefile.am: Support for regression tests with generics.
12708
12709 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12710
12711         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12712         allocated to registers. Fixes #76800.
12713
12714 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12715
12716         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12717
12718 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12719
12720         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12721         of platforms.
12722
12723 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12724
12725         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12726         objects.cs.
12727
12728         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12729         
12730         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12731 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12732
12733         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12734         single precision before storing to a single precision location.
12735
12736 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12737
12738         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12739
12740 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12741
12742         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12743         correct files.
12744
12745         * basic.cs: Remove test_0_byte_compares test which was moved to
12746         objects.cs a long time ago.
12747
12748 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
12749
12750         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12751
12752 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
12753
12754         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
12755         handlers are called.
12756
12757         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
12758         throwing code.
12759
12760          * mini-ia64.c: Add support for the throw->branch exception 
12761         optimization.   
12762
12763         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
12764
12765 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12766
12767         * mini.c: Enabled "fastpath" deadce :-)
12768         
12769 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12770
12771         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
12772         alias analysis pass to support it.
12773         * mini.h: Likewise.
12774         * ssa.c: Likewise.
12775         * liveness.c: Likewise (liveness computation can use aliasing
12776         information to be more accurate).
12777         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
12778         moreover made so that "--compile-all" uses the given optimization
12779         flags and not the default ones.
12780         * aliasing.c: Alias analysis (new file).
12781         * aliasing.h: Likewise.
12782         * Makefile.am: added "aliasing.c" and "aliasing.h".
12783         
12784 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
12787         OP_L opcodes.
12788
12789 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
12790
12791         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
12792         fp >= end_of_stack exit condition, as it is not needed, and it might
12793         become true for fp eliminated frames.
12794
12795 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12796
12797         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
12798         coded offsets.
12799
12800 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
12801
12802         * mini-arm.c: fixed alignment of doubles/longs to match
12803         the C ABI (bug #76635).
12804
12805 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
12806
12807         * aot.c: fix compilation with --enable-minimal=aot.
12808
12809 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
12810
12811         * mini-arm.c: fixed compatibility with the new
12812         floating point emulator package for compares.
12813
12814 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
12815
12816         * mini.c : reverted sig->pinvoke changes (r51396-51397).
12817
12818 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
12819
12820         * mini-exceptions.c (print_stack_frame): Output to stderr.
12821         (mono_handle_native_sigsegv): Ditto.
12822
12823 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12824
12825         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
12826         OP_LCONV_TO_OVF_I implementation.
12827
12828         * mini-amd64.c: Add support for the throw->branch exception 
12829         optimization.
12830
12831         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
12832         when the catch clause catches a more general exception, i.e. Object.
12833
12834 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * cpu-ia64.md: Remove unused opcodes.
12837
12838         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
12839         specific defines for architectures defining USE_SIGACTION.
12840
12841         * mini-ia64.c: Fix some warnings.
12842
12843         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
12844         version seemed to skip a frame.
12845
12846 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12847
12848         * mini.c: Clean up the usage of sig->pinvoke flag. Now
12849         only calls which are made to native code use this flag.
12850
12851 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12852
12853         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
12854         varargs methods as well.
12855         
12856         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
12857         which have save_lmf set. Reorganize methods prologs a bit.
12858
12859         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
12860         debugger to the proper place.
12861
12862 2005-10-29  Martin Baulig  <martin@ximian.com>
12863
12864         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
12865         when running inside the debugger until the debugger has support
12866         for it.
12867
12868 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12869
12870         * mini.h: Fix a warning.
12871
12872 2005-10-24  Miguel de Icaza  <miguel@novell.com>
12873
12874         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
12875         we expose publicly, this returns the string.
12876
12877 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
12878
12879         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
12880         with fp elimination.
12881
12882 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12883
12884         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
12885         native stacktrace using the glibc 'backtrace' function if available.
12886
12887 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
12888
12889         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
12890
12891         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
12892         handle SIGSEGVs received while in native code.
12893
12894         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
12895         code, call mono_handle_native_sigsegv which will abort the runtime
12896         after printing some diagnostics, instead of converting it into a
12897         confusing NullReferenceException.
12898
12899 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12900
12901         * cpu-pentium.md: Remove unused opcodes.
12902
12903 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
12904
12905         * mini-amd64.h (MonoLMF): Add rsp field.
12906
12907         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
12908         the lmf too.
12909
12910 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
12911
12912         * mini-codegen.c (get_register_spilling): Fix some warnings.
12913
12914 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
12915
12916         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
12917         elimination during exception handling. Enable fp elimination by
12918         default.
12919
12920         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
12921         elimination.
12922
12923 2005-10-16  Martin Baulig  <martin@ximian.com>
12924
12925         * mini-exceptions.c
12926         (mono_debugger_run_finally): New public method for the debugger.
12927
12928 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12929
12930         * debug-mini.c (mono_debug_init_method): Fix warning.
12931
12932         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
12933         the 'exname' parameter const to fix some warnings.
12934
12935 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
12936
12937         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
12938         introduced by the previous patch.
12939
12940 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
12941
12942         * basic-float.cs: Add test for precision of float arithmetic.
12943
12944         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
12945         when loading/storing single values from/to memory.
12946
12947         * mini.c (mono_jit_compile_method_with_opt): Create the function
12948         pointers in the correct domain.
12949
12950 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12951
12952         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
12953         introduced by previous patch.
12954         
12955         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
12956         when out_filter_idx is NULL.
12957
12958         * mini-exceptions.c: Don't run filter clauses twice during exception
12959         handling. Fixes #75755.
12960
12961 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12962
12963         * aot.c: Add support for ldflda wrappers.
12964
12965         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
12966         #75902.
12967
12968 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
12969
12970         * mini.c, mini.h: do not consider exception handlers blocks when
12971         setting up interface variables.
12972
12973 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
12974
12975         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
12976
12977 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
12978
12979         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
12980         causes a regression.
12981
12982         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
12983
12984 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
12985
12986         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
12987         of the OP_P definitions.
12988
12989         * TODO: Add a proposal for dealing with the CEE/OP mess.
12990
12991         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
12992         optimizations from the x86 port.
12993
12994         * cpu-amd64.md: Ditto.
12995
12996         * basic.cs basic-long.cs: Add tests.
12997
12998 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
12999
13000         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
13001         Patrik Torstensson's implementation of my exception-handling
13002         optimization idea, when the exception object is not used
13003         (bug #62150).
13004
13005 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
13006
13007         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
13008         of the mul_imm optimizations from the old jit.
13009
13010 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
13011
13012         * mini.c, liveness.c: patch by Patrik Torstensson and
13013         Zoltan Varga to improve performance in methods with
13014         exception clauses.
13015
13016 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * driver.c: Remove 'Globalization' entry from --version.
13019
13020 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
13023         there is a profiler interested in JIT events.
13024
13025         * aot.c: Load profile files produced by the AOT profiling module, and
13026         reorder methods based on the profiling info. Add a 'method_order' table
13027         to the AOT file to make mono_aot_find_jit_info work with the reordered
13028         methods.
13029
13030         * mini.h: Bump AOT file version info.
13031
13032 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
13033
13034         * mini-arm.h: work around what looks like a gcc bug when optimizations
13035         are enabled.
13036
13037 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13038
13039         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13040         conditionals.  Use ...
13041         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13042
13043 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13044
13045         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13046         to determine the amount of memory to copy when passing valuetypes.
13047
13048         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13049         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13050
13051 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13052
13053         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13054         information about aot.
13055
13056 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13057
13058         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13059         macros. This will allow a deadlock debugger to easily be plugged
13060         in.
13061
13062 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13063
13064         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13065
13066 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13067
13068         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13069         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13070         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13071         ($(arch_built)) [CROSS_COMPILING]: Error out.
13072
13073 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13074
13075         * aot.c: Add support for the no_special_static flag for classes.
13076
13077 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13078
13079         * Reapply reverted patches.
13080
13081         * *: Revert r50174 as well.
13082
13083         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13084
13085 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13086
13087         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
13088
13089 2005-09-23  Miguel de Icaza  <miguel@novell.com>
13090
13091         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
13092         part of the SIG_HANDLER_SIGNATURE.  
13093
13094 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13095
13096         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
13097         statistics.
13098
13099         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13100         introduced by previous patch.
13101
13102 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13103
13104         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13105         saved registers too.
13106
13107         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13108         upon the information returned by get_call_info ().
13109         
13110         * mini-x86.c (add_float): Fix stack size calculation.
13111         (mono_arch_call_opcode): Rewrite this so it works based up the
13112         information returned by get_call_info ().
13113         (mono_arch_get_this_vret_args): Ditto.
13114
13115 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13116
13117         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13118         in cinfo to determine the registers which need to be used.
13119
13120 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13121
13122         * driver.c (mono_main): Add --server and --desktop flags. 
13123
13124 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13125
13126         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13127         registers as global registers.
13128
13129         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13130         longer needed with the new register allocator.
13131
13132         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13133
13134         * cpu-ia64.md: Remove unused opcodes.
13135         
13136         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13137         
13138 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13139
13140         * cpu-amd64.md: Remove unused opcodes.
13141
13142         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13143         needed with the new register allocator.
13144
13145         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13146         reg-reg moves.
13147
13148 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13149
13150         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13151
13152 2005-09-16  Martin Baulig  <martin@ximian.com>
13153
13154         * exceptions-amd64.c
13155         (throw_exception): Don't call mono_debugger_throw_exception() if
13156         we're a rethrow - see the FIXME in the code.
13157
13158 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13159
13160         * mini.c (mono_init_exceptions): This only works on some architectures.
13161         
13162 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13165         on ia64.
13166
13167         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13168
13169         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13170         now in mini-exceptions.c.
13171
13172 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13173
13174         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13175         now in mini-exceptions.c.
13176
13177 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13178
13179         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13180         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13181
13182         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13183         code into mini-exceptions.c. Add some assertions to it.
13184
13185 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13186
13187         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13188         (<software@solmersa.com>). Fix as errors on windows.
13189
13190 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13191
13192         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13193         method info into the LMF.
13194
13195 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13196         
13197         * mini-ia64.c: Add proper unwind info for method epilogs.
13198
13199         * exceptions-ia64.c: Add some code to help debugging.
13200         
13201         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13202
13203         * mini-exceptions.c: Fix warning.
13204
13205 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13206
13207         * mini.c: Really fix build.
13208
13209         * mini-x86.c mini-amd64.c: Fix build.
13210
13211 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13212
13213         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13214
13215         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13216         some Interlocked methods as intrinsics.
13217
13218         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13219         for Thread methods as well.
13220
13221         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13222
13223         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13224
13225         * mini-ia64.c mini-x86.c mini-amd64.c 
13226         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13227         OP_MEMORY_BARRIER.
13228         
13229         * mini.c (mono_init_exceptions): Fix build breakage.
13230
13231 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13232
13233         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13234         of instructions. Use the new ia64_unw_op macros for emitting unwind
13235         info.
13236
13237         * mini.c (mono_init_exceptions): Initialize exception handling
13238         related trampolines at startup.
13239
13240 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13241
13242         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13243
13244 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13245
13246         * mini.c: Handle type loading errors gracefully during compilation and
13247         throw the appropriate exception.
13248
13249 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13250
13251         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13252         for the mono binary.
13253
13254 2005-09-09  Martin Baulig  <martin@ximian.com>
13255
13256         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13257         the release.
13258
13259 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13260
13261         * mini-arm.h: use emulation for conv.r.un for the release.
13262
13263 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13264
13265         * mini-arm.c, objects.cs: more fixes and tests for them.
13266
13267 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13268
13269         * mini-arm.c: align structures to at least 4 bytes to be able
13270         to keep our current optimized memcpy.
13271
13272 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13273
13274         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13275
13276 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13277
13278         * mini.c: ignore SIGPIPE.
13279
13280 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13283
13284         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13285
13286 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13287
13288         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13289
13290 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13291
13292         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13293         exception handling support.
13294         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13295         patch by Brian Koropoff <briank@marakicorp.com>).
13296
13297 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13298
13299         * mini.c: revert another 'optimization' which breaks when
13300         items on the eval stack need to be saved at a basic block end
13301         (bug #75940).
13302
13303 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13304
13305         * jit-icalls.c: for arrays, ensure we always provide
13306         lower bounds.
13307
13308 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13309
13310         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13311         
13312         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13313
13314 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13315
13316         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13317         arguments in their original register.
13318
13319 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13322         memset/memcpy.
13323
13324         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13325         when ssapre is enabled.
13326
13327         * inssel-long.brg: Fix bug in previous patch.
13328
13329         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13330         multiplication by a constant.
13331
13332 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13333
13334         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13335         icc.
13336
13337         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13338         saving registers.
13339
13340 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13341
13342         * inssel-arm.brg: apply changes tested by Brian Koropoff
13343         <briank@marakicorp.com>.
13344
13345 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13346
13347         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13348         
13349 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13352         to the same register if dreg is just a base register.
13353         (print_ins): Improve printing of membase opcodes.
13354
13355         * inssel-x86.brg: Add optimized ldind(reg) rules.
13356
13357         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13358
13359 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13360
13361         * mini.c: when running under valgrind, set the stack bottom for
13362         the GC at the actual approximate stack for the app (fixes running
13363         mono with valgrind).
13364
13365 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13366
13367         * mini.c: do no break at the first valuetype to init found
13368         (fixes bug #75791).
13369
13370 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13371
13372         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13373
13374 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13375
13376         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13377
13378 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13379
13380         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13381
13382 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13383
13384         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13385
13386         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13387         code.
13388
13389         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13390         code.
13391
13392         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13393         methods.
13394
13395 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13396
13397         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13398
13399 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13400
13401         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13402         in the tail recursion optimization.
13403
13404         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13405         debug info into the assembly file.
13406
13407         * iltests.il: Add test for filter regions.
13408
13409         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13410         initial stack of filter regions. Fixes #75755.
13411
13412 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13413
13414         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13415         stack requirements.
13416
13417 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13418
13419         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13420         the check for an already compiled method on non-ia64 platforms.
13421         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13422         proper domain.
13423
13424         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13425
13426         * inssel-x86.brg: Add some optimized call rules.
13427
13428 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13429
13430         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13431         method here.
13432
13433         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13434         mono_arch_patch_delegate_trampoline.
13435
13436         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13437
13438         * mini-trampolines.c: Fix build.
13439
13440         * mini-amd64.h: Add delegate trampolines.
13441
13442         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13443
13444         * inssel-amd64.brg: Add optimized call rules.
13445         
13446         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13447
13448         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13449
13450 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13451
13452         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13453         change.
13454
13455         * mini-ia64.c: Remove LMF fixmes.
13456
13457         * mini-ia64.h: Remove most fields from LMF.
13458
13459         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13460
13461         * mini-trampolines.c: Add support for IA64 function descriptors.
13462
13463         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13464         for IA64 function descriptors.
13465
13466 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13467
13468         * tramp-arm.c: patch the vtable for virtual calls. Added
13469         support code to register/unregister the LMF.
13470         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13471         more LMF work.
13472
13473 2005-08-19  Dick Porter  <dick@ximian.com>
13474
13475         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13476         bit value if needed.
13477
13478 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13479
13480         * mini.c (mini_get_method): Move handling of wrapper data here.
13481
13482         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13483
13484         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13485         virtual.
13486
13487         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13488         bblock->code does not remain empty.
13489
13490 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13491
13492         * arrays.cs: Add regression test for #75832.
13493
13494         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13495         rules. Fixes #75832.
13496
13497         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13498         instruction scheduling.
13499
13500 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13501
13502         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13503
13504 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13505
13506         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13507
13508         * mini-codegen.c: Fix VC build.
13509
13510         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13511
13512 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13513
13514         * mini.h: fix signature for mono_register_opcode_emulation.
13515
13516 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13517
13518         * mini.c: Get rid of most of the helper_sig_... constants using
13519         mono_create_icall_signature ().
13520
13521 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13522
13523         * jit-icalls.c (helper_ldstr): New helper function.
13524
13525         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13526
13527         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13528         throw, load the string using a helper call instead of creating a string object.
13529
13530         * aot.c: Update after LDSTR changes.
13531
13532         * mini.h: Bump AOT file version.
13533         
13534         * aot.c: Save class size info into the AOT file. Print more statistics during
13535         compilation.
13536
13537         * mini.h: Bump AOT file version.
13538
13539         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13540         ordering of disasm cases. Fixes #74957.
13541
13542 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13543
13544         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13545         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13546         the generic code needed for the ARM port.
13547
13548 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13549
13550         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13551         inssel-arm.brg: more ARM features and fixes.
13552
13553 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13554
13555         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13556         ARM port work in progress.
13557
13558 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13559
13560         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13561
13562         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13563
13564         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13565
13566         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13567
13568         * *-ia64.*: Ongoing IA64 work.
13569         
13570         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13571
13572 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13573
13574         * TODO: Remove out-of-data todo stuff.
13575
13576         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13577         dead code.
13578
13579         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13580
13581         * mini.h: Bump corlib version.
13582
13583 2005-07-27  Martin Baulig  <martin@ximian.com>
13584
13585         * mini-codegen.c
13586         (create_copy_ins): Added `const unsigned char *ip' argument; set
13587         `copy->cil_code' from it.
13588
13589 2005-07-27  Martin Baulig  <martin@ximian.com>
13590
13591         * mini-exceptions.c (mono_handle_exception): Don't call
13592         mono_debugger_handle_exception() for filters.
13593
13594 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13595
13596         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13597         as well.
13598
13599 2005-07-26  Martin Baulig  <martin@ximian.com>
13600
13601         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13602
13603         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13604         helper_compile_generic_method() if the method is actually virtual
13605         and non-final.
13606
13607 2005-07-26  Martin Baulig  <martin@ximian.com>
13608
13609         * mini.c
13610         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13611         public; this is now accessed directly by the debugger.
13612         (mono_generic_trampoline_code): Removed.
13613
13614         * debug-mini.c
13615         (mono_debug_init_method): Also add interncalls and wrappers.
13616
13617 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13618
13619         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13620
13621 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13622
13623         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13624
13625 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13626
13627         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13628
13629 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13630
13631         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13632         getting TLS offsets on AMD64 too.
13633
13634 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
13635
13636         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13637
13638 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13639
13640         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13641         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13642
13643 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13644
13645         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13646
13647         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13648         to mini.c.
13649
13650         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13651         mono_sparc_is_virtual_call ().
13652         
13653         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13654
13655         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13656         trampoline parameters.
13657
13658         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13659         
13660         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13661         to mono_arch_get_vcall_slot_addr.
13662
13663         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13664         trampoline code.
13665
13666         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13667
13668 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13669
13670         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13671
13672 2005-07-19  Martin Baulig  <martin@ximian.com>
13673
13674         * exceptions-amd64.c (throw_exception): Call
13675         mono_debugger_throw_exception() here like we're doing it on i386.
13676
13677 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13678
13679         * mini-ia64.c: Add optimized TLS access support.
13680
13681 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13682
13683         * mini-exceptions.c: Ongoing IA64 work.
13684
13685         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13686
13687         * mini.c: Use the default optimization set when embedding. Fixes
13688         #75194.
13689
13690 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13691
13692         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13693         of trampolines to a separate file.
13694
13695         * mini-trampolines.c: New file.
13696
13697         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13698         separate file.
13699         
13700         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13701         amd64/ia64 code.
13702
13703         * mini-codegen.c: Fix cygwin build.
13704
13705 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13706
13707         * mini.c: Add some minor changes needed by the IA64 port.
13708
13709         * *-ia64.*: Ongoing IA64 work.
13710
13711 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13712
13713         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13714         trampolines into arch-independent and arch-dependent parts.
13715
13716         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13717
13718 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13719
13720         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13721
13722         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13723         the xp-regalloc-branch for amd64.
13724
13725         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13726         xp-regalloc-branch for x86.
13727
13728 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13729
13730         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13731
13732 2005-07-06  Martin Baulig  <martin@ximian.com>
13733
13734         * mini.c
13735         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13736         (mono_jit_runtime_invoke): Likewise.
13737
13738 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13739
13740         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13741         on x86 too.
13742         
13743         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13744         without loading their metadata. Reorganize the file format so exception handling+
13745         debug info is kept separate from normal method info. Create MonoJitInfo 
13746         structures for methods lazily.
13747
13748         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
13749         loading metadata.
13750         (x86_class_init_trampoline): Patch AOT class init trampolines too.
13751
13752         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
13753
13754         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
13755         in AOT code.
13756
13757         * mini.h: Bump AOT file version.
13758
13759 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
13760
13761         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13762
13763 2005-07-01  Raja R Harinath  <rharinath@novell.com>
13764
13765         * Makefile.am (check-local): Call semdel-wrapper.
13766
13767 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
13768
13769         * mini-x86.c: Revert the last change as it seems to break the build..
13770
13771 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13772
13773         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13774         
13775         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
13776
13777 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
13778
13779         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
13780         outside of the macro, so strange stuff doesn't happen with gcc4
13781         (NEW_AOTCONST_TOKEN): Likewise.
13782
13783 2005-06-28  Martin Baulig  <martin@ximian.com>
13784
13785         * mini.c (mini_class_is_system_array): New static method; use this
13786         instead of `klass->parent == mono_defaults.array_class' everywhere
13787         since this also works for the new generic array class.
13788
13789 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13790
13791         * inssel.brg: Remove warnings.
13792
13793 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
13794
13795         * mini-ia64.c: Ongoing IA64 work.
13796
13797         * basic-float.cs: Add float->i1 conversion test.
13798
13799         * iltests.il: Add conv.u4 test.
13800
13801 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
13802
13803         * inssel-long.brg: Fix bug caused by last change.
13804
13805 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
13806
13807         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
13808         BSDs.  Allows the x86 JIT to work on OSX86
13809
13810 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
13811
13812         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
13813         u4->i8 conversion.
13814
13815         * mini-ia64.c: Ongoing IA64 work.
13816
13817 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13818
13819         * mini-ia64.c: Ongoing IA64 work.
13820
13821         * driver.c: Clean up jit_code_hash as well when using --regression.
13822
13823         * inssel-long.brg: Fix long->i4/u4 conversion rules.
13824
13825         * basic-long.cs: Add tests for long->u4 conversion.
13826
13827 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
13828
13829         * mini.c: Take mono_get_domainvar out of macros. This makes sure
13830         that we do not depend on undefined C behavior: the order stuff
13831         gets evaluated within an expression. Fixes mono when compiled on
13832         GCC 4.
13833
13834 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
13835
13836         * *-ia64.*: Ongoing IA64 work.
13837
13838         * aot.c: Lower memory usage while loading AOT methods.
13839
13840         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
13841
13842         * mini.h: Bump AOT file format version.
13843
13844 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13845
13846         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
13847
13848 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
13849
13850         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
13851         not on callee assembly). Fixed some comments.
13852
13853 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
13854
13855         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
13856         it gets proper disassembly.
13857         (emit_method_info): Remove some dead code.
13858
13859         * mini.c (mini_method_compile): Allways allocate the GOT var in
13860         mono_method_to_ir for emulating opcodes.
13861
13862 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
13863
13864         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
13865         before freeing the code memory. Fixes #74990.
13866
13867         * objects.cs: Add regression test for #74992.
13868
13869         * liveness.c: Extend live ranges of arguments to the beginning of the
13870         method. Fixes #74992.
13871
13872         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
13873         so it points into the faulting instruction.
13874
13875 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
13876
13877         * jit-icalls.c (mono_imul_ovf): Add exception handling.
13878
13879         * *-ia64.*: Ongoing IA64 work.
13880
13881         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
13882
13883 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
13884
13885         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
13886
13887         * *-ia64.*: Ongoing IA64 work.
13888
13889 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
13890
13891         * basic-long.cs: Add tests for add/sub.ovf.
13892
13893         * basic.cs: Add tests for sub.ovf.
13894
13895         * *-ia64.*: Ongoing IA64 work.
13896
13897 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
13898
13899         * *-ia64.*: Ongoing IA64 work.
13900
13901         * basic.cs: Add conv.ovf.i4.un test.
13902
13903 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
13904
13905         * mini.c: (remove_block_if_useless) Fixed bug 75061.
13906         
13907 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13908
13909         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
13910
13911 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
13912
13913         * *-ia64.*: Ongoing IA64 work.
13914
13915 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13916
13917         * trace.[ch]:
13918         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
13919
13920 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
13921
13922         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
13923
13924 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
13925
13926         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
13927
13928         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
13929         of a call is callable by a near call.
13930
13931 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
13932
13933         * mini-ia64.c: Ongoing IA64 work.
13934
13935 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
13936
13937         * genmdesc.c: Make the generated array non-static.
13938
13939         * inssel-long.brg: Fix LSHR_IMM rule.
13940
13941         * *-ia64.*: Ongoing IA64 work.
13942
13943         * *-ia64.*: Ongoing IA64 work.
13944
13945 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13946
13947         * *-ia64.*: Ongoing IA64 work.
13948
13949         * *-ia64.*: Ongoing IA64 work.
13950         
13951         * mini-ia64.c: Ongoing IA64 work.
13952
13953         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
13954
13955 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13956
13957         * objects.cs basic-calls.cs: Move some tests to objects.cs.
13958         
13959         * objects.cs basic-long.cs: Move some tests to objects.cs.
13960
13961 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
13962
13963         * *-ia64.*: Ongoing IA64 work.
13964
13965         * iltests.il: Add a new test.
13966
13967         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
13968         newobj. Fixes #75042.
13969
13970 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
13971
13972         * *-ia64.*: Ongoing IA64 work.
13973         
13974         * *-ia64.*: Ongoing IA64 work.
13975         
13976         * *-ia64.*: Ongoing IA64 work.
13977
13978         * basic.cs objects.cs: Move tests accessing static variables as well.
13979
13980         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
13981
13982 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
13983
13984         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
13985
13986         * driver.c: Always print failed tests.
13987
13988         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
13989         frame pointer.
13990
13991         * *ia64*: Ongoing IA64 work.
13992
13993 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
13994
13995         * basic.cs: Add tests for add.ovf. Fix warnings.
13996
13997 2005-05-18  Miguel de Icaza  <miguel@novell.com>
13998
13999         * driver.c (mono_main): Avoid crash if no argument is passed to
14000         --break;  Do not use g_error, but f_printf.   And fix all other
14001         ocurrences of the same crash.
14002
14003 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
14004
14005         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
14006         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
14007         Fixes #74742.
14008
14009 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
14010
14011         * *-ia64.*: Add beginnings of IA64 backend.
14012
14013         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
14014
14015 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
14016
14017         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
14018         Fixes #74925.
14019
14020         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
14021
14022         * mini-amd64.c: Fix a warning.
14023
14024 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
14025
14026         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
14027         in float_neg. Fixes #74897.
14028
14029         * mini-amd64.c (emit_call): Fix another near call bug.
14030
14031 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
14032
14033         * declsec.c: Keep the appdomain information in the structure. Added a 
14034         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14035         value gets overwritten).
14036         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14037         an MonoAppDomain member to MonoSecurityFrame.
14038         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14039         used in the stack walk. Now use a MonoArray which grow (double) when
14040         it gets full.
14041
14042 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14043
14044         * mini.c: Re-enabled runtime cleanup, since running threads should
14045         now properly stop when exiting.
14046
14047 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14048
14049         * mini-codegen.c: New file contaning the arch-independent local
14050         register allocator. Not used by any architectures yet.
14051
14052         * mini.h linear-scan.c: Merge some changes from the 
14053         mini-xp-local-regalloc branch.
14054
14055 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14056
14057         * mini-amd64.c (emit_call): Fix calls to native functions when the
14058         runtime is compiled as a shared library. Fixes #74756.
14059
14060         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14061         on a literal field. Fixes #74751.
14062
14063 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14064
14065         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14066
14067 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14068
14069         * objects.cs: Add missing null casting test.
14070
14071 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14072
14073         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14074         in wrapper methods. Also rename 'address' variable to 'offset'.
14075
14076 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14077
14078         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
14079         warnings.
14080         
14081         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14082
14083         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14084         work on windows.
14085
14086 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14087
14088         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
14089
14090 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14091
14092         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
14093         just the last bytes.
14094
14095 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14096
14097         * aot.c (mono_compile_assembly): Fix warning.
14098
14099         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14100         by the _MSC_VER stuff.
14101
14102 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14103
14104         * inssel-long.brg: Fix #74588.
14105
14106         * cpu-amd64.md: Fix #74591.
14107
14108         * iltests.il: Add new regression tests.
14109
14110 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14111
14112         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14113         valuetype.
14114
14115 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14116
14117         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14118
14119         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14120         from Bill Middleton <flashdict@gmail.com>.
14121
14122 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14123
14124         * arrays.cs: Add new regression test. Fix warnings.
14125
14126 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14127
14128         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14129         and leakage in CKFINITE.
14130
14131         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14132         this to a null op since it is called on amd64 too.
14133
14134         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14135
14136         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14137         body since this is not used on amd64.
14138         
14139         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14140
14141         * mini-amd64.c: Remove obsolete fixmes.
14142
14143         * mini.c (print_method_from_ip): Fix debugging support.
14144
14145 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14146
14147         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14148         so that expressions that don't give much gain are not reduced.
14149         * ssapre.h: Likewise.
14150
14151 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14152
14153         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14154
14155         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14156
14157         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14158
14159 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14160
14161         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14162
14163         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14164
14165 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14166
14167         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14168         stack touching.
14169
14170         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14171
14172         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14173
14174         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14175
14176         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14177         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14178
14179         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14180
14181         * mini-x86.c: Fix up stack overflow handling.   
14182
14183         * exceptions.cs: Add new regression test.
14184
14185 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14186
14187         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14188         mono_jit_thread_attach.
14189
14190         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14191
14192 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14193
14194         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14195         avoid calling constructors using callvirt.
14196
14197         * inssel.brg: Fix #74073.
14198
14199 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14200
14201         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14202         compilation with non-GCC compilers.
14203         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14204         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14205
14206 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14207
14208         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14209         klass->interface_offsets (will likely fix bug#74073).
14210
14211 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14212
14213         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14214
14215 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14216
14217         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14218         to amd64_div_reg_size ().
14219         
14220         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14221
14222 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14223
14224         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14225
14226 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14227
14228         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14229
14230 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14231
14232         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14233         
14234         * mini.c (mono_precompile_assembly): Load and precompile referenced
14235         assemblies as well. Fixes #74015.
14236
14237 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14238
14239         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14240
14241 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14242
14243         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14244         a lot of checks and (anyway) permissions cannot work until corlib is 
14245         loaded.
14246
14247 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14248
14249         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14250
14251 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14252
14253         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14254         calls (fixes bug#72824).
14255
14256 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14257
14258         * mini.c: fix tail recursion elimination (see test in bug#73936).
14259
14260 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14261
14262         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14263         some fp functions in sse2 mode.
14264
14265 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14266
14267         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14268
14269 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14270
14271         * mini.h mini.c: Add mono_get_jit_tls_key ().
14272
14273         * mini-x86.c: Enable fast TLS support on windows.
14274
14275 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14276
14277         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14278         * mini.c: Check for p/invoke method when generating code. If a
14279         p/invoke method, or it's class, isn't decorated with [Suppress
14280         UnmanagedCodeSecurity] then generate code to call System.Security.
14281         UnmanagedDemand (only if the security manager is active).
14282
14283 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14284
14285         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14286         last change as it seems to cause strange crashes.
14287         
14288 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14289
14290         * *.c: handle unsafe function pointers where needed.
14291
14292 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14293
14294         * mini.c (mono_jit_free_method): Remove the fixme too.
14295
14296 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14297
14298         * mini.c: As discussed, make the code actually free the delegate
14299         thunk now, to enable the debugging of delegate problems, use
14300         MONO_DEBUG=1 when running Mono. 
14301
14302         This takes also care of parts of the leaks as seen by Joe.
14303
14304 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14305
14306         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14307         thread_tls_offset calculation.
14308
14309 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14310
14311         * declsec.c: Reworked linkdemand checks for icall. The previous code
14312         was using the declaration code (untrusted) and didn't work as expected
14313         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14314         specific case.
14315
14316 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14317
14318         * iltests.il: Add new localloc test.
14319
14320         * mini-amd64.c: Handle large stack allocations the same way as on
14321         windows if stack overflow handling is working.
14322         
14323         * mini-amd64.c: Allocate the signal stack using mmap.
14324
14325         * mini.c (sigsegv_signal_handler): Fix reading of context.
14326
14327         * mini-exceptions.c: Fix up stack overflow handling.
14328
14329         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14330
14331         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14332
14333         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14334
14335         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14336
14337         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14338         tramp_init functions as they are no longer needed.
14339
14340 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14341
14342         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14343         
14344         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14345
14346         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14347         
14348         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14349         support that now.
14350
14351         * mini-ops.h: Add OP_LMUL_IMM.
14352
14353         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14354         long mul/div opcodes as intrinsic.
14355
14356         * mini-amd64.c (emit_call): Handle the case when the callee might be
14357         an AOT method.
14358
14359 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14360
14361         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14362         extra safe.
14363         
14364         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14365
14366         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14367
14368 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14369
14370         * mini.c (mono_codegen): Don't leak here, to help people running
14371         monogrind.
14372
14373 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14374
14375         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14376         conversions in sse2 mode.
14377
14378         * basic-float.cs: Add regression test.
14379         
14380         * mini-amd64.c: Reenable sse2.
14381
14382 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14383
14384         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14385
14386 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14387
14388         * driver.c: Copyright text should include 2005.
14389         
14390 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14391
14392         * cpu-amd64.md (load_membase): Fix more max lengths.
14393
14394 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14395
14396         * cpu-amd64.md (load_membase): Fix max length.
14397
14398         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14399
14400         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14401
14402         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14403         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14404
14405         * basic-float.cs: Add rounding regression test.
14406
14407         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14408
14409 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14410
14411         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14412         structures in registers for pinvoke wrappers.
14413
14414 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14415
14416         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14417
14418 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14419
14420         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14421         wrapper to mono_jit_thread_attach.
14422
14423         * mini.c (mini_jit_thread_attach): New jit icall.
14424
14425         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14426         native->managed wrappers.
14427
14428         * exceptions.cs: Add new regression test.
14429
14430         * mini.c (optimize_branches): Check regions in the cbranch to throw
14431         block case as well. Fixes #73242.
14432
14433 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14434
14435         * mini.c: thread safety fixes.
14436
14437 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14438
14439         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14440         patching stuff, since delegates use jump trampolines so there is
14441         no caller.
14442
14443         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14444         jump trampolines.
14445         
14446         * tramp-amd64.c: Fix build.
14447
14448         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14449         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14450
14451         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14452         Rename this to mono_arch....
14453         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14454
14455         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14456
14457         * mini-amd64.c (emit_call): If both the caller and the callee is
14458         guaranteed to have 32 bit addresses, emit a normal call.
14459
14460         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14461
14462         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14463         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14464         method_ptr inside delegates.
14465
14466 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14467
14468         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14469         invalidated. Fixes #73001.
14470
14471         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14472
14473         * mini-x86.c: Only use stdcall for pinvokes on windows.
14474
14475 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14476
14477         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14478         * mini-x86.c: remove unreliable __thread var offset detection,
14479         use the correct accessors and enable by default.
14480
14481 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14482
14483         * mini.c (mono_jit_free_method): Fix memory leak.
14484
14485 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14486
14487         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14488
14489 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14490
14491         * cpu-amd64.md: Fix lengths of atomic opcodes.
14492
14493 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14494
14495         * driver.c: try to not imply using ICU is any good.
14496
14497 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14498
14499         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14500         functions as inline ops.
14501
14502         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14503         some Interlocked functions as inline ops.
14504
14505         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14506
14507         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14508
14509         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14510
14511         * mini.c: Add support for OP_NOT_TAKEN.
14512
14513         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14514         structures in registers for pinvoke wrappers.
14515
14516         * mini-amd64.c: Fix warnings.
14517
14518 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14519
14520         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14521
14522         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14523
14524         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14525         address instead of loading the address from it.
14526
14527         * mini-x86.c: Add support for returning small structs in registers
14528         on Win32. Fixes part of #70864.
14529         
14530 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14531
14532         * trace.c (get_token): Improve error checking.
14533
14534 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14535
14536         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14537
14538 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14539  
14540         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14541         it can be reused for MonoClass.
14542         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14543         _LINKDEMAND.
14544
14545 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14546
14547         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14548         instead of a MonoReflectionMethod. The method information wasn't used
14549         when displaying SecurityException details (but will be now).
14550
14551 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14552
14553         * Makefile.am : windows build fix.
14554
14555 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14556
14557         * iltests.il: Add new regression test.
14558
14559         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14560         #72522.
14561
14562 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14563  
14564         * mini.c: Moved linkdemand check into helper function check_linkdemand
14565         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14566         LDFTN, LDVIRTFTN).
14567
14568 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14569
14570         * declsec.c: Added statistics counter for different kinds of 
14571         LinkDemands.
14572         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14573         (and commented) declaration.
14574         * mini.c: Added statistics counter for security Demand code 
14575         generation. Added display of security statistics.
14576
14577 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14578
14579         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14580         Fix compilation errors under gcc-2.95.
14581
14582 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14583
14584         * mini.c, driver.c: Use the new jit trampoline hashtable
14585
14586 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14587
14588         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14589
14590 2005-02-11  Martin Baulig  <martin@ximian.com>
14591
14592         * debug-mini.c (mono_debug_close_method): Free the line number array.
14593
14594 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14595
14596         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14597         icalls.
14598
14599         * mini.h: Bump AOT file format version. 
14600
14601 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14602
14603         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14604         APTC and P/Invoke.
14605         * declsec.h: Added macros to get/set lazyly initialized security 
14606         informations about assemblies. Added new enum for different type of
14607         possible LinkDemand violation. Added function to check LinkDemands.
14608         * mini.h: Added a field to MonoCompile to hold any security violation
14609         detected when JITting a method (so it can be thrown later).
14610         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14611         and CEE_CALLVIRT. Added code to throw exception at the end of
14612         mini_method_compile (note: the exception is unhandled right now).
14613
14614 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14615
14616         * mini.c, jit-icalls.c: use the managed implementation of
14617         memset for initobj and memset, to avoid managed <-> unmanaged
14618         transitions.
14619
14620 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14621
14622         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14623         optimization if it would need a GOT var.
14624
14625         * basic.cs: Add tests for constant propagation and switch statements.
14626
14627         * ssa.c: Fix out-of-range constant propagation and switch statements.
14628
14629 2005-02-09    <vargaz@freemail.hu>
14630
14631         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14632
14633 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14634
14635         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14636
14637 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14638
14639         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14640
14641 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14642
14643         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14644         arithmetic operations.
14645
14646 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini-ppc.c: add a workaround for broken user code that
14649         DllImports vararg functions with non-vararg signatures.
14650
14651 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14652
14653         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14654         meaningfull error message for assemblies written in Managed C++.
14655
14656         * tramp-amd64.c mini-amd64.h: Add support for 
14657         create_trampoline_from_token ().
14658
14659         * aot.c mini-x86.c abcremoval.c: Applied patch from
14660         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14661
14662 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14663
14664         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14665         which takes a MonoImage/token as parameter instead of a MonoMethod.
14666
14667         * aot.c: Use the new trampoline for initializing vtables.
14668
14669         * aot.c: Add support for ldfld/stfld_remote wrappers.
14670
14671         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14672         rules for compare <MEM>, IMM.
14673
14674         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14675
14676         * aot.c: Handle inherited finalizers correctly.
14677
14678 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14679
14680         * inssel.brg (stmt): Add a missing _setup_... ().
14681
14682         * aot.c: Save some parts of the class state to the AOT file and use it
14683         to recompute that state when a class is initialized.
14684
14685         * mini.c: Install AOT hooks into the runtime.
14686
14687         * mini.h: Bump AOT file format version.
14688         
14689         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14690         Fixes #72148.
14691
14692         * iltests.il: Add new test.
14693
14694 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14695
14696         * mini.c: fix typo.
14697
14698 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14699
14700         * mini.c: setup the statistical profiler in the thread attach
14701         callback to cope with the new single thread code.
14702
14703 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14704
14705         * mini-ppc.c: ensure we have enough room for the profiler
14706         calls (fixed bug#72084).
14707
14708 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14709
14710         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14711         it.
14712
14713 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14714
14715         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14716
14717 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14718
14719         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14720         to succesfully execute parrotbench).
14721         * ssapre.h: Likewise.
14722
14723 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14724
14725         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14726         variable for stores to method arguments (fixes a SSAPRE issue).
14727
14728 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14729
14730         * mini.c: handle value types in dup, fixes gen-112.cs.
14731
14732 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14733
14734         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14735         sequence for calls in dynamic methods to avoid thunks.
14736
14737 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14738
14739         * mini.c: correctly remove dynamic methods from the hashtable.
14740
14741 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14742
14743         * driver.c: Disabled SSAPRE until fix the bug that appears
14744         in IronPython's parrotbench.
14745
14746 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14747
14748         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
14749
14750         * mini.c (mono_method_to_ir): Revert the previous change.
14751         
14752         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
14753         when AOT compiling.
14754
14755         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
14756         mono_jit_info_table_find () etc. when running under valgrind.
14757
14758         * inssel.brg: Fix warnings.
14759
14760         * mini-exceptions.c: Fix warnings.
14761
14762 2005-01-31  Martin Baulig  <martin@ximian.com>
14763
14764         * driver.c (compile_all_methods_thread_main): Don't try to compile
14765         generic methods or anything which has type parameters.
14766
14767 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14768
14769         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
14770
14771         * TestDriver.cs: Add --verbose flags.
14772
14773         * graph.c ssa.c: Fix 64 bit warnings.
14774         
14775         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
14776         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
14777         Fix 64 bit warnings.
14778
14779         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
14780         variable not spotted by gcc.
14781         
14782         * mini-amd64.c inssel-amd64.brg: Applied patch from  
14783         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
14784         X86_COMPARE_MEMBASE opcodes.
14785
14786         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
14787
14788 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14789
14790         * *: MonoMethod->signature might be NULL now. You *MUST* use
14791         mono_method_signature.
14792
14793 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14794
14795         * driver.c (compile_all_methods_thread_main): Compile the methods
14796         without invoking cctors.
14797
14798 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14799
14800         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
14801         * basic-calls.cs: test for the above.
14802
14803 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14804
14805         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
14806         MonoJitInfo changes.
14807
14808 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
14809
14810         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
14811         eagerly if it contains dynamic methods.
14812         
14813         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
14814
14815         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
14816         trace, it is now computed by an icall from trace_ips.
14817         
14818         * mini-exceptions.c: Fix a warning.
14819
14820 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14821
14822         * mini-exceptions.c: don't bother getting stack trace info if
14823         it's not going to be used.
14824
14825 2005-01-27  Raja R Harinath  <rharinath@novell.com>
14826
14827         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
14828         ssapre-mini-ops.h.
14829
14830 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
14831
14832         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
14833
14834         * aot.c: Avoid calling mono_method_get_header () if not needed.
14835
14836         * mini.h: Bump AOT file format version.
14837         
14838         * mini.c (mono_emit_native_call): Allocate a GOT var here.
14839
14840         * mini.c (mono_print_tree): Print more info for calls.
14841
14842 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14843
14844         * declsec.h: Remove warning by adding missing include for marshal.h
14845
14846 2005-01-26  Martin Baulig  <martin@ximian.com>
14847
14848         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
14849         `ip' twice.
14850
14851 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
14852
14853         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
14854         flags.
14855
14856         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
14857
14858         * aot.c (mono_compile_assembly): Fix a warning.
14859
14860 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14861
14862         * declsec.c: Look for security attributes on the original MonoMethod 
14863         (and not the wrapped one). This fix permissions on icalls.
14864
14865 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14866
14867         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14868
14869         * mini.c (mono_allocate_stack_slots): Add a fixme.
14870
14871         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14872
14873 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14874
14875         * inssel.brg: optimize casts of sealed types (more
14876         optimizations waiting for fixes in remoting).
14877
14878 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14879
14880         * inssel.brg (stmt): Add another dummy rule.
14881
14882         * driver.c: Fix warnings.
14883
14884         * driver.c (mono_main): If running under valgrind, instruct glib to use
14885         the system allocation functions so valgrind can track the memory
14886         allocated by the g_... functions.
14887
14888         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
14889
14890         * mini-ops.h: Add OP_DUMMY_STORE opcode.
14891
14892         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
14893
14894         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
14895         variables in try regions.
14896
14897         * mini.c (mini_method_compile): Don't disable optimizations on large
14898         methods when AOT compiling.
14899
14900         * mini.c (mono_allocate_stack_slots): New arch independent method to 
14901         allocate stack slots. Not yet used.
14902
14903 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
14904
14905         * debug-mini.c (mono_debug_close_method): Plug some leaks.
14906
14907 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
14908
14909         * mini-ppc.c: make the branch info relative as the code
14910         buffer can be reallocated.
14911
14912 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
14913
14914         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
14915         * driver.c: Removed the AOT/security restriction. Now initialize the
14916         security manager (in metadata) if --security is used.
14917         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
14918         rather than the pointer to declarative security, when AOT is used.
14919
14920 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
14921
14922         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
14923         basic blocks, reduced intrinsic exception throwing code size.
14924
14925 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
14926
14927         * driver.c (mini_usage): Reorder the usage screen.
14928
14929 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
14930
14931         * mini.c (mono_resolve_patch_target): Fix warning.
14932
14933 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
14934
14935         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
14936         previous patch.
14937
14938         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14939
14940         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
14941         breaks the amd64 build.
14942
14943         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
14944         register allocation. Fixes #71454.
14945
14946         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14947
14948         * arrays.cs: Add new regression test.   
14949
14950 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14951
14952         * ssapre.c: Turned usage of snprintf to GString.
14953         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
14954         (I left it on by mistake in my previous commit).
14955
14956 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
14957
14958         * mini.c, cfold.c, basic-calls.cs: preserve side effects
14959         on cond branch optimization (fixes bug# 71515).
14960
14961 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14962
14963         * abcremoval.c: Fixed bug 71062.
14964         * abcremoval.h: Likewise.
14965
14966 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14967
14968         * mini.c: Added a new functionality to optimize_branches, the removal
14969         of useless basic blocks, and fixed some problem in the removal of
14970         critical edges; some utility functions added for both purposes.
14971         * ssapre.c: Added complex expression support, and fixed bug 70637.
14972         * ssapre.h: Likewise.
14973         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
14974         enabled in SSAPRE.
14975         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
14976         * driver.c: Re-enabled SSAPRE.
14977
14978 2005-01-19  Martin Baulig  <martin@ximian.com>
14979
14980         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
14981         the result of mono_get_method_constrained().
14982
14983 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
14984
14985         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
14986         manager.
14987
14988 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
14989
14990         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
14991         be detected.  Fixes #59296.
14992
14993 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14994
14995         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
14996         which can happen. Fixes #71361.
14997
14998 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14999
15000         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
15001         manager.
15002
15003 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15004
15005         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
15006         appdomain-unload.exe to fail.
15007         
15008         * mini.c: Fix some memory leaks.
15009
15010 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
15011
15012         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
15013         Fixed bug and sped up some codepaths.
15014
15015 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15016
15017         * mini.c: Fix some memory leaks.
15018
15019         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
15020         conversion.
15021
15022         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
15023
15024         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
15025         #71320.
15026
15027         * iltests.il: Add regression test for #71320.
15028
15029 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15030
15031         * mini.c (mono_codegen): Fix installation of profiler hooks.
15032
15033         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15034
15035 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15036
15037         * mini.h, mini.c, cfold.c: optimize access to enum
15038         readonly fields, too. Eval conditional branches if possible
15039         to perform unreachable code removal in more cases.
15040
15041 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15042
15043         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15044
15045         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15046         code manager.
15047
15048         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15049         WinXP DEP. Fixes #71244.
15050
15051 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15052
15053         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15054
15055 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15056
15057         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15058
15059 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15060
15061         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15062         changes.
15063
15064         * mini.h: Bump AOT version.
15065
15066         * mini.h (MonoCompile): Change exvar to a hash table.
15067
15068         * mini.c: Allocate a separate exvar for each handler block.
15069
15070         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15071
15072         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15073         ex var with the pending exception and only throw if the two are equal.
15074         Fixes #68552.
15075         
15076         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15077
15078         * mini-x86.c: Fix warnings.
15079
15080         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
15081         used by all the ports now.
15082
15083         * aot.c: Add write-symbols and save-temps options.
15084
15085 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15086
15087         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
15088
15089 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
15090
15091         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
15092         operations.
15093
15094         * tramp-s390.c: Check vtable slot belongs to the domain.
15095
15096         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
15097         as per other platforms.
15098
15099         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15100
15101 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15102
15103         * driver.c: we don't run the Main() code in a subthread anymore.
15104
15105 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15106
15107         * mini.c: added experimental rtc support in the statistical
15108         profiler: if the user has the permission, more accurate statistics
15109         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15110         The MONO_RTC value must be restricted to what the linux rtc allows:
15111         power of two from 64 to 8192 Hz.
15112
15113 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15114
15115         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15116
15117 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15118
15119         * mini-ppc.c: better icache flush for smp.
15120
15121 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15122
15123         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15124
15125         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15126         amd64 port, not yet used.
15127
15128 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15129
15130         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15131         a struct type.
15132
15133 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15134
15135         * driver.c: Added --security option to activate the security manager.
15136         Right now this will allow code generation for declarative demands and
15137         is disabled when AOT is specified.
15138         * mini.c: Add code generation for declarative security demands.
15139         * mini.h: Add mono_use_security_manager as an extern gboolean.
15140
15141 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15142
15143         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15144         emitting more dense assembly code.
15145
15146         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15147         exception throwing stuff.
15148
15149 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15150
15151         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15152         dead code.
15153
15154         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15155         left in by mistake.
15156
15157         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15158         fixed.
15159
15160         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15161
15162         * tramp-*.c: Only patch vtable slots if the object is in the current
15163         domain. Fixes appdomain-unload.exe.
15164
15165         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15166         
15167         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15168         x86 branch.
15169
15170 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15171
15172         * mini.c (reverse_branch_op): New helper function.
15173
15174         * mini.c (optimize_branches): Run the new optimization only on 
15175         platforms which support it. Also reverse all kinds of branches.
15176
15177         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15178
15179         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15180         a throw statement.
15181
15182         * mini.c (optimize_branches): Reverse not-equals branches if the false
15183         bblock is a throw. This happens a lot of time with argument checking in
15184         corlib.
15185
15186         * mini.c (mono_codegen): Add support for placing basic blocks after
15187         the function epilogue.
15188
15189         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15190         function epilogue.
15191         
15192 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15193
15194         * mini.c (setup_stat_profiler): Only set this up if the platform
15195         supports ITIMER_PROF.
15196
15197 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15198
15199         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15200         previous patch.
15201
15202         * inssel.brg: Fix a warning.
15203
15204 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15205
15206         * mini.c: added support for statistical profiler 
15207         (run with: --profile=default:stat).
15208
15209 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15210
15211         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15212
15213         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15214
15215         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15216         related to global registers from the amd64 port.
15217
15218 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15219
15220         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15221
15222         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15223         with global registers.
15224         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15225
15226         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15227
15228 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15229
15230         * debug-mini.c (encode_value): Fix off-by-one.
15231
15232         * aot.c (encode_value): Likewise.
15233
15234         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15235
15236 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15237
15238         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15239         AOT.
15240
15241         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15242         
15243         * aot.c (emit_method_info): Increase size of temp buffer.
15244
15245         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15246         the AOT case.
15247
15248 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15249
15250         * aot.c (emit_method_info): Fix build.
15251         
15252         * aot.c: Further rework of the AOT file format to reduce the size of
15253         the method info data.
15254
15255         * mini.h: Bump AOT file format version.
15256
15257 2004-12-27  Martin Baulig  <martin@ximian.com>
15258
15259         * mini.c (mini_get_method): New static method; call
15260         mono_get_method_full() and mono_get_inflated_method().
15261         (mono_method_to_ir): Use mini_get_method() instead of
15262         mono_get_method_full(). 
15263
15264 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15265
15266         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15267
15268 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15269
15270         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15271
15272         * inssel-amd64.brg: Add some optimization rules.
15273
15274 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15275
15276         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15277         standard not GC'd stuff is fine.
15278
15279 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15280
15281         * aot.c: Rework the AOT file format to get rid of most of the global
15282         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15283
15284         * mini.h: Bump AOT file format version.
15285         
15286 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15287
15288         * mini.h: Bump AOT file format version.
15289
15290         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15291         address is inside a GOT.
15292
15293         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15294
15295         * cpu-pentium.md: Increase the maximum size of some instructions which
15296         might involve a got access.
15297         
15298         * mini.c (get_method_from_ip): Another debug helper function.
15299
15300         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15301         when got var accesses are created during the decompose phase.
15302
15303         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15304
15305         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15306         argument mini_compile_method and to MonoCompile, and use this to
15307         determine whenever a given method is compiled for AOT. This allows the
15308         other methods compiled during AOT compilation to be free of AOT stuff,
15309         so the backends does not need to add special support for them by
15310         creating a fake GOT etc.
15311
15312         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15313         longer needed.
15314
15315 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15316
15317         * mini.c (mono_method_to_ir): It turns out that some of the
15318         x-appdomain wrappers are lax with types, so just ignore this for
15319         all wrappers.
15320
15321         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15322         at the vtable->klass. If it is non-shared code we can just use the
15323         vtable.
15324
15325 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15326
15327         * mini-ppc.c: access MonoDomain from tls, too.
15328
15329 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15330
15331         * declsec.c: Removed unused variable (and related warning ;-)
15332
15333 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15334
15335         * iltests.il: New test for LDELEMA on an array of ref types.
15336
15337         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15338         all ldelema's on reftypes.
15339         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15340         it was the wrong place to put it.
15341
15342         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15343         register to pop to make this cleaner, at the request of Paolo.
15344
15345 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15346
15347         * mini-ops.h (OP_GETHASHCODE): New op.
15348
15349         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15350
15351         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15352         operation.
15353
15354         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15355         by 25%.
15356         
15357         * mini-x86.c (mono_arch_output_basic_block): Rather than
15358
15359         add ebp, 4
15360
15361         Emit
15362
15363         pop edx
15364
15365         The first is 3 bytes while the second is 1. This saves 36 kb on
15366         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15367         see a small boost because of icache locality.
15368
15369         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15370
15371 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15372
15373         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15374         started code sharing with the generic code.
15375
15376 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15377
15378         * mini-ppc.c, cpu-g4.md: added code for direct access to
15379         tls data slots.
15380
15381 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15382
15383         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15384          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15385         to OP_TLS_GET.
15386
15387 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15388
15389         * declsec.c|h: Added functions to cache the declarative stack modifiers
15390         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15391         structure.
15392         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15393         created. Register internal calls for System.Security.SecurityFrame::
15394         _GetSecurityFrame and _GetSecurityStack.
15395         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15396         the definitions for the new stack walk/callback mechanism.
15397         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15398         first security frame for LinkDemands and InheritanceDemands) and
15399         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15400         from lupus.
15401         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15402         walk initialization (lupus).
15403
15404 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15405
15406         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15407         idiom.
15408         (handle_loaded_temps): Do not create a temporary variable for
15409         things that we know are temps. They will never be modified.
15410         (mono_spill_call): Set MONO_INST_IS_TEMP
15411         (mono_emulate_opcode): ditto
15412         (emit_tree): ditto
15413         (mono_method_to_ir.CEE_DUP): ditto
15414
15415 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15416
15417         * mini.c (type_to_eval_stack_type): Make this handle the void type
15418         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15419         (emit_tree): use ip_in_bb to special case some common idioms
15420         Update all callers to pass in the IP.
15421         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15422
15423         This gives us a nice 2% speedup in mcs bootstrap.
15424
15425         * mini-x86.c (peephole_pass): Peephole pass to make
15426         mov  [foo], eax
15427         push [foo]
15428
15429         into
15430
15431         mov [foo], eax
15432         push eax
15433
15434         * mini.c (ip_in_bb): new method.
15435         (mono_method_to_ir): use this method rather than doing the hash
15436         lookup ourselves.
15437
15438         * linear-scan.c (mono_linear_scan): When expiring actives, you
15439         don't need to keep around variables that expire on this
15440         instruction. This makes it so that:
15441              a = b + 1
15442         will turn into:
15443              store (ebx add (ebx, 1))
15444         which will become
15445              add ebx, 1
15446
15447 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15448
15449         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15450         combination to avoid doing two copies. Fix up problems with previous
15451         patch.
15452
15453         * mini.c: Fix 64 bit warnings.
15454
15455         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15456
15457 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15458
15459         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15460         changes from the x86 code.
15461
15462         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15463
15464 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15465
15466         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15467         throwing code to reduce its size, unify the AOT and non-aot code and 
15468         get rid of relocations in the AOT case.
15469
15470         * mini-x86.h mini.c exceptions-x86.c 
15471         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15472         raise corlib exceptions which doesn't require relocations in the 
15473         caller.
15474
15475         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15476
15477 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15478
15479         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15480         needed.
15481
15482         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15483         in the AOT case.
15484
15485 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15486
15487         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15488         with add function when used from Inc/dec atomic 
15489         functions. Re-enabled optimization on x86.
15490         * mini-ops.h: renamed atomic_add functions to
15491         allow _add to match the Interlocked::Add and
15492         _add_next to match Interlocked::Inc/Dec.
15493
15494 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15495
15496         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15497         linking of BBs to the end BB, and enabled SSAPRE also with
15498         consprop and copyprop (which was prevented by that bug).
15499
15500 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15501
15502         * mini-x86.c: disabling the Interlocked optimizing code. 
15503
15504 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15505
15506         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15507         file version check.
15508         
15509 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15510
15511         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15512         interlocked optimization due lack of support on x86, rewrote 
15513         exchange to take into account that base may be in eax.
15514         
15515         xsp works again; activated Interlocked optimizing code.
15516         
15517 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15518
15519         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15520
15521 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15522
15523         * mini-ops.h: Add new opcodes.
15524
15525         * mini.h: Add new patch types. Add got_var to MonoCompile.
15526
15527         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15528         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15529         make it work with all kinds of patchable code.
15530
15531         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15532         address of the GOT, and referencing entries in the GOT.
15533
15534         * mini.c: Add code to load the GOT address if needed by an opcode.
15535
15536         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15537         independent AOT code on the x86 using an elf-style Global Offset Table.
15538
15539 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15540
15541         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15542
15543 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15544
15545         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15546         when running xsp.
15547
15548 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15549
15550         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15551         of Interlocked:Increment/Decrement/Add as inline ops.
15552         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15553
15554 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15555
15556         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15557         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15558
15559 2004-12-12  Duncan Mak  <duncan@ximian.com>
15560
15561         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15562         again. `patch_info->table_size' is no longer valid after Zoltan's
15563         commit #37636.
15564
15565 2004-12-12  Martin Baulig  <martin@ximian.com>
15566
15567         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15568         if we are the "real" method, ie. not an inlined method inside it.
15569
15570 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15571
15572         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15573         before we look in the special fields table. This fixes
15574         ../tests/thread-static-init.cs.
15575
15576 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15577
15578         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15579         for Array get_Rank and get_Length. Fixes bug #70465.
15580
15581 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15582
15583         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15584         separate structure to reduce the size of MonoJumpInfo.
15585
15586 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15587
15588         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15589
15590 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15591
15592         * mini.c (mini_get_inst_for_method): Changed to allow ports
15593         to return a MonoInst instead of opcode 
15594         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15595         
15596         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15597         Allow ports to return a created MonoInst instead of op-code, will enable
15598         new optimizations.
15599         (renamed mini_get_opcode_for_method to better reflected the functionality)
15600
15601 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15602
15603         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15604
15605 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15606
15607         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15608         Fixes #69985.
15609
15610 2004-12-08  Martin Baulig  <martin@ximian.com>
15611
15612         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15613         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15614
15615 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15616
15617         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15618         correctly.
15619
15620         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15621         arithmetic.
15622
15623 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15624
15625         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15626
15627 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15628
15629         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15630         bug introduced by the previous patch.
15631
15632 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15633
15634         * mini-ppc.c, objectc.cs: handle large structs passed by value
15635         (fixes bug #69972).
15636
15637 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15638
15639         * mini-ppc.c: OP_ARGLIST implementation from
15640         Geoff Norton  <gnorton@customerdna.com>.
15641
15642 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15643
15644         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15645         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15646
15647 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15648
15649         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15650
15651 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15652
15653         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15654         support.
15655
15656 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15657
15658         * mini-sparc.c: Zero out localled-ed memory.
15659
15660         * iltests.il: Add tests for zeroing out localloc-ed memory.
15661
15662 2004-12-04  Martin Baulig  <martin@ximian.com>
15663
15664         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15665         mono_method_get_signature_full().       
15666
15667 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15668
15669         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15670         and some utility functions (always for SSAPRE), integrated SSAPRE.
15671         * mini.h: Likewise.
15672         * driver.c: Added ssapre option.
15673         * ssa.c: Small fix on OP_ARG handling.
15674         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15675         * Makefile.am: Likewise.
15676
15677 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15678
15679         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15680         now in the xp code.
15681
15682         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15683         icall.
15684
15685 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15686
15687         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15688         
15689         * cpu-s390.md : Increase instruction length of oparglist.
15690
15691         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15692
15693 2004-11-30  Martin Baulig  <martin@ximian.com>
15694
15695         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15696         virtual generic methods.  We call a special helper_compile_generic_method()
15697         icall to retrieve the method from the vtable, inflate and compile
15698         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15699
15700         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15701
15702 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15703
15704         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15705
15706 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15707
15708         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15709         Fixes #69929.
15710
15711 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15712
15713         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15714         platforms with PIC aot.
15715
15716 2004-11-28  Martin Baulig  <martin@ximian.com>
15717
15718         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15719         Fixes gen-112.cs.
15720
15721 2004-11-28  Martin Baulig  <martin@ximian.com>
15722
15723         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15724         the result of mono_type_get_underlying_type() to check whether
15725         we're byref.
15726
15727 2004-11-26  Martin Baulig  <martin@ximian.com>
15728
15729         * mini.c
15730         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15731         in the g_assert().
15732
15733 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15734
15735         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15736         the same way as the other arguments so they won't get clobbered.
15737
15738         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15739         calls through R11 since it is clobbered by the trampoline code.
15740
15741 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15742
15743         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15744         pick up in-tree mscorlib.dll.
15745
15746 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15747
15748         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
15749
15750         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
15751         runtime data/code are now stored in a table similar to the GOT in ELF. 
15752         This allows the code itself to be position independent.
15753
15754         * aot.c: Fix loading of referenced assemblies after the lazy assembly
15755         loading changes.
15756
15757         * aot.c: Attach ELF type (object/function) directives to all global
15758         symbols.
15759
15760         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
15761
15762         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
15763
15764         * mini-amd64.h: Turn on PIC AOT code.
15765
15766         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
15767         returning the offset within an OP_AOTCONST instruction where the GOT
15768         offset needs to be added.
15769
15770         * mini.h: Bump AOT file format version.
15771
15772 2004-11-25  Martin Baulig  <martin@ximian.com>
15773
15774         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
15775         uninflated generic methods.
15776
15777 2004-11-25  Martin Baulig  <martin@ximian.com>
15778
15779         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
15780
15781 2004-11-24  Martin Baulig  <martin@ximian.com>
15782
15783         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
15784         original klass (this only applies for generic instances).
15785
15786 2004-11-24  Martin Baulig  <martin@ximian.com>
15787
15788         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
15789         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
15790         that array).
15791
15792 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15793
15794         * mini.c (mono_method_to_ir): Disable inlining for methods containing
15795         localloc. Fixes #69678.
15796
15797         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
15798         
15799 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
15800
15801         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
15802         used SSE registers on pinvoke calls. Fixes #69774.
15803
15804 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
15805
15806         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
15807         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
15808
15809 2004-11-23  Raja R Harinath  <rharinath@novell.com>
15810
15811         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
15812         Refer directly to the mcs/ tree.
15813
15814 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15815
15816         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
15817         Check if a trampoline for a synchronized method is required. 
15818
15819 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
15822         with localloc if needed. Throe arithmetric exception in
15823         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
15824         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
15825
15826 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
15827
15828         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
15829         types before switching on type.  Fixes #69622.
15830
15831 2004-11-19  Raja R Harinath  <rharinath@novell.com>
15832
15833         * Makefile.am (check-local): New.  Integrate into 'make check'.
15834         (MCS,RUNTIME): Define using in-tree mono and mcs.
15835         (ILASM): New.
15836         (%.exe): Use $(ILASM).
15837
15838 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
15839
15840         * mini-ppc.c: adjust initial prolog size (bug #69691).
15841
15842 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
15843
15844         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
15845         #69664.
15846
15847 2004-11-17  Raja R Harinath  <rharinath@novell.com>
15848
15849         * Makefile.am (clean-local): Rename from 'clean'.
15850
15851 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15852
15853         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
15854         to mono_arch_is_int_overflow. 
15855         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
15856         SIGFPE events.
15857
15858 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15859
15860         * declsec.c|h: New files to support declarative security attributes.
15861         Added function to check if a method has (applicable) security.
15862         * mini.c|h: Add check for declarative security attributes in
15863         mono_method_check_inlining.
15864         * Makefile.am: Added declsec.c and declsec.h to the build.
15865
15866 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15867
15868         * mini.c, mini.h: update to keep dynamic code info per-domain.
15869
15870 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15871
15872         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
15873         (mini_init): Get rid of it from here too.
15874
15875 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
15876
15877         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
15878         implemented OP_RETHROW (patch by Geoff Norton
15879         <gnorton@customerdna.com>).
15880
15881 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
15882
15883         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
15884         between appdomains.  Fixes appdomain-unload on PPC.
15885
15886 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
15887
15888         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15889         mini-exceptions.c: handle the new wrapper types.
15890         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
15891         token value as a MonoClass* when compiling a wrapper.
15892         mono_jit_create_remoting_trampoline now takes an additional
15893         MonoRemotingTarget parameter.
15894         
15895 2004-11-10  Martin Baulig  <martin@localhost>
15896
15897         * mini.c (mono_method_to_ir): Use `generic_container->context'
15898         rather than creating a new one.
15899
15900 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15901
15902         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
15903
15904         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
15905
15906 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
15907
15908         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
15909         the experimental aot cache stuff.
15910
15911 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15912
15913         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15914         mini-exceptions.c: update to exception clause structure changes.
15915
15916 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15917
15918         * exceptions-x86.c (throw_exception): Fix warnings.
15919
15920         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
15921         for OP_RETHROW.
15922
15923 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15924
15925         * exceptions-sparc.c (get_throw_exception): Really fix this.
15926
15927 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15928
15929         * tramp-*.c: we no longer support icalls without wrappers, so
15930         a bit of code can be removed here
15931
15932 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
15933
15934         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
15935         patch.
15936
15937         * cpu-sparc.md: Add op_rethrow.
15938
15939         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
15940
15941         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
15942
15943         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
15944         * mini-ops.h: Add OP_RETHROW.
15945
15946         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
15947
15948         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
15949
15950 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15951         
15952         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
15953         Makes the output much easier to read
15954
15955 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
15956
15957         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
15958         prevents another huge leak when compiling with ssa. Secondly, the
15959         performance of doing this rather than freeing the lists is much
15960         better. GList does a lock every time you allocate a list link,
15961         so that it can use a memory pool. So, it is better to just use
15962         a memory pool of our own.
15963         
15964         * ssa.c, linear-scan.c: replace g_list_remove_link with
15965         g_list_delete.  The remove one does not free the GList, so we were
15966         leaking memory. On -O=all --compile-all with corlib, this cut down
15967         3 MB of allocations.
15968
15969 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15970
15971         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
15972
15973         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
15974
15975         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
15976         into a new function mono_create_jit_trampoline ().
15977
15978 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15979
15980         * trace.c (get_spec): Allow tracing of classes without a namespace.
15981
15982 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
15983
15984         * mini.c: Fix pointer overwrite in mini_method_compile.
15985
15986 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
15987
15988         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
15989         The darwin ABI needs some special handling for 1 and 2 byte structs
15990         Lets use lbz/lhz instead of lwz everywhere.
15991         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
15992         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
15993         Use stb/sth for the former, and put the latter always on stack instead of in
15994         argument registers.
15995
15996 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
15997
15998         * trace.c (is_filenamechar): Add '_'.
15999
16000 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
16001
16002         * mini-s390.c: Fix prolog length to allow for large trace requirements.
16003
16004         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
16005
16006 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
16007
16008         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
16009         depends on libmonogc. Fixes #68805.
16010
16011 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
16012
16013         * mini.c (mono_jit_free_method): Provide extra information for
16014         this error.  Currently this leaks, but will be turned into a
16015         developer option in the future.
16016
16017 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
16018
16019         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
16020
16021 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16022
16023         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
16024         boundary. Fixes reading of PATCH_INFO_R4 and R8.
16025         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
16026
16027 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
16028
16029         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
16030         trampolines for AOT code.
16031
16032 2004-10-22    <vargaz@freemail.hu>
16033
16034         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16035         constructed types. Fixes #68136.
16036
16037 2004-10-21  Martin Baulig  <martin@ximian.com>
16038
16039         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16040         if it returns true, unwind the stack to the call instruction.
16041
16042 2004-10-21    <vargaz@freemail.hu>
16043
16044         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16045
16046         * mini.h: Bump AOT version number.
16047
16048         * objects.cs: Add another test for unbox trampolines.
16049
16050         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16051         valuetype methods.
16052
16053 2004-10-20    <vargaz@freemail.hu>
16054
16055         * driver.c: Add SHARED to the set of optimizations tested.
16056
16057         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16058
16059         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16060         used by CEE_NEWARR.
16061
16062         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16063
16064 2004-10-20  Martin Baulig  <martin@ximian.com>
16065
16066         * mini-exceptions.c (mono_handle_exception): Call
16067         mono_debugger_handle_exception() to tell the debugger about
16068         catch/finally clauses.
16069
16070 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16071
16072         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16073
16074         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16075         #68447.
16076
16077 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16078
16079         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
16080         methods as their native size, fixed bug #57543, #57545.
16081         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16082         This saves a temporary register and mullw call down into 1 (minor perf
16083         increase for cases like sum = sum * 5;  This use to translate into:
16084             li r11,5
16085             mullw r28,r28,r11
16086         It now translates to
16087             mulli r28,r28,5
16088
16089 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
16090
16091         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
16092         #68388.
16093
16094 2004-10-11  Martin Baulig  <martin@ximian.com>
16095
16096         * mini.c (mono_method_to_ir): If we're a generic method, get the
16097         MonoGenericContainer from our MonoMethodNormal and create a
16098         MonoGenericContext from it.
16099
16100 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16101
16102         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16103
16104         * basic-long.cs: Add test for checked i8->i2 cast.
16105
16106 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16107
16108         * inssel-ppc.brg: added a couple of speedup rules.
16109
16110 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16111
16112         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16113         to speed up rebuilds.
16114
16115 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16116
16117         * mini-s390.c: Minor fix to OP_OR_IMM.
16118
16119 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16122         better. Fixes appdomain-unload.exe on sparc.
16123
16124 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16125
16126         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16127         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16128         see bug 67324.
16129
16130 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16131
16132         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16133
16134 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16135
16136         * mini.c: Always generate a field read/write wrapper for members
16137         of the class MarshalByRefObject since the actual instance could
16138         be a CBO.
16139
16140 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16141
16142         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16143
16144 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16145
16146         * driver.c mini.h trace.c: Move the setting of the main assembly into
16147         a separate function called mono_trace_set_assembly () and call it after
16148         actually loading the main assembly. Fixes #66872.
16149
16150 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16153         using the code manager.
16154
16155 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16156
16157         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16158
16159 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16160
16161         * cpu-amd64.md: Fix bug in previous patch.
16162         
16163         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16164         #66650.
16165
16166 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16167
16168         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16169         mini-exceptions.c: updates for changed stack walk interface.
16170
16171 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16172
16173         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16174
16175 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16176
16177         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16178
16179 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16180
16181         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16182         since assemblies can't be unloaded.
16183         
16184 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16185
16186         * cpu-amd64.md: Fix more instruction lengths.
16187
16188         * cpu-amd64.md: Fix lengths of some instructions.
16189
16190 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16191
16192         * inssel.brg: Make the array ldelema check aot friendly.
16193
16194 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16195
16196         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16197
16198         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16199
16200 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * mini-x86.c: Fix build.
16203
16204         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16205         mono_type_get_underlying_type () helper function to simplify code.
16206         
16207 2004-09-09  Martin Baulig  <martin@ximian.com>
16208
16209         * mini-amd64.c: Don't access `type->data.klass' directly, call
16210         mono_class_from_mono_type() instead since the type may be a
16211         generic instance.
16212
16213 2004-09-09  Martin Baulig  <martin@ximian.com>
16214
16215         * mini-amd64.c (get_call_info): Fix support for generic instances.
16216         (add_valuetype): Use mono_class_from_mono_type() to get the class
16217         since we can be a generic instance.
16218
16219 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16220
16221         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16222
16223 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16224
16225         * liveness.c: reset spill costs on each scan: bug 62107
16226
16227 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16228
16229         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16230         unnecessary line that doesn't compile
16231
16232 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16233
16234         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16235         trampolines, make them call an error function so people can fix their
16236         code.
16237
16238 2004-09-06  Martin Baulig  <martin@ximian.com>
16239
16240         * mini.c (mono_method_to_ir): When initializing locals, handle a
16241         generic instances like a valuetype if it's a valuetype and like a
16242         class if it's a class.
16243
16244 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16245
16246         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16247         stack. Fixes #64674.
16248
16249         * exceptions.cs: Add test for unwinding of call arguments.
16250
16251 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16252
16253         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16254         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16255         set the carry/borrow flag). The sparc and s390 implementations
16256         can now use optimized versions (and simplify the code). ppc bugfixes.
16257
16258 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16259
16260         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16261
16262 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16263
16264         * inssel-amd64.brg: Remove leftover 32 bit rule.
16265
16266         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16267
16268 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16269
16270         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16271         mono_arch_find_jit_info functions into a new function. Fix a memory
16272         leak.
16273
16274         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16275         refactored code.
16276         
16277 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16278
16279         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16280         as well.
16281         
16282         * exceptions.cs: Add array size tests.
16283
16284         * mini.c: Allocate a separate icall wrapper for each arity of 
16285         mono_array_new_va. Fixes #59509.
16286
16287         * exceptions.cs: Add testcase for 64578.
16288
16289         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16290
16291         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16292         
16293 2004-09-02  Martin Baulig  <martin@ximian.com>
16294
16295         * mini.c (mono_method_to_ir): When initializing the locals, call
16296         handle_initobj() on the generic instance itself, not its
16297         underlying type.
16298
16299 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16300
16301         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16302         MonoJitInfo for dynamic methods.
16303
16304         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16305
16306         * mini.c: Add support for freeing JIT data for dynamic methods.
16307         
16308 2004-09-01  Martin Baulig  <martin@ximian.com>
16309
16310         * mini-x86.c (is_regsize_var): Added support for generic
16311         instances.
16312         (mono_arch_emit_prolog): Make this compile again, use
16313         `x86_push_imm_template (code)'.
16314
16315 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16316
16317         * mini-x86.c: make all push_imm instructions that get
16318         patched always emit the long form
16319
16320 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16321
16322         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16323         in a per-domain hash.
16324
16325         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16326         types.
16327
16328 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16329
16330         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16331         work.
16332         
16333         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16334         work.
16335
16336         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16337         Beginnings of SSE2 support.
16338
16339         * exceptions.cs: Add more tests for checked int<->uint casts.
16340
16341 2004-08-28  Martin Baulig  <martin@ximian.com>
16342
16343         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16344         generic instances.
16345
16346         * mini.c
16347         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16348         Handle generic instances recursively.
16349
16350 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16351
16352         * iltests.il: test for conv.u8 on a constant
16353
16354 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16355
16356         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16357         LCONV_x4 (shrun_32 (membase)).
16358
16359 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16360
16361         * inssel-x86.brg: c&p rules for push/setret of long
16362
16363 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16364
16365         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16366         compare (regvar, base)
16367
16368         * inssel-x86.brg: more burg love
16369
16370         * inssel.brg: more cleanup
16371
16372         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16373
16374 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16375
16376         * basic-long.cs, basic-calls.cs: new tests for optimization.
16377
16378 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16379
16380         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16381         patch.
16382
16383 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16384
16385         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16386         
16387 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16388
16389         * inssel.brg (mini_emit_memcpy): use 
16390         NO_UNALIGNED_ACCESS to disable memcpy optimization
16391
16392 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16393
16394         * mini-amd64.c: Handle generic types in various places.
16395
16396         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16397
16398 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16399
16400         * mini.c (handle_box): Fix warning.
16401
16402         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16403
16404         * mini-amd64.h: Enable the emit_state optimization.
16405
16406         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16407
16408         * mini-amd64.c: Add some new 64 bit peephole opts.
16409
16410         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16411
16412         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16413
16414         * mini-amd64.c: Register allocator fixes.
16415
16416         * mini.c: Add an optimization to emit_state to avoid allocation of new
16417         registers on some platforms.
16418
16419 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16420
16421         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16422
16423         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16424         allocation. Fixes #63085.
16425
16426         * basic-long.cs: Add new regression test.
16427
16428         * mini-amd64.c: Register allocator improvements.
16429
16430 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16431
16432         * mini-amd64.c (read_tls_offset_from_method): Add another code
16433         sequence.
16434
16435         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16436         instruction sequence for nullifying class init trampolines.
16437
16438         * objects.cs: Add new regalloc test.
16439
16440         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16441
16442 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16443
16444         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16445         
16446         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16447         arguments.
16448
16449         * driver.c: Fix profiling after TLS changes.
16450         
16451         * driver.c (mono_main): Set mono_stats.enabled if needed.
16452
16453         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16454         CEE_BOX.
16455
16456 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16457
16458         * mini-x86.c: use a 1 op rather than a 2 op tls access
16459         instruction -> faster.
16460
16461 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16462
16463         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16464         x86 backend.
16465
16466 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16467
16468         * exceptions-sparc.c (throw_exception): fix typo
16469
16470 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16471
16472         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16473         set tree->dreg correctly with tls. Allow any
16474         register to be used.
16475
16476         * mini-x86.c (read_tls_offset_from_method): add new code
16477         generation pattern seen with GCC.
16478
16479
16480 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16481
16482         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16483         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16484         exceptions-sparc.c: fix some performance issues in exception
16485         handling and setting of the stack trace for exceptions that were
16486         already thrown.
16487
16488 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16489
16490         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16491         x86 backend.
16492         
16493         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16494         registers.
16495
16496 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16497
16498         This patch inlines tls access, when possible.
16499         
16500         * mini.h: new arch functions for TLS intrinsics.
16501         All platforms updated with a stub.
16502
16503         * mini.c: use the new intrinsics
16504
16505         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16506         arch specific intrinsic for tls variables
16507
16508 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16509
16510         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16511         under windows.
16512
16513 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16514
16515         * mini.c: thread local allocation
16516
16517 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16518
16519         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16520
16521         * Makefile.am: Link against the static version of libmonogc.
16522         
16523         * Makefile.am: Link the static versions of the convenience libraries
16524         into the mono executable.
16525
16526         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16527
16528 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16529
16530         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16531         on integer overflow.
16532
16533         * mini-amd64.c: Reorganize function call code.
16534
16535         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16536
16537 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16538
16539         * inssel-x86.brg: use xor eax,eax.
16540         
16541         * basic.cs: new tests
16542
16543 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16544
16545         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16546         in exception throwing code.
16547         
16548 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16549
16550         * inssel-x86.brg: use xor esi,esi.
16551
16552 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16553
16554         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16555         can trace methods compiled during mini_init () too.
16556
16557         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16558         CEE_CONV_U4.
16559
16560 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16561
16562         * Makefile.am: static link on x86 (r=zoltan)
16563
16564 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16565
16566         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16567         code since it causes some programs to fail.
16568
16569 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16570
16571         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16572
16573 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16574
16575         * mini.c: ovfops_op_map - add STACK_OBJ case for
16576         CONV_I 
16577         * basic.cs: add test_0_pin_string as test
16578         case for above.
16579
16580 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16581
16582         * Makefile.am: build C# if srcdir != builddir
16583
16584 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16585
16586         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16587         fall-through blocks.
16588
16589 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16590
16591         * driver.c: enable loop by default again and include abcrem in -O=all.
16592
16593 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16594
16595         * iltests.il: Add some localloc tests.
16596
16597         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16598
16599         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16600         Fixes #62574.
16601
16602         * inssel-amd64.brg: Add some optimizations.
16603
16604         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16605         for gcc-3.4.
16606
16607         * Makefile.am: Statically link mono against libmono on AMD64.
16608         
16609         * mini-amd64.c inssel-amd64.brg: Optimizations.
16610
16611 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16612
16613         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16614
16615         * tramp-amd64.c: Patch calling code in trampolines.
16616
16617 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16618
16619         * mini-amd64.c: pinvoke struct passing fixes.
16620
16621 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16622
16623         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16624         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16625
16626 2004-08-05  Duncan Mak  <duncan@ximian.com>
16627
16628         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16629         CEE_LDELEM_ANY.
16630
16631 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16632
16633         * mini-amd64.c (emit_move_return_value): Move return value for normal
16634         calls too.
16635
16636 2004-08-05  Martin Baulig  <martin@ximian.com>
16637
16638         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16639         `type->type'; just modify `type' itself when dealing with enums
16640         and generic instances.
16641         (check_call_signature): Make `simple_type' a `MonoType *'.
16642
16643 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16644
16645         * mini.c: Use OP_PADD to add offsets to addresses.
16646
16647         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16648
16649 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16650
16651         * mini-sparc.c (mono_arch_emit_epilog): fix check
16652         for folding last op into restore instruction
16653
16654 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16655
16656         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16657         helper methods using the code manager.
16658         
16659         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16660
16661         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16662
16663 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16664         
16665         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16666           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16667
16668         * mini-s390.c: fix tail processing
16669
16670 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16671
16672         * mini-ppc.c: mul.ovf.un exception name fix.
16673
16674 2004-08-03  Martin Baulig  <martin@ximian.com>
16675
16676         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16677         instances; before jumping to `handle_enum', also modify `ptype'.
16678
16679 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16680
16681         * cpu-sparc.md: fcall maximal length too small.
16682
16683 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16684
16685         * mini-amd64.c mini.h: Add initial support for passing/returning 
16686         structures to/from pinvoked methods.
16687
16688 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16689
16690         * mini-ppc.c: reg allocator fix.
16691
16692 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16693
16694         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16695
16696         * inssel.brg: Optimize memset on 64 bit machines.
16697
16698         * mini-amd64.c: Fix some vararg cases.
16699
16700 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16701
16702         * mini-s390.c: Corrected macro in emit_float_to_int
16703
16704         * s390-abi.cs: Tests to exercise the s390 ABI
16705
16706 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16707
16708         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16709         caller saved regs.
16710
16711         * basic.cs: Add a test for add.ovf.un.
16712
16713 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16714
16715         * mini-sparc.c: add case for OP_IDIV_UN
16716
16717 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16718
16719         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16720         
16721         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16722
16723 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16724
16725         * basic.cs: regression tests.
16726
16727         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16728         regressions.
16729
16730 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16731
16732         * basic.cs: Add a new test.
16733
16734         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16735         and AOT. Various fixes and optimizations.
16736
16737         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16738
16739 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16740
16741         * mini-ppc.c: make sure temp regs are not used for global reg
16742         allocation.
16743
16744 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16745
16746         * cpu-sparc.md: conv_i8 fix for 64bits
16747
16748         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
16749
16750 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
16751         
16752         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
16753         add opcode for cmp BYTE PTR [eax], imm.
16754
16755         * inssel.brg: Make memcpy and memset takes bases.
16756
16757 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16758
16759         * *-amd64.*: More AMD64 work.
16760         
16761 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16762
16763         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
16764         add a compare-not-equal opcode.
16765         
16766 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16767
16768         * mini.c: Use mono_init_from_assembly instead of mono_init.
16769         
16770 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16771
16772         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
16773
16774         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
16775
16776         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
16777
16778         * inssel.brg: 64 bit fixes.
16779
16780         * mini.h (MonoCallInst): Add some AMD64 specific data.
16781
16782         * mini.h: Add some OP_P opcodes.
16783
16784 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16785
16786         * basic.cs: tests for 61797 and 61740
16787
16788 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16789
16790         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
16791         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
16792
16793 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
16794
16795         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
16796
16797         * *-amd64*.*: Ongoing AMD64 work.
16798
16799 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
16800
16801         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
16802
16803         * *-amd64*: Ongoing AMD64 work.
16804
16805         * mini-arch.h: Add AMD64 support.
16806
16807         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
16808
16809         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
16810
16811         * mini-ops.h: Add new opcodes.
16812
16813         * Makefile.am: Add AMD64 support.
16814
16815         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
16816         rules into the inssel-long*.brg files.
16817
16818         * *-amd64.*: Add beginnings of AMD64 backend.
16819
16820 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
16821
16822         * mini.c (print_dfn): commenting out the code that prints
16823         the cil. With -O=deadce, this makes -v -v crash.
16824         
16825         * cpu-pentium.md: make checkthis have a length of 2
16826
16827 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
16828
16829         * mini-sparc.h: fix implementations of __builtin
16830         functions for Sun compiler for V9.
16831
16832 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16833
16834         * mini.c: use the new stelem.ref wrapper
16835         * exceptions.cs, arrays.cs: new stelem.ref tests
16836
16837 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16838
16839         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
16840         new XSP should work with these changes).
16841
16842 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
16843         
16844         * inssel-{long32,x86,}.brg: trivial optimizations.
16845         
16846 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16847
16848         * mini.c: load value when emitting box operation in
16849         constrained calls.
16850
16851 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
16852
16853         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
16854         is one byte shorter than cmp DWORD PTR [eax], 0.
16855
16856 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16857
16858         * inssel-ppc.brg: arguments on the stack are always
16859         relative to the stack pointer (spotted by Neale Ferguson).
16860
16861 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16862
16863         * exceptions-x86.c: delay appending the method name to the trace until
16864         after mono_jit_info_table_find is called, as this gets the real
16865         MonoMethod.
16866
16867 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16868
16869         * aot.c: register roots
16870
16871 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16872
16873         * aot.c : I could just use PLATFORM_WIN32 flag.
16874
16875 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16876
16877         * aot.c : Reverting the previous fix. This time it broke linux build.
16878
16879 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16880
16881         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
16882
16883 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16884
16885         * mini.c (handle_stack_args): Remove some more debugging code.
16886         
16887         * mini.c (handle_stack_args): Remove debug output left in by mistake.
16888
16889         * driver.c mini.h aot.c: Allow additional options to be specified with
16890         --aot and pass them to mono_compile_assembly.
16891
16892         * aot.c: Add experimental code to AOT compile all loaded assemblies
16893         on demand and save the code into a cache in the filesystem.
16894
16895         * aot.c: Add support for more wrapper methods.
16896         
16897         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
16898         58863.
16899
16900         * cpu-*.md: Remove removed opcodes.
16901
16902         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
16903         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
16904         related icalls to marshal.c.
16905
16906 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
16907
16908         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
16909
16910         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
16911
16912         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
16913
16914 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16915         * liveness.c: If liveness is recomputated we need to reset the information
16916         for each variable. This way, if the liveness range has been narrowed
16917         by optimizations that happened after the last computation, we can return
16918         a smaller range.
16919         
16920         For example, if you have
16921         
16922         {
16923                 int i = 0;
16924                 
16925                 // Tons of code that does not affect i
16926                 
16927                 i = foo ();
16928                 ...
16929         }
16930         
16931         i = 0 is dead code and will be removed by SSA. However, when
16932         linear scan gets to the code, i will still appear to be live
16933         throughout the entire block. This prevents good register allocation.
16934
16935 2004-07-06  Martin Baulig  <martin@ximian.com>
16936
16937         * debug-mini.c (mono_debug_init_method): Allow
16938         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
16939         (mono_debug_add_icall_wrapper): New method.
16940
16941         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
16942
16943 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16944
16945         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
16946         optimization.
16947
16948 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16949
16950         * aot.c (mono_aot_load_method): Fix loading of debug info.
16951
16952 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16953
16954         * aot.c: Add logging support.
16955
16956 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16957
16958         * mini.h: Add prototype for mono_print_method_from_ip.
16959
16960         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
16961
16962         * inssel.brg: 64 bit fixes.
16963
16964         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
16965         inssel-long32.brg.
16966
16967         * Makefile.am: Add SPARC64 support.
16968
16969 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16970
16971         * aot.c: Fix alignment problems on 32 bit platforms.
16972
16973 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16974
16975         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
16976         SPARC64.
16977
16978         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
16979         problems.
16980
16981         * mini.h: Bump AOT file version. Some 64 bit fixes.
16982
16983 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16984
16985         * inssel-sparc.brg: Add new rule to avoid register moves.
16986
16987         * inssel.brg: Add ldind_to_load_membase helper function.
16988
16989 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16990
16991         * mini.c: OffsetToStringData intrinsic.
16992         
16993 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16994
16995         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
16996
16997         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
16998         regression tests.
16999
17000         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
17001 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17002
17003         * mini.c: reinstated mono_compile_get_interface_var()
17004         on x86, too, since the change breaks the Gtk# build there as well.
17005
17006 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17007
17008         * driver.c: remove loop from the default optimizations: it seems to
17009         interact badly with some of the other options (see bug #60613).
17010
17011 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
17012
17013         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
17014         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
17015
17016 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
17017
17018         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
17019         vararg-using methods.
17020
17021 2004-06-21  Martin Baulig  <martin@ximian.com>
17022
17023         * mini/mini-exceptions.c
17024         (mono_handle_exception): Added `gpointer original_ip' argument.
17025         After calling mono_unhandled_exception(), call
17026         mono_debugger_unhandled_exception() and if that returns true,
17027         restore the context and return.
17028
17029 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17030
17031         * mini-ppc.c: prefer the use of relative branches so
17032         they won't need to be patched in aot code (patch from Patrick Beard).
17033
17034 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17035
17036         * aot.c: patch from Patrick Beard to make the output assembly
17037         more correct for the MacOSX assembler. Small tweak to
17038         generate sane images on Linux/PPC, too.
17039
17040 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17041
17042         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17043         case until bug #59509 is fixed (shows up in #60332).
17044
17045 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17046
17047         * mini.c: make sure the needed wrappers are compiled, too, with
17048         precomp.
17049
17050 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17051
17052         * driver.c: remove NPTL reference in --version output.
17053
17054 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17055
17056         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17057         generate valid assembly for the Mach-O assembler.
17058
17059 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17060
17061         * driver.c: don't include abcrem in the all optimization specifier
17062         since it slows down jit compilation too much for now.
17063
17064 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17065
17066         * mini.c: use BIGMUL only if both operands have the same signage.
17067         * iltests.il: Test for bug 60056. (errors related to signage in
17068         BIGMUL).
17069
17070         r=lupus.
17071
17072 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17073
17074         * mini.c, aot.c: memory leak fixes.
17075
17076 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17077
17078         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
17079
17080 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
17081
17082         * Makefile.am: remove the -static hack completely, it links in
17083         statically glib as well.
17084
17085 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
17086
17087         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
17088         * exceptions.cs: make it compile with new mcs/csc.
17089
17090 2004-06-03 Massimiliano Mantione <massi@ximian.com>
17091         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
17092         and added relevant test case.
17093
17094 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17095
17096         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
17097         regressions in gtk-sharp.
17098
17099 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17100
17101         * exceptions.cs: New regression tests.
17102
17103         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17104
17105 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17106
17107         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17108
17109 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17110
17111         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17112
17113         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17114
17115 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17116
17117         * mini.c (mono_jit_runtime_invoke): Init class in this
17118         method instead of trusting mono_jit_compile_method to
17119         do the work (because wrappers can be in object class)
17120
17121 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17122
17123         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17124
17125         * basic-long.cs: New regression test.
17126
17127 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17128
17129         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17130         and div/rem checks.
17131
17132 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17133
17134         * Makefile.am: fix miguel's change to build mono statically against
17135         libmono (track build dependencies).
17136
17137 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17138
17139         * cfold.c: Some glib versions do not have G_MININT32.
17140
17141 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17142
17143         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17144         with precision of tan, atan, sin and cos, and implemented related
17145         regressions tests (fixes bug 54467, but one new problem appeared and
17146         is not fixed yet).
17147
17148 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17149
17150         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17151
17152         * exceptions.cs: Add test for constant folding && division by zero.
17153
17154         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17155         since driver.c is in libmono too, so the optimization was useless.
17156
17157         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17158         variable to driver.c so the compiler can emit more efficient code to
17159         access them.
17160
17161 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17162
17163         * Makefile.am: don't distribute generated inssel.[ch] files.
17164
17165 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17166
17167         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17168         into the default appdomain. Fixes #58707.
17169
17170         * jit-icalls.c: Remove the broken approximation for truncl, doing
17171         no conversion is better.
17172
17173         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17174         Fixes #58863.
17175
17176 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17177
17178         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17179         of the mcrxr instruction which is not available on some processors
17180         even if it's documented to be. Implement add and sub overflow correctly
17181         (still not complete for long unsigned). Speed up icalls a bit.
17182
17183 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17184
17185         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17186         we run .cctor in the current domain instead of target_domain.
17187         
17188         Fixes bug #58558, .cctor not being called in -O=shared.
17189
17190 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17191
17192         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17193
17194 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17195
17196         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17197         which can be done with an imm8, do it that way.
17198         (mono_arch_output_basic_block): ditto for a jmp
17199         (mono_arch_emit_prolog): Computate maximum offset of a label.
17200
17201 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17202
17203         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17204         now tries to allocate prefered physical reg's for virtual
17205         regs. This reduces the number of emited spills/loads with
17206         20-30% on our core assemblies.
17207
17208 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17209
17210         * jit-icalls.c: truncl() is not needed and trunc() is
17211         the correct thing to do anyway (bug #58287).
17212
17213 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17214
17215         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17216         if available.
17217
17218 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17219
17220         * driver.c: enable loop optimizations by default.
17221
17222 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17223
17224         * mini-x86.c: fix calc of max loop size when aligning loops start.
17225
17226 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17227
17228         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17229         the stack.
17230
17231 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17232
17233         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17234         should set carry.
17235
17236         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17237
17238         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17239         
17240         * mini.c (inline_method): Allways inline some wrappers even if the cost
17241         is too large. Fixes #58785.
17242
17243         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17244         
17245 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17246
17247         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17248         (crichton@gimp.org). Beginning of support for sparc/linux.
17249
17250         * mini-sparc.c: Optimize retrieval of LMF address.
17251
17252 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17253
17254         * exceptions-ppc.c:  handle alloca in methods with clauses.
17255
17256 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17257
17258         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17259
17260 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17261
17262         * mini.c: Delegate most of the abort signal work to 
17263           mono_thread_request_interruption, which also handles Stop and Suspend
17264           states.
17265
17266 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17267
17268         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17269         supports the save/restore lmf opcodes.
17270
17271 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17272
17273         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17274         by gcc-3.4 as well.
17275
17276         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17277
17278 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17279
17280         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17281         methods which contain array accesses.
17282
17283         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17284         boundaries. Fixes #58537.
17285
17286         * iltests.il: Add regression test for #58537.
17287
17288 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17289
17290         * mini-x86.c (mono_arch_local_regalloc): Last part of
17291         fix for bug #58633 (releasing register to early).
17292
17293 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17294
17295         * basic-long.cs: Add new regression test.
17296
17297 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17298
17299         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17300         register too early on the chain.
17301
17302 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17303
17304         * mini.c (create_helper_signature): Use a helper function to reduce
17305         the code which needs to be written. Also set the calling convention of
17306         icalls on windows. Fixes #57840.
17307
17308 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17309
17310         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17311         exceptions-ppc.c: added helper function to get the instruction address
17312         from a signal handler context.
17313
17314 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17315
17316         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17317         from gonzalo.
17318
17319 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17320
17321         * helpers.c: Add new env variable to pass args to objdump.
17322         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17323
17324 2004-05-17  Radek Doulik  <rodo@ximian.com>
17325
17326         * Makefile.am (common_sources): added abcremoval.h so it get
17327         disted and daily mono packages on go-mono.com will build again
17328
17329 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17330
17331         * abcremoval.c: Fixed coding style, added copyright header.
17332
17333         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17334
17335         * mini.h: Added prototype for abc removal main function.
17336
17337         * build_relations_propagation_table.pl: Added copyright header.
17338
17339 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17340
17341         * basic-long.cs: reg test for complex ceq_long bug.
17342
17343 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17344
17345         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17346         reg in long and clob case (bug #58343). Fixed/added comments.
17347
17348 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17349
17350         * mini.c (mono_jit_runtime_invoke): Follow new convention
17351         of calling the invoke method with an function pointer.
17352
17353 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17354
17355         * ChangeLog: Fix author of memory leak patch.
17356
17357 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17358
17359         * Makefile.am: fix make dist as well...
17360
17361
17362 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17363
17364         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17365         on archs where pointers are 4 bytes long.
17366
17367         * Makefile.am: Added abcremoval.c source file.
17368
17369         * abcremoval.c: Added abcremoval.c.
17370
17371         * abcremoval.h: Added abcremoval.h.
17372
17373         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17374
17375         * inssel.brg: Enabled bounds check removal.
17376
17377         * mini.c: Added support for abcrem optimization.
17378
17379         * mini.h: Added abcrem optimization label.
17380
17381         * driver.c: Added support for abcrem optimization.
17382
17383         * propagated_relations_table.def: Added propagated_relations_table.def.
17384
17385 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17386
17387         * mini.c, cfold.c: fix style.
17388
17389 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17390
17391         * mini.c: handle issue with the low-level implementation of
17392         some long opcodes (bug #54209).
17393
17394 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17395
17396         * basic.cs: test for my new cmov stuff.
17397
17398 2004-05-13      Patrik Torstensson
17399
17400         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17401         opt and added peephole documentation.
17402
17403 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17404
17405         * tramp-ppc.c: rewrote the generic trampoline code.
17406
17407 2004-05-11      Patrik Torstensson
17408
17409         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17410
17411 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17412
17413         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17414
17415         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17416         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17417
17418         * mini.c: Add new icalls for AsAny marshalling.
17419
17420 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17421
17422         * tramp-ppc.c, mini-ppc.c: more cleanups.
17423
17424 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17425
17426         * mini.c: no warnings.
17427
17428 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17429
17430         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17431
17432 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17433
17434         * mini.c: In the thread abort signal handler, if the thread is in the
17435         process of being stoped, don't throw the Abort exception, just stop the
17436         thread.
17437
17438 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17439
17440         * tramp-ppc.c: removed old code.
17441
17442 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17443
17444         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17445         do some simple speed optimizations on ppc.
17446
17447 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17448
17449         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17450         and large offsets in load/store.
17451
17452 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17453
17454         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17455         it causes regressions.
17456
17457 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17458
17459         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17460         support.
17461
17462 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17463
17464         * jit-icalls.c: remove warnings.
17465         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17466         speedups for unsafe code.
17467
17468 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17469
17470         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17471
17472 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17473
17474         * basic-calls.cs: Add new regression test.
17475
17476         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17477         more portable.
17478
17479         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17480
17481         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17482         is no longer used.
17483
17484 2004-05-06      Patrik Torstensson
17485
17486         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17487         long reg allocation in any reg (not only eax:edx) and implemented 
17488         long shl/shr ops in asm instead of helpers.
17489
17490 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17491
17492         * mini-sparc.h: Fix warnings.
17493
17494         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17495         stack.
17496
17497         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17498         separate statement for clarity.
17499
17500         * mini-sparc.c: Update status.
17501
17502 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17503
17504         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17505         here.
17506
17507 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17508
17509         * inssel-ppc.brg: another small pre-release workaround:
17510         we don't do overflow detection for long_sub_un.
17511
17512 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17513
17514         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17515         (also works around a weird ppc bug: 57957).
17516
17517 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17518
17519         * tramp-ppc.c: trampoline fixes.
17520
17521 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17522
17523         * mini-ppc.c: fixed typos.
17524
17525 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17526
17527         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17528         at the top of the stack. Fixed typos. Use a frame registers
17529         for all the methods with exception clauses.
17530
17531 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17532
17533         * exceptions-ppc.c: restore fp registers.
17534
17535 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17536
17537         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17538         order from the stack top (moved the stack room to save the
17539         return value for trace after the param area). Fixed corruption
17540         in restoring registers on unwind.
17541
17542 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17543
17544         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17545
17546 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17547
17548         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17549         and prolog/epilog for methods that use it. Allow
17550         enough param area room for varargs methods. Fix miguel's
17551         breakage in exception handling.
17552
17553 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17554
17555         * Makefile.am: run genmdesc only on current arch.
17556
17557 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17558
17559         * exceptions-x86.c:
17560         * mini-x86.h: fix the build on windows.
17561
17562 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17563
17564         * 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.
17565
17566         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17567
17568         * mini-exceptions.c: New file.
17569         
17570         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17571         Move some parts of the x86 exception handling code to an 
17572         arch-independent file so it can be shared with other ports.
17573
17574 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17575
17576         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17577
17578 2004-04-26  David Waite  <mass@akuma.org>
17579
17580         * driver.c: remove comma from end of enumeration declaration
17581
17582 2004-04-26  Jackson Harper  <jackson@ximian.com>
17583
17584         * driver.c: parse config file before loading first assembly. This
17585         allows the user gac to be enabled/disabled. 
17586         
17587 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17588
17589         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17590         simpler mechanism: we do not care what is encoded initially
17591         (branch absolute or relative), we care about the code and its
17592         target.  I kept the old code for reference for now.
17593
17594         The new code tries first to determine if the jump is anywhere in
17595         the -/+32 absolute meg range, if it succeeds, it encodes using the
17596         absolute branch;  If not, it tried to find something in the
17597         relative range, if not, it uses the handle_thunk code. 
17598
17599 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17600
17601         * exceptions-ppc.c: use the correct ip register on macosx.
17602
17603 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17604
17605         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17606
17607 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17608
17609         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17610         Raise exception on integer divide by zero by hand since the hw
17611         doesn't support it. Handle NaNs in FP compares.
17612
17613 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17614
17615         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17616         code reducing duplication between the platforms and enabled
17617         signal exception handling (on linux for now).
17618
17619 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17620
17621         * exceptions-ppc.c: more macosx support.
17622
17623 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17624
17625         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17626
17627 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17628
17629         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17630
17631 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17632
17633         * iltests.il: more tests.
17634
17635 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17636
17637         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17638         vars as well.
17639
17640 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17641
17642         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17643
17644 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17645
17646         * liveness.c: Mark variables as volatile in all basic blocks reachable
17647         from exception clauses.
17648
17649 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17650
17651         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17652         inlining.
17653
17654 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17655
17656         * iltests.il, basic.cs: more tests for regalloc.
17657
17658 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17659
17660         * iltests.il: Some tests for register allocation modifications
17661         I have locally.
17662
17663 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17664
17665         * exceptions.cs: Add regression test for bug #56782.
17666
17667         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17668         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17669         the beauty of fixing the same thing in 5 different files...
17670
17671 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17672
17673         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17674         methods.
17675
17676 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * mini.c: Add support for STRWLPARRAY marshalling convention.
17679
17680 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17681
17682         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17683         to init the context to setup the regs pointer).
17684
17685 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17686
17687         * exceptions-ppc.c: more exceptions work.
17688
17689 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17690
17691         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17692         not allowed.
17693
17694 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17695
17696         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17697         can use the memory directly.
17698
17699         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17700
17701         add x86_add_membase, x86_sub_membase, x86_mul_membase
17702
17703 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17704
17705         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17706         GENERAL_REGS they were also hardcoded for all PPC ports.
17707
17708         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17709
17710         Remove hard-coded limit for floating point registers, use
17711         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17712
17713         Notice that in MacOS X calling conventions you can fit a lot more
17714         floating point values in registers, so I should update the PInvoke
17715         test to excercise the passing of floating point values on the
17716         stack (currently broken).
17717         
17718 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17719
17720         * tramp-ppc.c (create_trampoline_code): Added
17721         JUMP_TRAMPOLINE_SIZE. 
17722         (ppc_magic_trampoline): Follow the pattern from
17723         x86_magic_trampoline: if code is set to zero, return. 
17724         (create_trampoline_code): Always pass MonoMethod to the jump
17725         trampoline, before it was passing a null.
17726         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17727         share the code with mono_arch_create_jit_trampoline. 
17728
17729         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17730         implemented.
17731         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17732         implemented.  
17733
17734         * cpu-g4.md: Added length for jmp instruction, the worst case
17735         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17736         for save_lmf).
17737
17738 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17739
17740         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17741
17742 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17743
17744         * mini.c: Only set bblock->real_offset when adding a new bblock, and
17745         before each IL instruction.
17746
17747         * mini.c (CEE_BOX): Fix warnings.
17748
17749 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17750
17751         * mini.c: removed a few unused vars and extra whitespace.
17752
17753 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
17754
17755         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
17756         checks.
17757         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
17758         index.
17759         (OP_GETCHR): use the above
17760         (CEE_LDELEMA): use the above.
17761
17762         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
17763         version of the generic impl.
17764         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
17765         (CEE_LDELEMA): use the above.
17766
17767 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17768
17769         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
17770         Fixes #56317.
17771
17772         * iltests.il: Added new regression test for #56317.
17773
17774 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17775
17776         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
17777         under NetBSD. Fixes #56450.
17778
17779         * liveness.c (update_gen_kill_set): Fix previous patch.
17780
17781 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17782
17783         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
17784
17785 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17786
17787         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
17788         ldsfld and ldsflda.
17789
17790         * inssel-sparc.brg: Add more optimizations.
17791
17792         * mini-sparc.c: Replace multiply/divide with shifts if possible.
17793
17794 2004-04-01  Martin Baulig  <martin@ximian.com>
17795
17796         * mini.c (handle_box): New static function; moved the
17797         implementation of CEE_BOX here.
17798         (mono_method_to_ir): Added `constrained_call' variable.
17799         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
17800         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
17801         mono_method_get_constrained() to get the method.
17802
17803 2004-04-01  Martin Baulig  <martin@ximian.com>
17804
17805         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
17806         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
17807         (mono_method_to_ir): We don't need these macros anymore since
17808         mono_class_get_full() already takes care of it. 
17809
17810 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17811
17812         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
17813         use @function (as doesn't accept #function here) and check the return
17814         value of system and stop if fails.
17815
17816 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17817
17818         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
17819
17820 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
17821
17822         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
17823
17824         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
17825
17826         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
17827         #56223.
17828
17829         * basic-long.cs: Add test for negation of Int64.MinValue.
17830
17831 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
17832
17833         * mini-sparc.c: Update status.
17834
17835         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
17836
17837         * exceptions-sparc.c: Fix return value in filters.
17838
17839         * inssel-sparc.brg: Fix register allocation in some rules.
17840
17841 2004-03-28  Martin Baulig  <martin@ximian.com>
17842
17843         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
17844         if neccessary.  
17845
17846 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17847
17848         * mini-x86.c (mono_arch_patch_code): Fix warnings.
17849         
17850         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
17851         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
17852         remove unused conv_u4 opcode.
17853
17854         * mini-x86.c: Remove valgrind workaround since it slows down things
17855         even when mono is not run under valgrind.
17856
17857 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
17858
17859         * mini-sparc.c: Update status.
17860
17861         * inssel-sparc.brg: Add some optimizations.
17862
17863         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
17864         future delay slot filling. Add support for varargs, tail calls and JMP.
17865
17866         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
17867         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
17868
17869         * inssel.brg: Fix register allocation in OP_ARGLIST.
17870
17871         * inssel.brg: Fix warnings.
17872
17873 2004-03-25  Martin Baulig  <martin@ximian.com>
17874
17875         * mini.c (inflate_generic_field): Removed.
17876         (mini_get_method): Removed, use mono_get_method_full(),
17877         (mini_get_class): Removed, use mono_class_get_full().
17878         (mono_method_to_ir): Pass our generic context to
17879         mono_field_from_token().        
17880
17881 2004-03-25  Martin Baulig  <martin@ximian.com>
17882
17883         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
17884         of a `MonoMethod *'.
17885         (mini_get_method): Take a `MonoGenericContext *' instead
17886         of a `MonoMethod *'.
17887         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
17888         a new local variable called `generic_context' which holds the
17889         current `MonoGenericContext *'; use it to lookup things.
17890
17891 2004-03-24  Martin Baulig  <martin@ximian.com>
17892
17893         * mini.c (mini_get_class): New static method; if we're inside a
17894         generic instance, inflate the class if neccessary.
17895         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
17896
17897 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17898
17899         * iltests.il: New regression test for #55976.
17900
17901         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
17902         #55976.
17903
17904 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17905
17906         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
17907         output.
17908
17909 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17910
17911         * liveness.c: Consider SSA stores as well as loads when making vars
17912         volatile.
17913
17914         * exceptions.cs: New regression tests for register allocation.
17915         
17916 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17917
17918         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
17919         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
17920           domain lock only to protect puntual access to data structures.
17921           Added access lock for sighash, jit_icall_hash_name, 
17922           jit_icall_hash_addr and domain->code_mp.
17923
17924 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
17925
17926         * driver.c: Print SIGSEGV handling method.
17927
17928         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
17929
17930         * mini.c (setup_jit_tls_data): Handle case when this is called
17931         multiple times for a thread.
17932
17933         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
17934         is different from fbxx_un. Fixes #54303. Also use constants instead of
17935         magic numbers in a lot of places.
17936
17937 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
17938
17939         * exceptions.cs: Fix cctor test when --regression is used.
17940
17941 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
17942
17943         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
17944         for Linux/ppc.
17945
17946 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17947
17948         * inssel-ppc.brg: fixed register assignments for some rules.
17949
17950 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * exceptions.cs: Add test for exceptions in static constructors.
17953
17954         * mini.c (mono_jit_compile_method_with_out): Move the calling of
17955         static constructors outside the domain lock. Fixes #55720.
17956
17957 2004-03-17  Martin Baulig  <martin@ximian.com>
17958
17959         * mini.c (get_generic_field_inst): Removed, this'll never happen.
17960         (inflate_generic_field): Take the `MonoMethod *' instead of the
17961         `MonoClass *' and added support for generic method.
17962         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
17963         have a `field->parent->gen_params', only inflate the field if it's
17964         an open constructed type.
17965
17966 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17967
17968         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
17969         exception object instead of the preconstructed ones.
17970
17971 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17972
17973         * mini.c: reverted changed to sigsegv_signal_handler commited
17974         accidentally in the previous patch.
17975
17976 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17977
17978         * mini.c:
17979         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
17980         running --aot with an old assembly.
17981
17982 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17983
17984         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
17985         point values.
17986
17987         * mini-sparc.c: Add support for v9 branches with prediction.
17988
17989 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
17990
17991         * mini.c (mini_init): #warning is GNUC only
17992
17993         * mini-sparc.h: implement __builtin_frame_address
17994         and __builtin_return_address for Sun C compiler
17995
17996 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
17997
17998         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
17999
18000 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18001
18002         * basic-calls.cs: Add test for unaligned byref long argument passing.
18003
18004         * mini-ops.h: Add sparcv9 compare and branch instructions.
18005
18006         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
18007         v9 instructions if we have a v9 cpu.
18008
18009         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
18010         registers for global allocation.
18011
18012         * exceptions-sparc.c: Fixes.
18013         
18014 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
18015
18016         * liveness.c (mono_analyze_liveness): Optimized version.
18017
18018         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
18019
18020         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
18021         sparc work.
18022
18023         * basic-float.cs basic-calls.cs: New regression tests.
18024
18025 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
18026
18027         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
18028         sigaltstack implementation.
18029
18030         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
18031         
18032         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
18033         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18034
18035 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18036
18037         * mini.c: Fix warnings.
18038         
18039         * mini.c (mono_resolve_patch_target): New function which contains the
18040         arch independent part of the patching process.
18041
18042         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18043         patching code to a separate function.
18044
18045 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18046
18047         * mini.c (add_signal_handler): ifdef out on Windows
18048
18049 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18050
18051         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18052         cpu-sparc.md: Add exception handling support + other fixes.
18053
18054         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18055         typed GC detection in --version.
18056
18057         * basic.cs exceptions.cs: New regression tests.
18058
18059         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18060         the arch specific code can store data during a compilation.
18061
18062         * mini-ops.h: Add OP_SETFRET.
18063
18064         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18065         function, register a separate icall for each arity, so the icalls can
18066         get a wrapper.
18067         
18068         * mini.c (mono_print_tree): Print negative offsets in a more readable
18069         form.
18070         
18071         * mini.c: Make signal handling work on sparc.
18072         
18073         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18074
18075         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18076
18077         * jit-icalls.c: Emulate truncl by aintl on solaris.
18078
18079         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
18080
18081 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18082
18083         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18084
18085 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18086
18087         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
18088         a MarshalByRef type, inline a method that performs the check, taking into
18089         account that the object can be a proxy. Also implemented tow new opcodes:
18090         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18091         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
18092         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18093
18094 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18095
18096         * mini-ppc.c: if a relative branch displacement is too big
18097         but it points to and area reachable with an absolute branch, 
18098         avoid the thunks.
18099
18100 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18101
18102         * mini.c: optimize small copies in cpblk.
18103
18104 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18105
18106         * basic-calls.cs basic-float.cs: New regression tests.
18107
18108         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18109         negative offsets from %fp. Implement localloc. Fix local register 
18110         allocation. Fix the case when the this argument needs to be saved to
18111         the stack. Implement some missing opcodes.
18112
18113 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18114
18115         * mini.c (mini_method_compile): Reenable global regalloc in methods
18116         with exception handlers.
18117
18118         * linear-scan.c (mono_varlist_sort): Fix warning.
18119
18120         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18121
18122         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18123         regalloc costs.
18124
18125         * liveness.c: Make all variables uses in exception clauses volatile, to
18126         prevent them from being allocated to registers. Fixes #42136.
18127
18128 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18129
18130         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18131         causes regressions.
18132
18133         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18134         argument to mono_arch_regalloc_cost.
18135
18136         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18137         precisely.
18138
18139 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18140
18141         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18142         Make the cost of allocating a variable to a register arch dependent.
18143
18144         * basic-calls.cs: Fix compilation of tests.
18145         
18146         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18147         helper function to cut back on the number of #ifdefs needed.
18148
18149         * mini-ppc.c: Fix compilation.
18150
18151         * basic-calls.cs: New regression tests.
18152
18153         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18154
18155         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18156         of l0 since that is callee saved.
18157
18158         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18159         to virtual calls.
18160
18161         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18162         of delay instruction.
18163
18164         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18165
18166         * mini.h (MonoCallInst): Add 'virtual' flag.
18167
18168         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18169
18170 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18171
18172         * *.cs: New regression tests.
18173
18174         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18175         work.
18176
18177         * mini.c (mono_runtime_install_handlers): Fix build.
18178
18179         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18180         'signal_stack_size' members.
18181
18182         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18183         alternate signal stack.
18184
18185         * exceptions-x86.c: Add stack overflow handling.
18186
18187         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18188         functions to arch independent code.
18189
18190         * mini.c (mono_print_tree): Print more detailed info for load_membase
18191         opcodes.
18192         
18193 2004-02-23  Martin Baulig  <martin@ximian.com>
18194
18195         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18196
18197 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18198
18199         * mini-x86.c: fixed reg allocation for div/rem.
18200
18201 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18202
18203         * driver.c (mono_main): Report some configuratio options on --version.
18204
18205 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18206
18207         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18208         low in the address space. Correctly flush memory in thunks where we
18209         output native code.
18210
18211 2004-02-20  Martin Baulig  <martin@ximian.com>
18212
18213         * mini.c (mini_get_method): New static method; inflate all generic
18214         methods and methods in open generic instances.
18215         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18216         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18217
18218 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18219
18220         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18221
18222         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18223
18224 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18225
18226         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18227
18228         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18229         it compile using Sun's compiler.
18230
18231 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18232
18233         * 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.
18234
18235         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18236
18237 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18238
18239         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18240         code.
18241         * mini-ppc.c: handle calls outside of the allowed range with thunks
18242         allocated using the code manager.
18243         * tramp-ppc.c: use the code manager to hold generated native code.
18244         Fixed the magic trampoline to just patch vtable entries.
18245
18246 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18247
18248         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18249         independent file.
18250
18251 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18254         PPC.
18255
18256         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18257         if we have a working __thread implementation.
18258
18259         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18260         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18261
18262 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18263
18264         * mini-x86.c: Fix compilation under gcc 2.
18265         
18266 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18267
18268         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18269         contains a call to the wrapped function.
18270
18271         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18272         OP_<CALL>_IMM opcodes, and use them under X86.
18273         
18274         * mini.c (mono_jit_find_compiled_method): Fix warning.
18275
18276         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18277
18278         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18279
18280         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18281         functionality to mini.c.
18282
18283         * mini.c (mono_create_jump_trampoline): New function to create a jump
18284         trampoline. Return a compiled method instead of a trampoline if it
18285         exists. Add a cache for jump trampolines.
18286
18287         * mini.c (mono_jit_find_compiled_method): New function to return a
18288         compiled method if it exists.
18289
18290         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18291         mono_arch_create_jit_trampoline.
18292
18293         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18294         a jump trampoline. Fixes #52092.
18295         
18296 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18297
18298         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18299         which is not up-to-date. Add check_corlib_version () instead.
18300
18301         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18302         have to call it.
18303         
18304         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18305         since newer valgrind versions do not need it.
18306
18307         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18308         compile a method with a given set of optimizations.
18309
18310         * mini.c: Compile icall wrappers on-demand instead of at startup.
18311
18312         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18313         wrapper for an icall.
18314
18315 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18316
18317         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18318         #54063.
18319
18320         * iltests.il: Add test for non-empty stack before switch instruction.
18321
18322 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18323
18324         * mini.c: Add support for new stringbuilder marshalling conventions.
18325
18326         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18327
18328 2004-02-01  Martin Baulig  <martin@ximian.com>
18329
18330         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18331         in `ginst->mtype_argv'.
18332
18333 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18334
18335         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18336         facilitate grepping.
18337
18338 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18339
18340         * mini.c: fixed buglet in initobj generic implementation for references.
18341
18342 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18343
18344         * Makefile.am: make the version script conditional.
18345         * jit-icalls.c: handle missing truncl().
18346
18347 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18348
18349         * exceptions.cs: Add more tests for double->int conversion.
18350
18351         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18352         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18353
18354 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18355
18356         * driver.c: make --verbose --version emit an error
18357         if the loaded corlib doesn't match the runtime version.
18358
18359 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18360
18361         * mini-ppc.h: export ppc_patch().
18362         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18363         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18364         on par or better than on MacOSX.
18365
18366 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18367
18368         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18369         mono_lookup_pinvoke_call.
18370
18371         * mini-x86.c: Under windows, the default pinvoke calling convention is
18372         stdcall. Fixes #52834.
18373
18374         * mini.c (optimize_branches): Add an upper bound to the number of
18375         iterations to prevent infinite loops on strange loops. Fixes #53003.
18376
18377 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18380         and ISINST. Fixes #52093.
18381
18382         * objects.cs (test_0_vector_array_cast): New tests.
18383         
18384 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18385
18386         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18387         checking in Array.Set ().
18388
18389         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18390         #52590.
18391
18392         * object.cs (test_0_multi_array_cast): New regression test.
18393
18394 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18395
18396         * exceptions-ppc.c: fix build on Linux/PPC.
18397
18398 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18399
18400         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18401         running under valgrind.
18402         (x86_magic_trampoline): Fix build bustage.
18403
18404         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18405         negative values as well. This is needed for the encoding of the line number
18406         info, since sometimes the line numbers are not in increasing order.
18407
18408 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18409
18410         * cpu-pentium.md (localloc): Increase the size of the localloc 
18411         instruction since it is a loop under Win32.
18412
18413         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18414         allocation.
18415
18416 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18417
18418         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18419         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18420         Max Horn (max@quendi.de). Fix file names in comments.
18421
18422 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18423
18424         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18425         avoid stack overflow.
18426         (replace_usage): Avoid uninitialized variable warnings.
18427
18428         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18429         and taking the address of valuetype variables.
18430
18431 2004-01-03  Patrik Torstensson
18432
18433         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18434         for other purposes than FP later on.
18435
18436 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18437
18438         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18439         of tail calls.
18440
18441 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18442
18443         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18444
18445 2003-12-30  Patrik Torstensson <p@rxc.se>
18446
18447         * mini-x86.h: Decreased number of availiable fp regs.
18448         Solves corner cases with FP spilling.
18449
18450 2003-12-23  Patrik Torstensson <p@rxc.se>
18451
18452         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18453         for floating point stack tracking / spilling on x86. 
18454         Fixes bug #49012.
18455         
18456         * basic-float.cs: added float mul overflow test.
18457
18458 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18459
18460         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18461
18462 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18463
18464         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18465         supports for cond branches that overflow the immediate
18466         overflow offset. mcs can compile simple programs.
18467
18468 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18469
18470         * exceptions-ppc.c: exception handling support wip:
18471         finally handlers get run on exception.
18472
18473 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18474
18475         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18476         profiling.
18477
18478 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18479
18480         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18481         initial support for stack walking and unwinding.
18482
18483 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18484
18485         * driver.c (mono_main): Make corlib-out-of-sync message more 
18486         descriptive. Also remove verify_corlib call.
18487
18488 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18489
18490         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18491         not overlap with other call's arguments, too.
18492
18493 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18494
18495         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18496         move to arch-specific code the choice of arch-specific
18497         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18498         * mini.c: ensure emulation calls will not interleave
18499         with other calls.
18500
18501 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18502
18503         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18504         the magic trampoline stack frame is dropped before executing
18505         the new method.
18506
18507 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18508
18509         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18510         and integer to fp conversions. Added support for overflowing
18511         arguments on the stack. Reserve a couple more registers as temps.
18512         Added support for aot compilation (as output still needs to be
18513         tweaked, though).
18514
18515 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18516
18517         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18518         Don't overwrite return register in some corner cases.
18519
18520 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18521
18522         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18523         static constructors when AOT compiling.
18524
18525         * driver.c (mono_main): Call mono_check_corlib_version.
18526
18527 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18528
18529         * cpu-g4.md, basic.cs: fixed div target register.
18530
18531 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18532
18533         * mini-ppc.c, basic.cs: shl_imm fix with test.
18534
18535 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18536
18537         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18538         structures by value. Misc fixes.
18539         * objects.cs: more tests.
18540
18541 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18542
18543         * mini-ppc.c: lconv.ovf.i implemented.
18544
18545 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18546
18547         * mini.c:
18548         (mini_init): don't error out if someone already called g_thread_init.
18549
18550 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18551
18552         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18553         to be any type per the spec. Fix abnormal memory usage when
18554         the same object is repeatedly thrown.
18555
18556 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18557
18558         * mini.c: check for overruns in IL code.
18559
18560 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18561
18562         * TODO: Add/remove some todo entries.
18563
18564 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18565
18566         * driver.c (mono_main): Call mono_verify_corlib.
18567
18568 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18569
18570         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18571         This has been moved to mini.c
18572         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18573         type being casted is marshalbyref it could be a proxy, so instead of
18574         emitting the type check code, emit a call to a runtime method that will
18575         perform the check by calling CanCastTo if needed.
18576
18577 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18578
18579         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18580         methods with large stack frames under Win32.
18581
18582 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18583
18584         * Makefile.am: Distribute regression tests.
18585
18586         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18587         at the end instead of inserting each variable into the sorted list.
18588
18589         * linear-scan.c (mono_varlist_sort): New helper function.
18590         
18591 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18592
18593         * mini.c: ensure arguments and locals are within bounds.
18594
18595 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18596
18597         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18598         related fixes.
18599
18600 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18601
18602         * mini.c (mono_cprop_copy_values): Fix crash.
18603
18604         * aot.c: Set verbosity back to 0.
18605         
18606 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18607
18608         * regalloc.c: complete memory leak fix by Laurent Morichetti
18609         (l_m@pacbell.net).
18610
18611 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18612
18613         * driver.c (main_thread_handler): Revert the previous patch.
18614
18615         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18616         under valgrind.
18617
18618         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18619         memory from the memory pool.
18620
18621         * driver.c (main_thread_handler): Turn on all optimizations when
18622         --aot is used.
18623
18624         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18625         an array for better performance.
18626
18627         * regalloc.c (mono_regstate_assign): Fix memory leak.
18628
18629         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18630         serialize the debug info.
18631
18632         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18633         debug info from the serialized representation.
18634
18635         * aot.c: Save debug info into the generated file and load it when 
18636         loading a method.
18637
18638         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18639
18640 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18641
18642         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18643         More FP-related fixes.
18644
18645 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18646
18647         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18648         and register allocation buglet. Hello world now runs.
18649
18650 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18651
18652         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18653         * tramp-ppc.c: fixed class init trampoline.
18654         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18655
18656 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18657
18658         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18659         mini.c: more ppc changes/fixes.
18660
18661 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18662
18663         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18664         Also optimize the case when the arguments are the same in the caller 
18665         and in the callee.
18666
18667         * iltests.il: Add tests for tail calls with valuetype arguments.
18668
18669 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18670
18671         * mini-ppc.c: fixes for struct return type.
18672
18673 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18674
18675         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18676         mono_spillvar_offset() to arch-specific code.
18677
18678 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18679
18680         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18681
18682 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18683
18684         * exceptions-x86.c: Fix stack space leaks.
18685         
18686         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18687         registers from the lmf if the method has save_lmf set.
18688
18689 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18690
18691         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18692         of icall wrappers into InvokeInDomain, since these are now per-domain.
18693
18694 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18695
18696         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18697         make some opcode emulation and intrinsic ops enabled/disabled 
18698         according to the architecture. More fixes.
18699
18700 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18701
18702         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18703
18704 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18705
18706         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18707         arch-specific handling for 'this' and struct return type to
18708         arch-specific code.
18709
18710 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18711
18712         * aot.c: prevent divide by zero error when reporting (it happened with
18713         Accessibility.dll).
18714
18715 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18716
18717         * mini.h (inst_switch): Remove unused macro.
18718
18719 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18720
18721         * aot.c:
18722         (load_aot_module): free 'info->methods' and 'info' properly. No more
18723         "free(): invalid pointer blah" messages when you have an old aot
18724         compiled assembly.
18725
18726 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18727
18728         * jit-icalls.c, mini.c: Added support for context static fields.
18729
18730 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18731
18732         * mini.c (mono_method_blittable): Methods which set LastError are not 
18733         blittable either. Fixes #51108.
18734         
18735 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18736
18737         * mini.c: flush icache.
18738         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18739
18740 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18741
18742         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18743
18744 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18745
18746         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
18747         safe on IA32.
18748
18749         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
18750         vararg calls.
18751
18752         * inssel.brg (CEE_MKREFANY): Fix AOT case.
18753
18754 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18755
18756         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
18757         instruction when the result is discarded.
18758
18759         * iltests.il (test_0_div_regalloc): New regression test.
18760
18761         * arrays.cs: Fix compilation error.
18762
18763 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
18764
18765         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
18766         float rules to inssel-x86.brg: sane architectures with FP registers
18767         don't need to implement these rules.
18768
18769 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18770
18771         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
18772
18773 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18774
18775         * mini.h, inssel-long32.brg: fixed endianess issues in int64
18776         implementation of 32 bit systems.
18777
18778 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18779
18780         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
18781         (Jeroen Zwartepoorte).
18782
18783 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18784
18785         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
18786         the caller and the callee matches.
18787         
18788         * mini.c (mono_method_to_ir): Add comment.
18789
18790         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
18791         signbit is missing on some platforms.
18792
18793 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18794
18795         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
18796
18797         * mini.c (setup_jit_tls_data): Call the new function.
18798         
18799         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
18800
18801         * mini-x86.c: Add experimental support for fast access to the lmf
18802         structure under NPTL/Linux 2.6.x.
18803
18804 2003-11-06  Martin Baulig  <martin@ximian.com>
18805
18806         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
18807         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
18808         the debugger.
18809
18810 2003-11-02  Martin Baulig  <martin@ximian.com>
18811
18812         * mini.c (inflate_generic_field): New static method.
18813         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
18814         generic instance and the field is declared in a generic type, call
18815         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
18816
18817 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18818
18819         * mini.h mini.c (mono_method_same_domain): New function to return
18820         whenever the caller and the callee are in the same domain.
18821
18822         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
18823
18824 2003-10-30  Martin Baulig  <martin@ximian.com>
18825
18826         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
18827         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
18828         method parameters.
18829         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
18830         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
18831
18832 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
18833
18834         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
18835         propagation.
18836
18837         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
18838         object here, so it is in the correct appdomain etc.
18839
18840 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18841
18842         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
18843         already done.
18844         (mono_method_to_ir): Avoid freeing the type created returned from
18845         mono_type_create_from_typespec, since it is put into an internal cache
18846         by the function. Fixes pointer.exe.
18847
18848         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
18849         trampolines for icalls and pinvokes as well. Fixes #33569.
18850
18851 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18852
18853         * mini.c: Update after appdomain changes.
18854
18855         * mini.c (mono_jit_compile_method_inner): Allways compile native
18856         method wrappers in the root domain, since there can only be one
18857         instance of them, whose address is stored in method->info.
18858
18859 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18860
18861         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
18862         environment variable. Instead detect automatically whenever running
18863         under valgrind using the magic macro RUNNING_ON_VALGRIND from
18864         valgrind.h.
18865
18866 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
18867
18868         * trace.c, trace.h: New files that implement the new trace option
18869         parsing. 
18870
18871         * driver.c: Document new --trace options.
18872
18873         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
18874         mini-x86.c: Apply:
18875
18876         -       if (mono_jit_trace_calls)
18877         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
18878
18879         * mini.h: prototypes.
18880         
18881 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18882
18883         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
18884
18885         * mini.c inssel.brg: Implement typedefbyref opcodes.
18886
18887         * mini.c (mono_jit_compile_method): Remove unused local variable.
18888
18889         * mini.c (mono_jit_compile_method_inner): Ditto.
18890         
18891 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
18892
18893         * tramp-x86.c (x86_class_init_trampoline): Fix build.
18894         
18895         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
18896
18897 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18898
18899         * mini.c (mono_no_aot): Remove unused global variable.
18900
18901         * mini.c: Thread safety fixes.
18902
18903 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * mini.c (mono_create_class_init_trampoline): Add a lock around
18906         class_init_hash_addr.
18907
18908         * arrays.cs (test_0_newarr_emulation): Add new regression test for
18909         #30073.
18910
18911         * mini.c: Decompose the NEWARR instruction before decomposing its
18912         arguments. Fixes #30073.
18913
18914 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
18915
18916         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
18917         convention.
18918
18919 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
18920
18921         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
18922
18923         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
18924
18925         * driver.c: Add support for compiling icall wrappers to --compile.
18926
18927 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
18928
18929         * inssel.brg: The empty value in class->interface_offsets is -1, not
18930         0. Fixes #49287.
18931
18932 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
18933
18934         * objects.cs: New test for 'is' operator on an array of interfaces.
18935
18936 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18937
18938         * tramp-ppc.c: update trampoline code to support jumps
18939         and class initialization.
18940
18941 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
18942
18943         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
18944
18945         * inssel.brg (OP_UNBOXCAST): Fix #46027.
18946
18947         * inssel.brg (OP_UNBOX): Remove unused rule.
18948
18949         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
18950         region instead of one for each method. Fixes #47813.
18951
18952 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
18953
18954         * exceptions.cs (test_0_nested_finally): New regression test for
18955         nested exception handlers.
18956
18957         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
18958
18959         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
18960
18961         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
18962         inlining.
18963
18964         * mini.c (mono_method_check_inlining): Make the inlining limit 
18965         configurable by an environment variable.
18966         
18967         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
18968
18969         * mini.h: Bump AOT file version.
18970
18971         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
18972         token, store the image along with the token, since the token might not 
18973         refer to the same image as the method containing the relocation, 
18974         because of inlining.
18975
18976 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
18977
18978         * mini.c (mono_precompile_assemblies): New function to compile
18979         all methods in all loaded assemblies.
18980
18981         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
18982
18983         * regalloc.h regalloc.c (MonoRegState): Change the type of 
18984         iassign and fassign to int*, since they can contain large negative
18985         values if the register is spilled. Also added some comments. Fixes
18986         #45817.
18987
18988         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
18989         under Win32. Fixes #42964.
18990
18991 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
18992
18993         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
18994
18995         * aot.c: Added support for AOT compiling methods which contain calls
18996         to wrappers. Currently, only remoting-invoke-with-check wrappers are
18997         handled.
18998         
18999         * driver.c (compile_all_methods): Run the compilation in a thread
19000         managed by mono. Fixes #44023.
19001
19002         * mini.c (mono_codegen): Print full method name in verbose output.
19003
19004         * mini-x86.c (mono_arch_patch_code): Fix warning.
19005         
19006         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
19007         jumps, since the method we are jumping to might be domain-specific.
19008
19009         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
19010
19011 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19012
19013         * inssel.brg: string chars are unsigned.
19014
19015 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19016
19017         * TODO: New todo item.
19018
19019         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
19020         which calls mono_runtime_class_init and patches the call site to
19021         avoid further calls.
19022         (mono_arch_create_class_init_trampoline): New arch specific function 
19023         to create a class init trampoline.
19024         (create_trampoline_code): Generalized so it can create
19025         class init trampolines as well.
19026
19027         * mini.c (helper_sig_class_init_trampoline): New helper variable.
19028         (mono_create_class_init_trampoline): New function to create and cache
19029         class init trampolines.
19030         (mono_find_class_init_trampoline_by_addr): New function to lookup the
19031         vtable given the address of a class init trampoline. Used by the
19032         patching process.
19033         (mono_codegen): Generate a call to a trampoline instead of
19034         mono_runtime_class_init in LDSFLD[A].
19035         (mono_codegen): Add relocations for the new trampoline.
19036         
19037         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19038         MONO_PATCH_INFO_CLASS_INIT.
19039
19040         * mini.h: Bump AOT version number.
19041
19042         * aot.c: Create a copy of the loaded code instead of using the original
19043         so methods which call each other will be close in memory, improving
19044         cache behaviour.
19045         
19046         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19047         patch since it breaks the regression tests.
19048         
19049         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19050         for the register saving instruction sequence since the 
19051         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19052
19053 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * TODO: Fix todo item && remove another.
19056
19057 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19058
19059         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19060         previous checkin.
19061
19062         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19063         function of the module.
19064
19065         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19066         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19067         --no-aot command line option.
19068
19069 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19070
19071         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19072         by Bernie Solomon (bernard@ugsolutions.com).
19073
19074         * inssel.brg: Refactor the interface offset table related code into
19075         its separate functions and add support for the AOT case.
19076
19077 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19078
19079         * aot.c (mono_aot_get_method_inner): Fix memory leak.
19080         
19081         * aot.c: Added mono_aot_verbose variable and made all debugging
19082         output depend on the value of this variable.
19083
19084         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19085         method_label and info_label.
19086
19087         * mini.h mini-x86.c aot.c: Added a new relocation type 
19088         MONO_PATCH_INFO_IID for klass->interface_id.
19089
19090         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
19091         the MonoJitInfo structure.
19092
19093         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
19094         a non-root appdomain in shared mode.
19095
19096 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19097
19098         * aot.c: make aot loader less verbose. Remove free of unused variable.
19099
19100 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19101
19102         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19103
19104         * .cvsignore: Added *.dll.
19105
19106         * mini.c (mono_print_tree_nl): New function callable while debugging.
19107
19108         * mini.c (mono_print_code): Export this.
19109
19110         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19111         patched code.
19112
19113 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19114
19115         * mini.h (MonoCompile): Added 'jit_info' field.
19116
19117         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19118         the cfg structure, since it is needed by the AOT compiler.
19119
19120         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19121
19122         * aot.c: A major rewrite. Changes include:
19123         - save exception tables for methods which have them.
19124         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19125         to g_module_symbol.
19126         - reworked the file format so it is now much smaller and needs
19127         fewer relocation entries.
19128         
19129 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19130
19131         * aot.c (load_aot_module): Fix build bustage on platforms without
19132         Boehm GC.
19133
19134 2003-09-04  Martin Baulig  <martin@ximian.com>
19135
19136         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19137
19138 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19139
19140         * TODO: Some new optimization ideas.
19141
19142         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19143
19144         * aot.c: Save the optimization flags used to compile the code into
19145         the AOT module.
19146
19147         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19148         support emitting domain specific code.
19149         
19150         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19151         no longer domain neutral. It can be made domain neutral by compiling 
19152         with --optimize=shared.
19153
19154         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19155         between appdomains.
19156
19157         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19158         loading of AOT code.
19159
19160         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19161         
19162         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19163         if there is no domain neutrality information.
19164
19165 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19168         format version into the generated library.
19169
19170         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19171         callee method into the caller since one of them could be shared.
19172
19173         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19174         system exceptions from AOT code now works.
19175
19176         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19177         method if it is domain neutral and the callee is not.
19178
19179         * graph.c (cfg_emit_one_loop_level): Fix warning.
19180
19181 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19182
19183         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19184         last checkin.
19185
19186 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19189         is needed  by code which is executed before mono_runtime_init ().
19190         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19191         
19192         * mini.c (mono_thread_abort): Fix warning.
19193         (mono_jit_compile_method): Call static constructor in the AOT case too.
19194
19195         * aot.c (mono_compile_assembly): Fix warning.
19196
19197 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19198
19199         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19200
19201 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19202
19203         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19204
19205         * cpu-pentium.md: Fix the length of call opcodes so they include the
19206         ESP restoring instruction. Fixes #47968.
19207
19208 2003-08-28  Martin Baulig  <martin@ximian.com>
19209
19210         * mini-x86.c (mono_arch_call_opcode): Added support for
19211         MONO_TYPE_GENERICINST.
19212
19213         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19214
19215 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19216
19217         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19218         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19219
19220         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19221         metadata_section.
19222
19223 2003-08-26  Martin Baulig  <martin@ximian.com>
19224
19225         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19226         when reporting an error, set this to the actual error location.
19227         (mono_method_to_ir): Report the correct error location if
19228         get_basic_blocks() returned an error.
19229
19230 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19231
19232         * mini.c (mono_type_blittable): OBJECT is not blittable.
19233         (mono_method_blittable): Methods which have marshalling descriptors
19234         are not blittable either. Fixes #47842.
19235
19236 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * driver.c mini.c: Use an environment variable instead of a global 
19239         variable. Also fix the build.
19240
19241         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19242         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19243         reporting this. 
19244
19245         * driver.c mini.c: Added --with-valgrind option to turn off some
19246         code which prevents mono from running under valgrind.
19247
19248         * mini.c (mono_emit_call_args): Fixed warning.
19249
19250         * mini.c (mono_emulate_opcode): Fixed warning.
19251
19252 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19253
19254         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19255         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19256         regalloc.c, regalloc.h: specify available registers in arch-specific
19257         code and support floats in the regallocator (patch by Laurent Morichetti 
19258         <l_m@pacbell.net>)
19259
19260 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19261
19262         * mini.c: mono_thread_current() can be called only after
19263         mono_runtime_init(): rearrange code to not call it early on.
19264
19265 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19266
19267         * mini.c: allocate jump tables in the code mempools.
19268
19269 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19270
19271         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19272         freed.
19273
19274 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19275
19276         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19277         12 to 16.  This fixes bug #47453.
19278
19279
19280 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19281
19282         * mini-ppc.c: fixed indexed load and unsigned compares.
19283
19284 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19285
19286         * mini.c: reenabled installation of handler for
19287           thread abort signal.
19288
19289 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19290
19291         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19292         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19293         until it's fixed and actually useful.
19294
19295 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19296
19297         * inssel-long32.brg: couple more opcodes implemented.
19298
19299 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19300         
19301         * mini-sparc.c: Even more opcodes implemeted.
19302
19303 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19304
19305         * mini-sparc.c: More opcodes implemented.
19306
19307 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19308
19309         * mini-sparc.c: More opcodes implemented.
19310
19311 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19312
19313         * inssel-sparc.brg: Add some needed rules.  Direct
19314         copy from PPC.
19315         * Makefile.am: Use inssel-sparc.brg
19316         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19317         an assert happy for now.
19318
19319 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19320
19321         * mini-sparc.c: Fixed compile errors.
19322         * exceptions-sparc.c: Same.  We now produce a mono binary 
19323         on sparc-linux.  Yea.
19324
19325 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19326
19327         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19328         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19329         They compile, but do not work.
19330
19331 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19332
19333         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19334         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19335         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19336         (ct@gentoo.org).
19337
19338 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19339
19340         * mini.c: more opcodes implemented and better support for generics.
19341
19342 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19343
19344         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19345         * mini.c, mini.h: first cut at generics support: some new instructions 
19346         added and changed the behaviour of some of the existing ones.
19347
19348 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19349
19350         * mini.c: Removed definition of metadata_shared mutex here.
19351
19352 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19353
19354         * mini-x86.c: make vararg calls work for instance methods.
19355
19356 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19357
19358         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19359         returns the arguments in a separte list, now.
19360
19361 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19362
19363         * aot.c, mini.c: updates for array type representation changes.
19364
19365 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19366
19367         * mini.c: register function to perform jit shutdown.
19368
19369 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19370
19371         * mini.c: use a faster allocator if possible.
19372
19373 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19374
19375         * aot.c: some cleanups and portability changes.
19376
19377 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19378
19379         * mini.c: use faster allocation for CEE_BOX if possible.
19380
19381 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19382
19383         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19384         Moved inlined mempcy code to its own function so that is can be
19385         reused. Added an inline memset function as well (optimized initobj).
19386         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19387
19388 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19389
19390         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19391
19392 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19393
19394         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19395         arch code can setup the cpu for CLR execution, if needed.
19396         We use it on x86 to set the precision of FP operations.
19397
19398 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19399
19400         * mini.c: disable some optimizations if we can guess they'll cost too
19401         much for a given method.
19402
19403 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19406         
19407 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19408         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19409         info collection support.
19410
19411 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19412
19413         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19414         is now implemented in the profiling API. Get rid of a couple of
19415         unnecessary global variables.
19416
19417 2003-06-15  Nick Drochak <ndrochak@gol.com>
19418
19419         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19420         * cpu-g4.md: add op_bigmul and op_bigmul_un
19421         * cpu_pentium.md: add op_bigmul_un
19422         * inssel-long32.brg: add rule for unsigned bigmul
19423         * mini-ops.h: define OP_BIGMUL_UN
19424         * mini-x86.c: THE BUG: handle (un)signed properly
19425         * mini.c: choose unsigned opcode if needed.
19426         This set of patches fixes bug #44291
19427
19428 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19429
19430         * mini.c (optimize_branches): improved to handle all kinds of
19431         conditional branches.
19432
19433 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19434
19435         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19436         don't raise exceptions.
19437
19438 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19439
19440         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19441         to arch-specific files.
19442
19443 2003-06-09  Martin Baulig  <martin@ximian.com>
19444
19445         * Makefile.am (libs): Added $(LIBGC_LIBS).
19446
19447 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19448
19449         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19450         and OP_ATAN (fixes bug#44293).
19451
19452 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19453
19454         * Makefile.am, mini-x86.c: rename cpu description array to
19455         pentium_desc, since some compilers define the 'pentium' preprocessor
19456         symbol.
19457
19458 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19459
19460         * mini.c (mini_select_instructions): add explicit branch if the
19461         following block is not the false target of a conditional branch -
19462         we need this with any optimization that reorder or remove bblocks
19463
19464         * mini.c (optimize_branches): bug fixes
19465
19466 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19467
19468         * mini.c (mono_method_to_ir): inline static readonly fields
19469
19470         * ssa.c (fold_tree): start cfold support for long (very simple
19471         cases only)
19472
19473         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19474
19475 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19476
19477         * inssel.brg: fixed memcpy (bug #44219).
19478
19479 2003-06-05  Dick Porter  <dick@ximian.com>
19480
19481         * driver.c: Set the glib log levels to not abort if g_message
19482         recurses.
19483
19484         g_set_prgname() has to happen before mini_init() so that the
19485         process handle gets the info.
19486         
19487 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19488
19489         * driver.c: add intrins to the default optimizations to get wider
19490         exposure.
19491
19492 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19493
19494         * mini.h: some large basic blocks will overflow a 16-bit
19495         integers for symbolic registers.
19496
19497 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19498
19499         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19500         (mono_arch_output_basic_block): fix bug 43499 
19501
19502 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19503
19504         * mini.c: kill duplicated definition of mono_debug_format.
19505
19506 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19507
19508         * mini-x86.c, arrays.cs: fixed register allocation bug.
19509
19510 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19511
19512         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19513
19514         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19515
19516 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19517
19518         * mini.c:
19519         (print_method_from_ip): also print source location information if
19520         available.
19521
19522 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19523
19524         * mini.c (mono_find_block_region): bug fix in region code
19525         (mini_method_compile): enable removing unreachable code again, but
19526         only in methods without exception clauses.
19527
19528 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19529
19530         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19531         Implemented arglist opcode and handling of TypedReference type.
19532         Fixed x86 call convention when a structure is returned.
19533         Minimal support for calling static vararg methods.
19534
19535 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19536
19537         * mini.c (mini_method_compile):  always remove unreachable code,
19538         because the code in them may be inconsistent  (access to dead
19539         variables for example).
19540
19541 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19542
19543         * driver.c, debug-mini.c: warning fixes.
19544
19545 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19546
19547         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19548
19549 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19550
19551         * mini.c: thread-static fields are registered in mono_class_vtable(),
19552         so ensure the function is called before checking for them.
19553
19554 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19555
19556         * mini.c (optimize_branches): fix for bug 43586
19557
19558         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19559         overflow (fixes Bug #43639)
19560
19561 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19562
19563         * mini.c, objects.cs: allow the use of stobj for primitive types.
19564
19565 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19566
19567         * mini.c: be less strict about argument checking until we support
19568         running the verifier.
19569
19570 2003-05-27  Nick Drochak <ndrochak@gol.com>
19571
19572         * basic-long.cs: tests for (ulong)int * (ulong)int also
19573         * mini.c: use the same trick for (ulong)int * (ulong)int
19574
19575 2003-05-27  Nick Drochak <ndrochak@gol.com>
19576
19577         * basic-long.cs: add regression test for (long)int * (long)int
19578         * cpu-pentium.md: add op_bigmul specification
19579         * inssel-long32.brg: add OP_BIGMUL rule
19580         * mini-ops.h: add OP_BIGMUL
19581         * mini-x86.c: register allocator: handle case where src1 needs to be
19582         in EAX.
19583         * mini.c: substitute special BIGMUL opcode in the tree for 
19584         (long)int * (long)int
19585
19586 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19587
19588         * jit-icalls.c: call the type ctor on field access if needed.
19589
19590 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19591
19592         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19593         to a method (including results of ldelema, bug#43207).
19594
19595 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19596
19597         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19598         colors to show exception handler blocks.
19599
19600         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19601         (fix for pinvoke7.cs).
19602
19603 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19604
19605         * mini.h, mini.c: ensure correct initialization order for types that
19606         require it. Prepare for lazy compilation of jit icall wrappers.
19607         Provide a name for opcode emulation to reduce unneeded mallocing.
19608
19609 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19610
19611         * mini-x86.c: better register restoring code and profiling
19612         support for tail calls.
19613
19614 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19615
19616         * mini.h, driver.c: prepare for leaf methods optimization.
19617
19618 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19619
19620         * mini.c: get targets of branches before converting a method.
19621
19622 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19623
19624         * mini.c (optimize_branches): added some experimental code (disbaled) 
19625
19626 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19627
19628         * mini.c (optimize_branches): fix branch to branch optimization 
19629
19630         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19631
19632         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19633
19634         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19635
19636         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19637         if needed.
19638
19639 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19640
19641         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19642         enable use of interface variables again.
19643
19644         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19645         I1 to registers because there is no simply way to sign extend 8bit
19646         quantities in caller saved registers on x86.
19647
19648         * inssel-float.brg: set costs of some rules to 2 so
19649         that monobure always select the arch. specific ones if supplied,
19650         regardless of the order we pass the files to monoburg.
19651
19652 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19653
19654         * mini.c, mini-x86.c: since the magic trampoline for jumps
19655         can't patch the code directly, we do it as soon as the
19656         method gets compiled.
19657
19658 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19659
19660         * mini-x86.c, mini.h: introduce a new patching method
19661         to support CEE_JMP and tail calls.
19662         * mini.c: obey tail.call. Don't precompile methods target
19663         of CEE_JMP.
19664         * tramp-x86.c: new trampoline code to handle methods
19665         reached through a jump.
19666
19667 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19668
19669         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19670         bit values to registers
19671
19672 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19673
19674         * mini.c (mono_compile_get_interface_var): share interface
19675         variables if possible.
19676
19677 2003-05-16  Martin Baulig  <martin@ximian.com>
19678
19679         * debug-mini.c (mono_init_debugger): New function to initialize
19680         the debugger.  This is not in the debugger since it needs to
19681         access some of mini's internals.
19682
19683 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19684
19685         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19686
19687 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19688
19689         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19690         for value type handling.
19691
19692 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19693
19694         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19695         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19696
19697 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19698
19699         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19700           the constructor through a proxy.
19701
19702 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19703
19704         * jit-icalls.c, inssel.brg: fixes to array element address
19705         calculations.
19706
19707 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19708
19709         * mini-x86.c (is_regsize_var): allocate pointer to registers
19710
19711 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19712
19713         * driver.c: fixed typo, added intrins to the set of optimizations
19714         tested with regressions.
19715
19716 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19717
19718         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19719         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19720         test case.
19721
19722 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19723
19724         * inssel.brg: remove some common pop instructions without side effects
19725
19726 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19727
19728         * inssel-x86.brg: fixed thinko in int to double conversions.
19729
19730 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19731
19732         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19733
19734 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19735
19736         * inssel-long32.brg: two more missing instructions.
19737
19738 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19739
19740         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19741         if not already set.
19742
19743 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19744
19745         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
19746         correctly.
19747
19748         * basic-float.cs: Added tests for negative zero.
19749
19750 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19751
19752         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
19753         a couple of missing operations for long casts, with test cases.
19754
19755 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19756
19757         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
19758
19759 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
19760
19761         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
19762         code size estimation.
19763
19764 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19765
19766         * mini.c (mono_jit_create_remoting_trampoline): make it work with
19767         abstract methods (fix bug 42542)
19768
19769         * aot.c: add ability to handle array types
19770         
19771 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
19772
19773         * mini.c: Call the _specific versions of the object allocation
19774         functions if possible.
19775
19776 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19777
19778         * driver.c: call setlocale ().
19779
19780 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19781
19782         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
19783         windows build.
19784
19785 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19786
19787         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
19788
19789         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
19790         wrappers (fix bug 42122)
19791
19792 2003-05-04  Martin Baulig  <martin@ximian.com>
19793
19794         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
19795
19796         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
19797         s/mini_set_defaults/mono_set_defaults/g.
19798
19799 2003-05-04  Martin Baulig  <martin@ximian.com>
19800
19801         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
19802
19803 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19804
19805         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
19806         (reported by Don Roberts).
19807
19808 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19809
19810         * mini.c: temporarily work around two bugs for this release.
19811
19812 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19813
19814         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
19815         that contains -export-dynamic and it makes using the ld script
19816         useless.
19817         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
19818
19819 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19820
19821         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
19822         specific cpu.
19823
19824 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19825
19826         * mini.c: make sure leave calls all the needed finally blocks,
19827         even when the target jumps out of multiple exception clauses.
19828
19829 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19830
19831         * ldscript, Makefile.am: add linker script to reduce the number of
19832         exported symbols (should also fix the issues with libwine defining
19833         some of the same symbols in io-layer).
19834
19835 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
19836
19837         * driver.c (mini_main): Avoid assertion when no file name is given on 
19838         the command line.
19839
19840 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
19841
19842         * driver.c: added --version/-V command line option.
19843         Added the inline optimization in the regression tests.
19844
19845 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19846
19847         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
19848         to the type in the method signature (fixes bug#42134).
19849
19850 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
19851
19852         * mini.c: when inlining, check this is not null only when needed (bug #42135).
19853
19854 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
19855
19856         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
19857
19858 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19859
19860         * driver.c: fixed bug #42100.
19861
19862 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19863
19864         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
19865
19866 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19867
19868         * mini.c: moved most of the code required to do inlining to its own
19869         function so it can be reused. Inline also ctors if appropriate.
19870
19871 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * Makefile.am: Link with -export-dynamic so shared libs loaded by
19874         the runtime can call mono API functions.
19875
19876 2003-04-27  Martin Baulig  <martin@ximian.com>
19877
19878         * debug-mini.c (mono_debug_init_method): Added
19879         `guint32 breakpoint_id' argument; if the method has a breakpoint,
19880         send a notification to the debugger.
19881
19882         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
19883         running in the Mono Debugger, just pass the breakpoint number to
19884         mono_debug_init_method().
19885
19886         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
19887
19888 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
19889
19890         * mini.c: allow some more unsafe compares.
19891
19892 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19893
19894         * mini-x86.c, Makefile.am: make distcheck works (partially from
19895         a patch by Richard Lee <r.h.lee@attbi.com>).
19896         * regset.c, regset.h: removed, they are unused.
19897
19898 2003-04-25  Dick Porter  <dick@ximian.com>
19899
19900         * driver.c: Usage reports the name as 'mono' not 'mini'
19901         * exceptions-x86.c: Build and run on freebsd
19902
19903 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19904
19905         * Makefile.am: install the program with the 'mono' name and
19906         the library as libmono instead of mini and libmini.
19907
19908 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19909
19910         * driver.c: provide the APIs for the embedding interface of the old jit.
19911
19912 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
19913
19914         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
19915
19916 2003-04-23  Martin Baulig  <martin@ximian.com>
19917
19918         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
19919
19920         * driver.c: Added `--debug' command line argument to enable
19921         debugging support.
19922
19923 2003-04-23  Martin Baulig  <martin@ximian.com>
19924
19925         * debug.[ch]: Removed.  The code is now in
19926         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
19927
19928         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
19929         last six months.
19930
19931 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
19932
19933         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
19934
19935 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19936
19937         * mini.c:
19938         (mini_cleanup): moved mono_runtime_cleanup call after the call to
19939         mono_domain_finalize.
19940         (mini_method_compile): use mono_method_profile* if the the option is
19941         enabled.
19942
19943 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19946         methods with their wrapper.
19947
19948         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19949         methods with their wrapper.
19950
19951         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
19952         their wrapper.
19953
19954         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
19955         wrapper.
19956
19957         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
19958         methods.
19959
19960 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
19961
19962         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
19963
19964 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
19965
19966         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
19967         of the mempool. This is slightly faster and uses less memory
19968
19969 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19970
19971         * mini.c: avoid O(n) allocation for variables.
19972
19973 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19974
19975         * mini.c: handle items on the stack after inlining methods.
19976
19977 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19978
19979         * mini.c: make the method->opcode optimization dependent
19980         on MONO_OPT_INSTRINS and do it lazily.
19981
19982 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19983
19984         * driver.c: print overall results at the end of regression run.
19985
19986 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19987
19988         * inssel.brg: don't overwrite symbolic registers.
19989
19990 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19991
19992         * inssel-x86.brg: fix conversion from long to float.
19993
19994 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
19995
19996         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
19997
19998 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
20001
20002         * driver.c: Added --print-vtable option as in the old JIT.
20003
20004 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20005
20006         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
20007
20008 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20009
20010         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
20011
20012 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20013
20014         * mini.c regalloc.c regalloc.h: Fix memory leak.
20015
20016 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
20017
20018         * aot.c (mono_aot_get_method): register all used strings
20019
20020 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20021
20022         * mini.c: always intern strings references with ldstr at compile time.
20023
20024 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20025
20026         * Makefile.am: add BUILT_SOURCES.
20027
20028 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20029
20030         * driver.c: give a better error message when the assembly to execute
20031         doesn't have an entry point.
20032
20033 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20034
20035         * Makefile.am: added hack for automake
20036
20037         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20038         correct sematics.
20039
20040         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20041
20042 22003-04-07  Martin Baulig  <martin@ximian.com>
20043
20044         * Makefile.am: Added Makefile.am.
20045
20046         * debugger-main.c: Removed, this is now in the debugger where it
20047         belongs.
20048
20049         * mini.pc.in: Call this package `mini' for the moment.
20050
20051
20052
20053
20054
20055
20056
20057
20058
20059
20060
20061
20062
20063
20064