2009-03-19 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2
3         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4         them don't run yet.
5
6         * basic-simd.cs: Fix the names of some test methods.
7
8 2009-03-18  Geoff Norton  <gnorton@novell.com>
9
10         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
11
12 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
13
14         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
15
16 2009-03-17  Jb Evain  <jbevain@novell.com>
17
18         * driver.c: remove now uneeded call to mono_gc_base_init before
19         mono_profiler_load.
20
21 2009-03-17  Jb Evain  <jbevain@novell.com>
22
23         * dwarfwriter.c (token_handler): handle more cases.
24
25 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
26
27         * method-to-ir.c: Remove more dead code (that was required only
28         because of method_is_safe). Fix compiler warnings.
29
30 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
31
32         * method-to-ir.c: Remove unneeded/useless method_is_safe
33         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
34
35 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
36
37         * mini.c (mini_method_compile): Print the method been compiled with
38         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
39         for people not familiar with the runtime.
40
41 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
42
43         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
44         a managed object which is later put into a GList. Return its class instead.
45
46         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
47         stack slots when using sgen.
48
49 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
50
51         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
52
53 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
54
55         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
56         > so it works on the first vreg as well.
57
58 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
59
60         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
61         trigger randomly.
62
63         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
64         
65         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
66         implement GArray.
67
68 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
69
70         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
71         native->IL offset mapping.
72
73 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
74
75         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
76
77         * basic.cs: Add a test.
78
79 2009-03-11  Mark Probst  <mark.probst@gmail.com>
80
81         * mini-x86.c (mono_arch_output_basic_block): Use different
82         registers in case the ones we want to overwrite are used by the
83         other operand.  Fixes regression in #480807.
84
85 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
86
87         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
88
89         * dwarfwriter.c (emit_line_number_info): The line number info for
90         IL code was off by one. Fix that.
91
92         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
93         stack.
94
95 2009-03-09  Mark Probst  <mark.probst@gmail.com>
96
97         Contributed under the terms of the MIT/X11 license by Steven
98         Munroe <munroesj@us.ibm.com>.
99
100         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
101         Fixes #483462.
102
103 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
104
105         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
106         as well.
107
108 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
109
110         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
111         the delegate ctor handling code. Fixes #482638.
112         
113         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
114         #481458.
115
116         * iltests.il.in: Add a test.
117         
118         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
119         mini-posix.c.
120
121 2009-03-05  Mark Probst  <mark.probst@gmail.com>
122
123         * mini-trampolines.c (mono_create_jump_trampoline): If the method
124         is shared generic code, return the trampoline, even if the method
125         has already been compiled.  Fixes #479763.
126
127         * mini.c, mini.h: New function
128         mono_jit_find_compiled_method_with_jit_info() which is the same as
129         mono_jit_find_compiled_method() but also returns the jit info.
130
131 2009-03-05  Mark Probst  <mark.probst@gmail.com>
132
133         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
134         for methods which actually have one.  For all other methods, make
135         sure the this argument var is live the whole method.
136
137         * mini.c (mini_method_compile): Every shared method has a
138         this/vtable/mrgctx info.  Fixes #480807.
139
140 2009-03-05  Mark Probst  <mark.probst@gmail.com>
141
142         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
143         generic/imt thunks where some entries branch through the vtable,
144         while other entries branch directly.
145
146 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
147
148         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
149
150         * mini-windows.c: Ditto.
151         
152         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
153         ctors.
154
155 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
156
157         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
158         down an assert.
159
160 2009-03-04  Mark Probst  <mark.probst@gmail.com>
161
162         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
163         #481403.
164
165 2009-03-04  Mark Probst  <mark.probst@gmail.com>
166
167         * exceptions-x86.c: Include debug-mini.h - fixes build.
168
169 2009-03-04  Martin Baulig  <martin@ximian.com>
170
171         * debug-mini.c: Clean up the exception API and add documentation.
172         (mono_debugger_handle_exception): New public method; this is
173         called when throwing an exception or encountering an unhandled one.
174         (mono_debugger_call_exception_handler): Formerly known as
175         mono_debugger_handle_exception(); this is used to tell the
176         debugger that we're about to invoke an exception handler.
177
178 2009-03-04  Martin Baulig  <martin@ximian.com>
179
180         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
181         ../metadata/mono-debug-debugger.c; save and reset exception state.
182
183 2009-03-02  Martin Baulig  <martin@ximian.com>
184
185         * debug-mini.c: Moved the debugger exception handling here from
186         ../metadata/mono-debug-debugger.c.
187
188         * debug-mini.h
189         (MonoDebuggerExceptionAction): New exception typedef.
190
191         * debug-mini.c
192         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
193
194         * exceptions-amd64.c
195         (mono_amd64_throw_exception): Use the new debugger exception
196         handling code.
197
198         * mini-exceptions.c
199         (mono_handle_exception_internal): Don't call
200         mono_debugger_unhandled_exception() here.
201
202 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
203
204         * mini.c aot-compiler.c: Update after the changes to 
205         mono_marshal_get_runtime_invoke ().
206
207         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
208         Virtual generic methods might not have method->slot set, work around
209         that.
210
211         * generics.cs: Add a test.
212
213 2009-03-02  Geoff Norton  <gnorton@novell.com>
214
215         * mini.c:
216         * driver.c: Allow signal chaining of SIGFPE as well.
217
218 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
219
220         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
221         this since it now receives the method not its generic context in the
222         IMT reg.
223
224         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
225         generic/imt thunks where some entries branch through the vtable, while
226         other entries branch directly.
227
228         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
229
230         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
231         support for interface methods as well.
232
233         * mini-trampolines.c: Add support for virtual generic methods in interfaces
234         using the normal IMT thunks.
235
236         generics.cs: Add new tests.
237         
238         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
239         the generic inst to the generic imt thunks. This fixes AOT support, 
240         improves consistency with the normal IMT thunks, and makes it easier to
241         add support for interface generic virtual methods later.
242
243         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
244         
245 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
246
247         * driver.c (mono_set_signal_chaining): New public API function to enable
248         signal chaining on POSIX platforms.
249
250         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
251         (si@lindenlab.com) to implement signal chaining. The original patch was
252         contributed under the MIT X/11 license:
253         https://bugzilla.novell.com/show_bug.cgi?id=318894
254
255 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
256
257         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
258         too until it can be made to run on amd64.
259
260 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
261
262         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
263         to  get_generic_context_from_code () + get_call_info () if possible.
264
265 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
266
267         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
268         suspend-on-sigsegv functionality.
269
270         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
271         to suspend when a native SIGSEGV is received. This is useful for debugging
272         crashes which don't happen under gdb, since a live process contains more
273         information than a core file.
274
275         * mini-exceptions.c (mono_print_thread_dump): Use 
276         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
277
278         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
279
280         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
281         
282         * basic-float.cs: Disable the tests which currently fail on amd64.
283
284         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
285         value to mono_arch_patch_callsite () to fix crashes.
286         
287         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
288
289 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
290
291         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
292         nop code by patching the call address to point to the nullified class init
293         trampoline, as the former does not seem to be safe on SMP machines.
294
295 2009-02-23  Mark Probst  <mark.probst@gmail.com>
296
297         * mini-ops.h: Fix the argument types for a few x86 opcodes where
298         they were wrong.
299
300 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
301
302         * basic-float.cs basic-calls.cs: Fix warnings.
303
304 2009-02-22  Mark Probst  <mark.probst@gmail.com>
305
306         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
307         correct frame pointer in the LMF.  Should fix #478394.
308
309 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
310
311         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
312
313         * image-writer.c: Make the binary writer less verbose.
314
315 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
316
317         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
318         are called from runtime invoke wrappers.
319
320 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
321
322         * cpu-ppc.md (store_memindex): Increase the size of this.
323
324 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
325
326         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
327
328         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
329
330         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
331         OP_LCONV_TO_R_UN.
332
333         Last fix for of #467201.
334
335
336 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
337
338         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
339
340         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
341         and long_conv_to_r8_2:
342
343         Fixed part of #467201.
344
345 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
346
347         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
348
349         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
350         conversion to 32 bits.
351
352         * cpu-x86.md: Increase the size of int_conv_to_r4.
353
354         * basic-float.cs: Add a test for this.
355
356         Fixed part of #467201.
357
358 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
359
360         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
361
362         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
363         conversion to 64 bits.
364
365         * basic-float.cs: Add a test for this.
366
367         Fixed part of #467201.
368
369 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
370
371         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
372
373         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
374         This behavior is compatible with MS.
375
376         * iltest.il.in: Add a test for this.
377
378         Fixed part of #467201.
379
380 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
381
382         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
383
384         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
385         change the precision of the value.
386
387         * cpu-x86.md: Define len for float_conv_to_r4.
388
389         * basic-float.cs: Add a test for this.
390
391         Fixed part of #467201.
392
393 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
394
395         * mini.c: Adjust locking order to the new semantics where the loader lock
396         comes first.
397
398 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
399
400         * aot-runtime.c:
401         * mini-amd64.c:
402         * mini-arm.c:
403         * mini-ia64.c:
404         * mini-mips.c:
405         * mini-ppc.c:
406         * mini-sparc.c:
407         * mini-trampolines.c:
408         * mini-x86.c:
409         * mini.c:
410         * tramp-alpha.c:
411         * tramp-amd64.c:
412         * tramp-arm.c:
413         * tramp-hppa.c:
414         * tramp-ia64.c:
415         * tramp-mips.c:
416         * tramp-ppc.c:
417         * tramp-s390.c:
418         * tramp-s390x.c:
419         * tramp-sparc.c:
420         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
421
422 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
423
424         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
425         as it is incorrect.
426
427 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
428
429         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
430         for cctors if needed.
431
432 2009-02-17  Mark Probst  <mark.probst@gmail.com>
433
434         * mini-ppc.c: Fix build on Darwin.
435
436 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
437
438         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
439         version instead of 3 as valgrind doesn't like version 3.
440
441         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
442
443         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
444         usable for hashing methods.
445         (emit_extra_methods): Use the new hash to avoid putting every method in the
446         same hash bucket.
447
448         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
449
450         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
451         whenever a method ref could match a method.
452         
453         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
454         test to fail.
455         
456         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
457         methods refs.
458
459         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
460
461         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
462         the encoding buffer.
463
464         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
465         mono_method_get_header () on inflated methods as an optimization.
466
467 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
468
469         * ssa.c (fold_ins): Fix another crash if the instruction following the
470         switch was optimized away.
471
472 2009-02-16  Mark Probst  <mark.probst@gmail.com>
473
474         Contributed under the terms of the MIT/X11 license by Steven
475         Munroe <munroesj@us.ibm.com>.
476
477         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
478
479 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
480
481         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
482         around the mono_domain_alloc calls, it is now done by the functions
483         themselves.
484
485         * aot-compiler.c (compile_method): Only add wrappers referenced by
486         the method if compiling with full AOT.
487         (mono_compile_assembly): Error out if --aot=full is specified on
488         a platform where it is not supported.
489
490         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
491         on ARM too.
492
493         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
494         AOT support.
495
496         * aot-runtime.c (load_named_code): Handle 
497         mono_arm_throw_exception_by_token.
498
499         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
500
501         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
502         unaligned.
503
504         * Makefile.am (fullaotcheck): Exit if a test fails.
505
506         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
507         on ARM.
508         (mono_compile_assembly): Handle the assembler failing.
509
510         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
511         accepting subsections of .bss.
512
513         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
514         was optimized away.
515
516         * aot-compiler.c: Remove some unused includes.
517         
518         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
519         now in MonoImageWriter.
520
521         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
522         code sequence which matches a non-virtual call. Fixes #472654.
523
524 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
525
526         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
527         xdebug code.
528         
529         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
530         use the image/dwarf writers directly.
531
532         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
533         field.
534
535         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
536         MonoDwarfWriter.
537
538         * image-writer.h: Fix some typos.
539
540         * dwarfwriter.h dwarfwriter.c: New files.
541         
542         * aot-compiler.c: Extract the DWARF info writing functionality into a 
543         separate module.
544
545         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
546         argument to return unwind info.
547
548         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
549
550         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
551         
552         * aot-runtime.c (decode_method_ref): Add a case for 
553         MONO_AOT_METHODREF_WRAPPER_NAME.
554
555         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
556         for AOT.
557
558         * aot-compiler.c (encode_method_ref): Use the new constants.
559
560         * aot-runtime.c (decode_method_ref): Ditto.
561
562         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
563         be compiled, not the icall itself.
564
565 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
566
567         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
568         using decode_method_ref ().
569
570         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
571         convert it to an in32. Fixes #475859.
572
573         * arrays.cs: Add a test.
574
575 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
576
577         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
578         OP_LCONV_TO_U2.
579
580         * basic-long.cs: Add a test.
581
582 2009-02-12  Mark Probst  <mark.probst@gmail.com>
583
584         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
585         remove the frame pointer in leaf methods which don't receive any
586         arguments, don't throw exceptions and don't do dynamic stack
587         allocations.
588
589 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
592         the fail_tramp changes. Hopefully fixes #475132.
593
594 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
595
596         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
597         instead of mono_metadata_signature_dup_full.
598
599 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
600
601         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
602         for processing jump tables. Fixes #473787.
603
604 2009-02-11  Mark Probst  <mark.probst@gmail.com>
605
606         * mini-generic-sharing.c: mini_method_get_context() just calls
607         mono_method_get_context_general() now.
608
609         * mini.c, mini.h: Moved get_object_generic_inst(),
610         construct_object_context_for_method() and
611         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
612
613 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
614
615         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
616         basic block fell through to its successor bblock without a branch. Fixes
617         #474718.
618
619         * iltests.il.in: Add a test.
620         
621         * aot-compiler.c (encode_method_ref): Encode methods of array types.
622         (can_encode_patch): We can now handle arrays of generic parameters and
623         array methods.
624
625         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
626
627         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
628         the AOT file to avoid some #ifdefs in aot-runtime.c
629
630         * mini.h: Bump AOT file format version.
631
632 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
633
634         * Makefile.am (fullaotcheck): Make this run the tests.
635
636         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
637
638 2009-02-10  Mark Probst  <mark.probst@gmail.com>
639
640         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
641         individually.  Fixes #473482.
642
643 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
644
645         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
646
647 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
648
649         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
650         (mono_compile_assembly): Hush compile warnings about
651         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
652         code path.
653
654 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
655
656         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
657
658         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
659
660         * aot-compiler.c: Fix arm support.
661
662         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
663         img_writer_emit_unset_mode () function.
664
665         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
666         (mono_unwind_get_dwarf_pc_reg): Ditto.
667
668         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
669         Move almost all platform specific code to a set of arch_ functions, 
670         and document them to ease porting.
671         
672         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
673
674         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
675
676         * aot-compiler.c: Extract the image writing functionality into a separate
677         module to reduce the size of this file.
678
679 2009-02-09  Geoff Norton  <gnorton@novell.com>
680
681         * mini-s390.c: Fix the signature of emit_sig_cookie.
682
683 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
684
685         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
686
687         * aot-runtime.c (is_shared_got_patch): Ditto.
688
689         * aot-runtime.c (load_named_code): Cope with the fact that 
690         decode_got_entry () won't decode the patch fully if its corresponding got
691         entry is already filled.
692         
693         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
694         Initialize *ji.
695         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
696
697         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
698         as the moving pointer instead of 'buf' for consistency with the rest of the
699         codebase.
700         (mono_arch_create_monitor_exit_trampoline): Ditto.
701
702         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
703         generic_class_init trampolines.
704         (add_generic_class): Extract some code from add_generic_instances () into a
705         separate function so it can be called from other places too.
706         (compile_method): Call add_generic_class () for the classes of inflated methods
707         referenced by the method.
708         (can_encode_patch): Allow references to generic parameters.
709
710         * aot-runtime.c: Add support the patches required by the new trampolines.
711         
712         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
713         support.
714
715         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
716         full-aot support.
717
718         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
719         this from get_throw_pending_exception, make the signature full aot compatible.
720
721         * Makefile.am (fullaotcheck): New target to run full-aot tests.
722
723         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
724
725         * exceptions.cs: Add a test.
726
727 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
728
729         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
730         use the DWARF_DATA_ALIGN constant instead.
731
732         * exception-<ARCH>.c: Update after the above change.
733
734         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
735         dwarf unwinder.
736
737         * mini-arm.c: Enable the dwarf unwinder.
738
739         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
740         instead of mono_class_setup_vtable ().
741
742 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
743
744         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
745         dwarf unwinder.
746
747         * mini-x86.h: Enable the dwarf unwinder.
748
749 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
750
751         Fix mcs/tests/test-7.cs
752         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
753         2009-02-03.
754
755 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
756
757         * mini.c (print_jit_stats): Remove some unused statistics.
758
759 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
760
761         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
762
763 2009-02-05  Mark Probst  <mark.probst@gmail.com>
764
765         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
766         the method we get from mono_object_get_virtual_method() because
767         that function does it properly, now.
768
769 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
770
771         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
772         opcodes. Fixes #472775.
773
774 2009-02-05  Mark Probst  <mark.probst@gmail.com>
775
776         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
777         fact that mono_find_jit_info() sometimes returns the context
778         corresponding to the jit info in new_ctx.  Fixes #472600.
779
780 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
781
782         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
783         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
784         klass->enum_basetype directly.
785
786         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
787         enum subtypes.
788
789         * unwind.c: Avoid 0 sized arrays.
790
791 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
792
793         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
794         size on systems with 64k pages. Fixes #471389.
795
796 2009-02-04  Mark Probst  <mark.probst@gmail.com>
797
798         Contributed under the terms of the MIT/X11 license by Steven
799         Munroe <munroesj@us.ibm.com>.
800
801         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
802         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
803         necessary.
804
805 2009-02-04  Mark Probst  <mark.probst@gmail.com>
806
807         Contributed under the terms of the MIT/X11 license by Steven
808         Munroe <munroesj@us.ibm.com>.
809
810         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
811         comparison fix.
812
813         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
814         The trampoline can be longer on PPC64.
815
816 2009-02-04  Mark Probst  <mark.probst@gmail.com>
817
818         Contributed under the terms of the MIT/X11 license by Steven
819         Munroe <munroesj@us.ibm.com>.
820
821         * mini-ppc.c: Compiler warning fixes and trivial code
822         simplifications.
823
824 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
825
826         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
827         ins->dreg which could be a hardware register, not a vreg.
828
829         * aot-compiler.c (emit_method_dwarf_info): Ditto.
830         
831         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
832         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
833
834         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
835         
836         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
837         ->dreg, that is not the vreg we are looking for.
838
839         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
840
841         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
842         LIVERANGE_END.
843
844         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
845         strange crashes.
846
847 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
848
849         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
850
851         * aot-compiler.c (emit_line_number_info): Fix line number emission when
852         the line diff is 0.
853
854         * aot-compiler.c: Add xdebug support on x86.
855
856         * unwind.c: Add x86 support.
857         
858         * aot-compiler.c (emit_exception_debug_info): Control the emission of
859         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
860
861         * mini.c (mini_method_compile): Ditto.
862         
863         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
864         the variable index.
865
866         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
867         which mimic .push_section/.pop_section in GAS.
868         
869         * aot-compiler.c: Emit precise live range information for variables.
870
871         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
872
873         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
874         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
875         them.
876
877         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
878         the live ranges of variables.
879
880         * mini.h (struct MonoMethodVar): Add two fields containing the live range
881         of the variable in terms of native offsets.
882
883 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
884
885         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
886         
887 2009-02-02  Mark Probst  <mark.probst@gmail.com>
888
889         Contributed under the terms of the MIT/X11 license by Steven
890         Munroe <munroesj@us.ibm.com>.
891
892         * exceptions-ppc.c (restore_regs_from_context): Correct operand
893         order (offset then base reg) for ppc_load_multiple_regs.
894         (emit_save_saved_regs) Correct operand order for
895         ppc_store_multiple_regs.
896         (mono_arch_get_call_filter): Correct operand order for
897         ppc_load_multiple_regs.
898
899         * mini-ppc.c (emit_memcpy): Fix operand order for
900         ppc_load_reg_update and ppc_store_reg_update.
901         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
902         (mono_arch_emit_epilog): Correct operand order for
903         ppc_load_multiple_regs.
904
905         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
906         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
907
908 2009-02-02  Mark Probst  <mark.probst@gmail.com>
909
910         * cpu-ppc64.md: Fixed storer4_memindex length.
911
912 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
913
914         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
915         line number info.
916         
917         * aot-compiler.c (emit_line_number_info): Optimize this.
918
919 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
920
921         * aot-compiler.c: Disassemble tokens in the IL disassembly.
922         
923         * aot-compiler.c: Add debug info for methods without debug info by
924         emitting an IL file and having the line number info referencing that file.
925
926         * aot-compiler.c: Optimize the size of the generated line number info.
927
928         * aot-compiler.c: Emit line number info in xdebug mode.
929
930         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
931         million arguments.
932
933 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
934
935         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
936
937         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
938         is used.
939
940 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
941
942         * basic-calls.cs: Test for the weird crash found on arm.
943         
944 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
945
946         * cpu-arm.md: Increase the size of storer8_membase_reg and
947         loadr8_membase_reg to 24 bytes to accomodate the extra add.
948
949         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
950         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
951         reg to LR otherwise we'll be loading/storing from just the offset.
952
953 2009-01-30  Miguel de Icaza  <miguel@novell.com>
954
955         Question: if we are storing gint32's inside the "*native_offset",
956         should we change the signature to "gint32 *native_offset" to
957         ensure that we do not have type definition problems?
958         
959         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
960         an int * as this is what the other function expects, causes
961         problems with Freescale's compiler that defined int32_t to be a
962         long and makes int incompatible 
963
964 2009-01-30  Miguel de Icaza  <miguel@novell.com>
965
966         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
967         filename conflict with bjam.
968
969 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
970
971         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
972         as it might use decomposed ops.
973
974 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
975
976         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
977
978         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
979         is defined.
980
981         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
982
983         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
984         offsets.
985
986         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
987         way registers are stored in MonoContext on arm.
988
989         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
990         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
991
992         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
993
994         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
995
996         * mini.c (mini_init): Register mono_isfinite.
997
998         * jit-icalls.c (mono_isfinite): New jit icall.
999
1000         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1001         
1002         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1003         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1004         the parent frame.
1005
1006 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1007
1008         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1009         separate frame and stack pointers, so we must use FP to find the register
1010         spill area.
1011         The FP reg is retrieved from the MonoContext::regs array.
1012
1013 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1014
1015         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1016         as FPA requires it.
1017
1018 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1019
1020         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1021         return R4 and R8 when not running under softfloat.
1022
1023         Fixes basic-calls.exe
1024
1025 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * mini-arm.c: Implement some overflow opcodes.
1028
1029 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1030
1031         * ssa.c: handle another alloca.h
1032
1033         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1034         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1035         MONO_ARCH_USE_SIGACTION. 
1036
1037         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1038         capability defines.
1039
1040         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1041
1042         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1043         PPC targets as sigaction does not exist on all platforms, define
1044         this on a per-platform basis.
1045
1046         Instead of erroring out if the platform is not defined, include
1047         mini-ppc-os.h, and expect that the OS specific setting provides
1048         the required information.   
1049
1050 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1051
1052         * aot-compiler.c: Fix --enable-minimal=aot.
1053
1054 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1055
1056         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1057         previous change.
1058
1059 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1060
1061         * exceptions-arm.c: Fix warnings.
1062
1063         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1064         ARM.
1065
1066         * mini-x86.c: Fix --enable-minimal=jit build.
1067
1068         * mini.c: Really fix --enable-minimal=jit build.
1069         
1070         * mini.c (construct_object_context_for_method): Move this outside
1071         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1072
1073         "Backported" of r124984 from 2.0 branch.
1074         
1075         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1076
1077         "Backport" of r124977 + r124978 from 2.0 branch.
1078         
1079         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1080         to avoid calling mono_exception_from_token () from the throw trampoline.
1081         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1082         for throwing corlib exceptions, this fixes full-aot support for corlib
1083         exceptions.
1084
1085         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1086
1087 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1088
1089         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1090         part of the changes to split the code in mini into operating
1091         system specific files.
1092
1093         This patch was done by copying mini.c to the respective files to
1094         preserve SVN history.
1095
1096 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1099
1100 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1101
1102         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1103         remoting-invoke-with-check wrappers of shared methods.
1104
1105         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1106
1107 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1108
1109         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1110         optimization if the top of stack is the last instruction in the
1111         bblock.  Otherwise it might have been used after its definition.
1112         Fixes #469742.
1113
1114 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1117         method as well when get_vcall_slot () fails to match a code sequence.
1118
1119         * mini-arm.c: Fix the android build, which doesn't have
1120         __aeabi_read_tp.
1121
1122 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1123
1124         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1125         the s390x build.
1126
1127 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1128
1129         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1130
1131 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1134         and put its id into jinfo->used_regs. This is only used on amd64,
1135         which is currently the only platform generating unwind info.
1136
1137         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1138         the dwarf unwinder. This is required to correctly handle async exceptions
1139         like thread abort and stack overflows, which can happen while a method
1140         is in the middle of its prolog or epilog.
1141         
1142         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1143         the unwind info belonging to an AOTed method.
1144
1145         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1146         into cfg->unwind_ops.
1147         
1148         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1149
1150         * mini.c (mini_init): Call mono_unwind_init ().
1151         (mini_cleanup): Call mono_unwind_cleanup ().
1152
1153         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1154         unwind info to be shared between methods.
1155
1156         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1157         saved in the LMF.
1158
1159         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1160         get_throw_pending_exception () to avoid initialization races.
1161
1162         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1163         mono_arch_exceptions_init () function.
1164
1165         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1166
1167 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * mini.c (mono_get_domain_intrinsic): New helper function.
1170         (mono_get_thread_intrinsic): Ditto.
1171
1172         * mini-arm.c mini-ia64.c: Use the new helper functions.
1173         
1174         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1175         the last constrained_call change, since it is needed in the non-AOT
1176         case as well.
1177
1178         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1179         
1180         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1181         mono_get_lmf_addr () on arm eabi linux.
1182
1183 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1186         code sequence which matches a non-virtual call.
1187
1188 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1189
1190         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1191         stack pointer (r1).
1192
1193 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1194
1195         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1196         runtime-invoke wrappers, since they are also shared based on signature.
1197
1198 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1199
1200         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1201         info from the (correct) context.
1202
1203 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1206         
1207         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1208         using dwarf unwinding info. Not yet used.
1209
1210         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1211
1212 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1213
1214         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1215         descriptors.
1216
1217         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1218         special case and handle mono_arch_delegate_invoke_impl() returning
1219         function descriptors.
1220
1221         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1222         trampolines return function descriptors, too.
1223
1224 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1225
1226         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1227         out_of_line optimization.
1228
1229 2009-01-21  Martin Baulig  <martin@ximian.com>
1230
1231         * mini.h
1232         (MonoCompile): Added `disable_deadce_vars' to disable removing
1233         unused variables.
1234
1235         * mini.c
1236         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1237         inside the debugger.
1238
1239         * liveness.c (mono_analyze_liveness): Don't remove any unused
1240         variables if `cfg->disable_deadce_vars' is set.
1241
1242 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1243
1244         * method-to-ir.c: Only apply exception constructor optimization if
1245         the the method actually belongs to an exception class.  Fixes
1246         #467456.
1247
1248 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1249
1250         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1251         change inside a #ifdef __mono_ppc64__.
1252
1253         * aot-compiler.c (compile_method): Remove the previous limitation.
1254
1255         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1256         on type variables in AOTed code.
1257         
1258         * aot-compiler.c (compile_method): Skip generic methods having type 
1259         constraints on their generic parameters.
1260
1261         * aot-compiler.c (compile_method): Check for methods which cannot be
1262         encoded inside RGCTX_FETCH patches as well.
1263
1264         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1265         build.
1266
1267 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1268
1269         * method-to-ir.c: Force the vtable variable in shared generic code
1270         for the case that they might show up on a stack trace where they
1271         are needed.
1272
1273         * mini-exceptions.c: Save and use generic sharing info as well as
1274         IP in stack traces to resolve shared generic instantiations.
1275
1276 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1277
1278         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1279         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1280
1281 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1282
1283         * method-to-ir.c: Do generic sharing for array constructors.
1284
1285 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1286
1287         * mini-exceptions.c (mono_print_thread_dump): Add information
1288         about the thread state using wapi_current_thread_desc.
1289
1290 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1291
1292         * basic-simd.cs: Tests for the new constructors. 
1293
1294 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1295
1296         * mini-ops.h: Added OP_EXPAND_*
1297
1298         * cpu-x86.md: Same.
1299
1300         * mini-x86.c (mono_arch_output_basic_block): Same.
1301         
1302         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1303
1304 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1305
1306         * iltests.il.in: Add a test for #467385.
1307
1308 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1309
1310         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1311         thread been cleaned up is not the same currently in execution.
1312
1313         Fixes appdomain-unload crashes on windows, osx and linux variants
1314         without the __thread keyword.
1315
1316 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1319         (koush@koushikdutta.com). Implement this for android.
1320
1321         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1322         begins with a digit.
1323
1324         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1325         mono_marshal_get_write_barrier ().
1326
1327 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1328
1329         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1330         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1331         that pass them on a register pair.
1332
1333         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1334         test was crashing due to that.
1335
1336 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1337
1338         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1339         trampoline code. Include ucontext.h only if available.
1340
1341 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1342
1343         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1344         and doesn't check whether it's sharable, like it was before
1345         removing the shared generics hash.  This brings IronPython
1346         performance back to what it was before that change.
1347
1348 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1349
1350         * method-to-ir.c: Handle delegate invocation optimization earlier,
1351         otherwise it would be handled (much more slowly) by the
1352         final/sealed optimization.
1353
1354 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1357         domain is not set. Fixes #465864.
1358
1359 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1360
1361         * method-to-ir.c: Don't stop sharing of generic methods with catch
1362         clauses - we already handle those.
1363
1364 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1365
1366         * mini.c, mini.h: lookup_generic_method() is now
1367         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1368         making the shared_generics_hash obsolete.
1369
1370 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1371
1372         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1373         use the red zone.  Make room on the stack first and then use it,
1374         not the other way around.
1375
1376 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1377
1378         * mini.c (mini_init): Call mono_xdebug_init ().
1379
1380         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1381
1382 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1383
1384         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1385
1386         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1387         trampolines.
1388
1389         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1390         debug+unwind info for trampolines.
1391
1392         * mini.c (mono_create_unwind_op): New helper function.
1393
1394         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1395
1396 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * aot-compiler.c: Fix the build.
1399
1400 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * Makefile.am: Update dtrace-prelink.sh location.
1403
1404 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1405
1406         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1407         optimization. Fixes #464520.
1408
1409 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1410
1411         * mini-amd64.c : Adding code to save/restore non-volatile registers
1412            on Winx64.
1413
1414         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1415           registers on Winx64.
1416
1417         Contributed under MIT/X11 license.
1418
1419 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1422         __GNUC_MINOR__ which can break when the major version changes.
1423
1424 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1425
1426         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1427
1428 2009-01-07  Geoff Norton  <gnorton@novell.com>
1429
1430         * helpers.c:  Allow mono -v -v -v to work on darwin.
1431
1432 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1433
1434         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1435           pattern. 
1436
1437         Contributed under MIT/X11 license.
1438
1439 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
1442         instead of directly accessing type->data.klass. Fixes #462016.
1443         (mono_allocate_stack_slots_full): Ditto.
1444
1445         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
1446         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
1447
1448         * aot-compiler.c (emit_plt): Fix ARM build.
1449
1450 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
1453         
1454         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
1455         change.
1456
1457         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
1458         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
1459         #463357.
1460
1461         * iltests.il.in: Add a regression test.
1462
1463 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1464
1465         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
1466
1467 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1468
1469         * basic-simd.cs: Add a regression test for #462457.
1470
1471 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1472
1473         * mini-ops.h: Add a definition of XPHI.
1474
1475         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
1476
1477         * ssa.c (op_phi_to_move): Handle XPHI.
1478
1479         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
1480
1481         Fixes #462457
1482
1483 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1484
1485         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
1486
1487 2008-12-31  Geoff Norton  <gnorton@novell.com>
1488
1489         * mini-ppc.c: The prolog size allocated can be too small for darwin
1490         ppc32 under certain circumstances.  Also fix a small logic bug.
1491
1492 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
1495         while loading AOT methods.
1496
1497         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
1498         since only the former is nulled out after a successful cast. This prevents
1499         crashes with rethrown exceptions when using --debug=casts.
1500
1501 2008-12-24  Mark Probst  <mark.probst@gmail.com>
1502
1503         * mini.h: New macro for checking whether a method is final,
1504         i.e. whether the method or its class is marked final.
1505
1506         * method-to-ir.c: Use the new macro for all final-checks
1507         consistently.  Fixes the crash in the System.ServiceModel tests.
1508
1509 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1510
1511         * mini-exceptions.c (get_exception_catch_class): Corrected another
1512         overly strict assertion.
1513
1514 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1515
1516         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
1517         Clobbering it is not allowed because the caller might use it as
1518         the vtable register in the interface call.
1519
1520 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1521
1522         * mini-exceptions.c (get_exception_catch_class): Corrected an
1523         overly strict assertion.
1524
1525 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
1526         
1527         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
1528
1529         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
1530
1531         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
1532
1533         * cpu-mips.md: correct lengths for certain long_ opcodes.
1534
1535         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
1536
1537         * 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().
1538         
1539 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1540
1541         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
1542         
1543 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1544         
1545         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
1546         
1547 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
1550         next basic block.
1551         
1552 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
1553
1554         * 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
1555
1556         * 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)
1557         
1558 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
1559         
1560         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
1561         
1562 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
1565         gshared code. Fixes #458947.
1566
1567         * generics.cs: Add a test.
1568
1569 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1570         
1571         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1572         
1573         * mini-mips.c: first pass n32 code generation.
1574
1575         * mini-mips.h: datatypes and defines for n32 support.
1576
1577         * exceptions-mips.c: first pass n32 code generation.
1578         
1579         * tramp-mips.c: first pass n32 code generation.
1580         
1581         * cpu-mips.md: add long_ opcodes.
1582         
1583 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1584
1585         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1586
1587         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1588         
1589         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1590         
1591         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1592
1593         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1594
1595         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1596
1597         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1598
1599         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1600
1601         * helpers.c: for mips/n32, don't pass -mips32 to objdump
1602
1603 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
1606
1607 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
1608
1609         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
1610
1611 2008-12-12  Mark Probst  <mark.probst@gmail.com>
1612
1613         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
1614         descriptors for helper functions directly in front of the code.
1615
1616 2008-12-11  Mark Probst  <mark.probst@gmail.com>
1617
1618         * method-to-ir.c: Removed an unnecessary assertion.
1619
1620 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * method-to-ir.c: Merge SGEN changes from the old JIT.
1623
1624 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1625
1626         * driver.c (compile_all_methods_thread_main): Handle failure of
1627         mono_get_method ().
1628
1629 2008-12-10  Mark Probst  <mark.probst@gmail.com>
1630
1631         * mini-ppc.c: Merged with mini-ppc64.c.
1632
1633         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
1634
1635         * Makefile.am: Use the same sources for PPC and PPC64.
1636
1637         * mini-ppc64.c: Removed.
1638
1639 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1640
1641         * branch-opts.c (remove_block_if_useless): Extract fall through detection
1642         code to mono_bb_is_fall_through.
1643         
1644         * branch-opts.c (mono_remove_critical_edges): Same.
1645
1646 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1647
1648         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
1649         expect that an OP_BR_REG will be there.
1650
1651 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1652
1653         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
1654         for the many branch ops. The original check miss OP_BR_REG.
1655
1656         Fixes #457574.
1657         
1658 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1659
1660         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
1661
1662 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1663
1664         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
1665         while holding the aot lock.
1666
1667 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1668
1669         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
1670         
1671 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1672
1673         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
1674           to release all runtime callable wrappers held by the runtime.
1675
1676         Contributed under MIT/X11 license.
1677
1678 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1679
1680         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
1681           for Winx64.
1682
1683         Contributed under MIT/X11 license.
1684
1685 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1686
1687         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
1688         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
1689
1690 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1691
1692         * cpu-mips.md: fix ckfinite length
1693
1694         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
1695         (mono_arch_lowering_pass): cleanup, rearrange for clarity
1696         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
1697         
1698 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
1699
1700         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
1701         
1702 2008-12-08  Geoff Norton  <gnorton@novell.com>
1703
1704         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
1705         size by 8 bytes as well.
1706
1707 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1708
1709         * basic-simd.cs: Fix method names for Vector16b.
1710         
1711 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1712
1713         * basic-simd.cs: Fix method names for Vector16sb.
1714
1715 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1716
1717         * basic-simd.cs: Fix method names for Vector8us.
1718         
1719 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1720
1721         * basic-simd.cs: Fix method names for Vector8s.
1722         
1723 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1724
1725         * basic-simd.cs: Fix method names for Vector4ui.
1726
1727 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1728
1729         * basic-simd.cs: Fix method names for Vector2l.
1730
1731 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1732
1733         * basic-simd.cs: Fix method names for Vector2d.
1734
1735 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1736
1737         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
1738         that are extension methods.
1739
1740 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1741
1742         * basic-simd.cs: Fix method names for Vector4f.
1743
1744 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
1747         as such. Fixes #456669.
1748
1749 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1750
1751         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
1752         
1753 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1754
1755         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
1756         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
1757         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
1758         (mips_adjust_stackframe): handle FP spills
1759                 
1760         * mini-ops.h: add mips_mtc1_s2
1761         
1762         * cpu-mips.md: add mips_mtc1_s2
1763         
1764 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
1765
1766         * unwind.c: New file, move the unwind info encoding functions here from
1767         aot-compiler.c, so they could be used at runtime too.
1768
1769 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1770
1771         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
1772         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
1773         
1774 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1775
1776         * mini-mips.c: cleanup warnings
1777         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
1778         (mips_adjust_stackframe): handle case of taking the address of stack locals
1779         
1780 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * aot-compiler.c: Implement a few functions missing from the asm writer.
1783         (emit_method_code): Only write symbols for methods when using the bin
1784         writer, since the assembler can't deal with the characters in our method
1785         names.
1786
1787         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
1788
1789         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
1790         call.
1791
1792         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
1793         a bit to also restore %rax.
1794
1795 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1796
1797         * mini-ppc.c: Some simple merges from mini-ppc64.c.
1798
1799 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1800
1801         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
1802         arguments.
1803
1804 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1805
1806         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
1807
1808         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
1809         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
1810
1811         * exceptions-ppc64.c: Removed.
1812
1813         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
1814
1815 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1816
1817         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
1818         tramp-ppc64.c.
1819
1820         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
1821
1822         * tramp-ppc64.c: Removed.
1823
1824 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
1827         the TYPESPEC table.
1828
1829 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1830
1831         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
1832
1833         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
1834         mini-ppc.h instead of mini-ppc64.h.
1835
1836         * mini-ppc64.h: Removed.
1837
1838 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1839
1840         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
1841         
1842         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
1843         
1844 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1845
1846         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
1847         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
1848         code easier.
1849
1850 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1851
1852         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
1853
1854 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1855
1856         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
1857
1858 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * basic-simd.cs: Tests for operator == and != on Vector4f.
1861
1862 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
1865
1866         * simd-intrinsics.c: Kill useless enum.
1867
1868 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1869
1870         * cpu-mips.md: add long_conv_to_ovf_i4_2
1871         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
1872
1873 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1874
1875         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
1876         
1877         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
1878
1879 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1880
1881         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
1882         
1883 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1884
1885         * basic-simd.cs: Add tests for new methods.
1886
1887 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1888
1889         * simd-intrinsics.c: Add support for operator == and !=
1890         on Vector4(u)i.
1891
1892         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
1893
1894 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1895
1896         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
1897
1898 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
1899
1900         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
1901
1902         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
1903         MONO_PATCH_INFO_ICALL_ADDR.
1904
1905         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
1906
1907         * aot-compiler.c: Resurrect full-aot support.
1908
1909 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1910
1911         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
1912         
1913 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1914
1915         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
1916         
1917 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         * basic-simd.cs: Fix tests to work under ppc.
1920         Remove tests for methods that will be removed.
1921
1922 2008-12-03  Mark Probst  <mark.probst@gmail.com>
1923
1924         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
1925         generic type (via a typedef or typeref) correctly.
1926
1927 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
1928
1929         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
1930         diagnose an assertion failure.
1931
1932 2008-12-02  Mark Probst  <mark.probst@gmail.com>
1933
1934         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
1935         Fix trampoline size.
1936
1937         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
1938         conversion opcodes are implemented natively instead via emulation.
1939
1940 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1941
1942         * cpu-mips.md: remove mips_xori
1943
1944         * mini-ops.h:  remove mips_xori
1945
1946         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
1947
1948         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
1949         
1950         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
1951         
1952 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1953
1954         * cpu-mips.md: fix instruction lengths.
1955
1956         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
1957
1958         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
1959
1960         * mini-ops.h: fix slti / sltiu op profiles.
1961         
1962 2008-12-02  Martin Baulig  <martin@ximian.com>
1963
1964         * method-to-ir.c (mono_method_to_ir): Disable debugging
1965         information for the init locals block to make the debugger stop
1966         after all locals have been initalized.
1967
1968 2008-12-02  Martin Baulig  <martin@ximian.com>
1969
1970         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
1971         running inside the debugger.
1972
1973 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
1974
1975         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
1976         is enabled.
1977
1978         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
1979         alu->alu imm optimization which only shows if deadce is disabled.
1980
1981         * aot-compiler.c: Rename the function names for the binary and asm writers
1982         so they can coexist in the same process. Rework the xdebug code to use the
1983         asm writer. This avoids the need to call into the runtime to dump the
1984         debugging info. Add more debugging info for types.
1985
1986         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
1987
1988         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
1989         cpu description tables, they can't occur in cpu-<ARCH>.md.
1990
1991         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
1992         the stack in CEE_LDFLDA. Fixes #450542.
1993
1994         * generics.cs: Add a new test.
1995
1996 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1997
1998         * mini-ops.h: updated MIPS opcodes
1999         * mini-mips.c: decompose long opts
2000         * mini-mips.h: decompose long opts
2001         
2002 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2003
2004         * cpu-mips.md: fix length on int_rem_un
2005         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2006         
2007 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2010
2011         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2012
2013 2008-11-29  Martin Baulig  <martin@ximian.com>
2014
2015         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2016         mono_debug_using_mono_debugger() in addition to the
2017         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2018
2019 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2020
2021         * mini-ops.h: updated more MIPS opcodes
2022         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2023         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2024         
2025 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2026
2027         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2028
2029 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2030
2031         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2032         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2033         * mini-ops.h: correct selected mips opcode entries
2034         
2035 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2036
2037         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2038         make them work.
2039
2040 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2041
2042         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2043
2044 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2045
2046         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2047         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2048         * mini-mips.h: disable IMT
2049         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2050         
2051 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2052
2053         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2054
2055 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2056
2057         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2058
2059 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2060
2061         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2062         consistency.
2063
2064 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2065
2066         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2067         for Set/GetVector aligned versions.
2068
2069 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2070
2071         * basic-simd.cs: Add tests for Get/SetVector.
2072
2073 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2074
2075         * mini.c: Removed g_slist_append_mempool().  Now in
2076         metadata/mempool.c.
2077
2078 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2079
2080         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2081         size properly and make the bounds check optional.
2082
2083         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2084         for SetVector and IsAligned.
2085
2086 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2087
2088         * mini.c: Remove unused mono_normalize_opcodes () function.
2089
2090 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2091
2092         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2093         using the new atomic add ops now.
2094
2095         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2096         add.
2097
2098 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2099
2100         * mini-ppc64.c: Several fixes.
2101
2102 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2103
2104         * cpu-mips.md: added jump_table
2105         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2106
2107 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2108
2109         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2110
2111 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2112
2113         * mini-ops.h: corrected a handful of MIPS opcodes.
2114
2115 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2116
2117         * aot-compiler.c: MIPS to use ELF writer
2118
2119 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2120
2121         * mini-codegen.c: remove MIPS specific assert.
2122
2123 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2124
2125         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2126         fixes.  PPC64 now passes most of the runtime regressions.
2127
2128 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2131         volatile intervals a bit.
2132
2133 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2134
2135         * basic-long.cs: New test case.
2136
2137 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini.c (mini_method_compile): Disable globalra for large methods for 
2140         now.
2141
2142         * regalloc2.c (order_moves): Add fp support.
2143
2144         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2145         source bblock ends with an OP_BR_REG.
2146
2147         * ratests.cs: Add a new test.
2148
2149 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2150
2151         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2152         sharing.  PPC64 now passes generics.exe.
2153
2154 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2155
2156         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2157
2158 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2161         memory when mono_jit_info_table_find () can't find the method in the
2162         LMF case.
2163
2164         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2165         AOTed code too.
2166         
2167         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2168         writer too.
2169
2170 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2171
2172         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2173         Several fixes.  PPC64 now runs exceptions.exe and
2174         devirtualization.exe.
2175
2176 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2177
2178         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2179         arrays.exe and basic-math.exe.
2180
2181 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2182
2183         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2184         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2185
2186 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2187
2188         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2189
2190 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2191
2192         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2193
2194         * ir-emit.h: Move macros from method-to-ir.c to here.
2195
2196 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2197
2198         * mini-ops.h: Correct the long simd ops to use LREG.
2199
2200 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2203         
2204         * mini-ops.h: Correct the dreg type of a few long opcodes.
2205
2206         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2207         Add netbsd support.
2208
2209 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2210
2211         * mini-ppc.c: remove negative stack references in epilog
2212         for platforms that don't support the red zone.
2213
2214 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2215
2216         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2217         point regs.  Now PPC64 passes basic-calls.exe.
2218
2219 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2220
2221         * basic-simd.cs: Add tests for accessors of Vector2l.
2222
2223 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2224
2225         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2226
2227         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2228         
2229         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2230
2231 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2232
2233         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2234         PPC64 passes basic-long.exe.
2235
2236 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2237
2238         * decompose.c: Decompose carry and overflow add on PPC64 like on
2239         other 64 bit archs.  Don't decompose sub at all on PPC64.
2240
2241         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2242         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2243         basic-long.exe.
2244
2245 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2246
2247         * basic-simd.cs: Add tests for accessors of Vector2d.
2248
2249 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2250
2251         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2252
2253         * cpu-x86.md: Same.
2254
2255         * mini-x86.c (mono_arch_output_basic_block): Same.
2256         
2257         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2258
2259 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2260
2261         * basic-simd.cs: Add tests for accessors of Vector4f.
2262
2263 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2264
2265         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2266
2267         * cpu-x86.md: Same.
2268
2269         * mini-x86.c (mono_arch_output_basic_block): Same.
2270         
2271         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2272
2273 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2274
2275         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2276
2277 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2278
2279         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2280
2281         * cpu-x86.md: Same.
2282
2283         * mini-x86.c (mono_arch_output_basic_block): Same.
2284         
2285         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2286
2287 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2288
2289         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2290
2291 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2292
2293         * simd-intrinsics.c: Enable setters for Vector16sb.
2294
2295 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2296
2297         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2298
2299         * cpu-x86.md: Same.
2300
2301         * mini-x86.c (mono_arch_output_basic_block): Same.
2302         
2303         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2304
2305 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2306
2307         * simd-intrinsics.c: Implement setter for Vector8us.
2308
2309 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2310
2311         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2312         for dead variables.
2313
2314 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2315
2316         * mini-ppc.c: remove references to the red zone in the prolog
2317         (for systems that don't support it).
2318
2319 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2320
2321         * cpu-ppc64.md: Fixed a few instruction lengths.
2322
2323         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2324         now.
2325
2326 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2327
2328         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2329         basic.exe now.
2330
2331 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2334
2335 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2336
2337         * mini-ops.h: Added OP_INSERT_I2.
2338
2339         * cpu-x86.md: Same.
2340
2341         * mini-x86.c (mono_arch_output_basic_block): Same.
2342         
2343         * simd-intrinsics.c: Implement setter for Vector8s.
2344
2345         * simd-methods.h: Add the names of get setters of Vector8s.
2346
2347 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2350         
2351         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2352         parameters.
2353
2354         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2355
2356 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2357
2358         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2359         for PPC64.  An empty program runs now.
2360
2361 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2364
2365         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2366         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2367         info for JITted code is emitted into a shared library, loadable into gdb.
2368
2369 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2370
2371         * Makefile.am: Changes to build PPC64.
2372
2373         * mini-arch.h: Include mini-ppc64.h on PPC64.
2374
2375 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2376
2377         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2378         in PPC code up to r119147.
2379
2380 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2381
2382         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2383         cpu-ppc64.md: Changes for PPC64.
2384
2385         Based on code submitted by andreas.faerber@web.de at
2386         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2387         X11/MIT license.
2388
2389 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2390
2391         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2392         cpu-ppc64.md: Copied from the corresponding PPC files from
2393         r118846.
2394
2395 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2396
2397         * mini-ops.h: Added OP_ROUND.
2398
2399         * cpu-x86.md: Added round.
2400
2401         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2402
2403         * basic-math.cs: Added test_0_round to test rounding.
2404
2405         Contributed under MIT/X11 license.
2406
2407 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2408
2409         * aot-compiler.c : Fix the Winx64 build.
2410
2411         Contributed under MIT/X11 license.
2412
2413 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2414
2415         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2416         in OP_EXTRACT_R8 to avoid possible stack corruption.
2417
2418 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2419
2420         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2421
2422         * cpu-x86.md: Added extract_r8.
2423
2424         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2425         
2426         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2427         a couple of OP_EXTRACT_I4.
2428
2429         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2430
2431         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2432
2433 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2434
2435         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2436         and not 4.1. 
2437
2438 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2439
2440         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
2441         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
2442
2443         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
2444         are not needed any more.
2445
2446         * mini.h: Remove the unused INS_LIST macros.
2447
2448         * mini.c (mini_method_compile): Remove a disable globalra case which is no
2449         longer needed.
2450
2451         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
2452         ir-emit.h.
2453
2454         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
2455         mono_alloc_ireg () instead.
2456
2457         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
2458         macros.
2459
2460         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
2461         on amd64.
2462
2463         * aot-runtime.c (load_aot_module): Disable AOT when running under
2464         CAS.
2465
2466         * mini-amd64.h: Change the monitor fastpath defines to check for
2467         !PLATFORM_WIN32 so they work on *bsd too.
2468
2469         * mini.h mini.c mini-hhpa.c: Remove more unused code.
2470
2471         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
2472
2473         * mini.h (MonoCompile): Remove new_ir flag.
2474
2475         * regalloc.h regalloc.c: Remove unused code.
2476
2477         * cpu-*.md: Remove more unused opcodes.
2478
2479         * simple-cee-ops.h simple-mini-ops.h: Removed.
2480
2481         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
2482         
2483 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2484
2485         * aliasing.h: Removed.
2486
2487         * *.c: Remove references to aliasing.h and inssel.h.
2488
2489         * mini.c: Remove additional unused functions.
2490
2491         * mini-ops.h cpu-*.md: Remove unused opcodes.
2492
2493 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2494
2495         Remove the old JIT code.
2496
2497         * inssel*.brg: Removed.
2498
2499         * ssa.c abcremoval.c aliasing.c: Removed.
2500
2501         * ssa2.c: Renamed to ssa.c.
2502
2503         * abcremoval2.c: Renamed to abcremoval.c.
2504
2505         * *.c: Removed all !cfg->new_ir code.
2506
2507         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
2508         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
2509
2510         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
2511         
2512 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
2515         to simplify the code and cut back on the number of global symbols in the AOT
2516         file.
2517         
2518         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
2519
2520 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
2521
2522         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
2523         with the got/got_info tables.
2524
2525         * mini.h: Bump AOT file format version.
2526         
2527         * unwind.h: New file, contains definitions for stack unwinding.
2528
2529         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
2530         to cfg->unwind_ops.
2531         
2532         * aot-compiler.c: Generalize the emitting of unwind information to use the
2533         information in cfg->unwind_ops.
2534
2535         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
2536
2537         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
2538         AOT method frames. Enable writing symbols for methods by default.
2539
2540 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
2541
2542         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
2543         and make it work with vectors of element sizes 1, 2 and 4.
2544
2545         * simd-intrinsics.c: Enable getter for all vectors with element size
2546         1, 2 or 4.
2547
2548         * simd-methods.h: Add the names of other getters.
2549
2550         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
2551
2552         * cpu-x86.md: Same.
2553
2554         * mini-x86.c: Same.
2555
2556 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
2557
2558         * mini-ppc.h: portability fix.
2559
2560 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2561
2562         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
2563         buggy and will overwrite it.
2564
2565 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2566
2567         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
2568         Use it to emit local symbols for all methods so AOTed methods show up with
2569         their full name in gdb/valgrind output.
2570
2571 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
2572
2573         * mini-ppc.c: portability fixes.
2574
2575 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
2578         entries out of the if (!generic_shared...) code so it is always done.
2579         (mono_class_init_trampoline): Do the patching when running under valgrind
2580         too, newer versions of valgrind have no problems with it.
2581
2582 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2583
2584         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
2585         further sections.
2586
2587 2008-11-13  Mark Probst  <mark.probst@gmail.com>
2588
2589         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
2590         filters.
2591
2592 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2593
2594         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
2595
2596 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2597
2598         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
2599
2600         * cpu-x86.md: Same.
2601
2602         * mini-x86.c: Same.
2603
2604         * simd-intrinsics.c: Same.
2605
2606 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2607
2608         * simd-intrinsics.c: Enable constructor intrinsics for all types.
2609
2610 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
2613         to work with more Vector types.
2614
2615 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2616
2617         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
2618         store the elemens directly instead of using and intermediate.
2619
2620 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
2623
2624         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
2625         to preserve %eax for aot plt trampolines.
2626
2627         * aot-compiler.c (compile_method): Don't skip synchronized methods.
2628         (encode_method_ref): Flag synchronized methods so they won't go through
2629         the AOT trampoline.
2630
2631         * aot-compiler.c: Additional work to support AOTing synchronized methods/
2632         wrappers.
2633
2634         * cpu-ia64.md (jmp): Increase max length.
2635
2636 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
2639         open generic classes.
2640
2641         * aot-compiler.c: Enable the ELF writer on ELF platforms.
2642
2643         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
2644         box+brtrue optimization since it causes test failures on x86.
2645
2646 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2647
2648         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
2649
2650         * cpu-x86.md: Same.
2651
2652         * mini-x86.c: Same.
2653
2654         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
2655         for simd ctor values. 
2656
2657         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
2658         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
2659
2660 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2661
2662         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
2663         LogicalRightShift.
2664
2665         * simd-instrincs.c: Same.
2666
2667         * basic-simd.cs: Same.
2668
2669 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2670
2671         * ratests.cs: Add more tests.
2672
2673         * regalloc2.c (add_spill_code): Handle more corner cases.
2674
2675 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2676
2677         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
2678         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
2679         both the source an destination of an instruction.
2680
2681 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2682
2683         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
2684         wapihandles.c: more portability changes.
2685
2686 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
2687
2688         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
2689         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
2690         safe to execute in a signal handler and the kernel provides better
2691         the info in /proc/self/smaps. Avoid the assert on sigaction during
2692         cleanup.
2693
2694 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2695
2696         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
2697         do the bblock linking hack if it is actually needed.
2698
2699         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
2700         up linking.
2701
2702         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
2703         crash problem is fixed.
2704
2705         * branch-opts.c (mono_remove_critical_edges): Link up newly added
2706         bblocks.
2707
2708         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
2709         for catch clauses.
2710         (mini_method_compile): Set the starting value of next_vreg to 
2711         MAX_IREGS + MAX_FREGS when using globalra.
2712
2713         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
2714         filter clauses with BB_EXCEPTION_HANDLER.
2715
2716         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
2717
2718 2008-11-10  Mark Probst  <mark.probst@gmail.com>
2719
2720         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
2721         space for stdcall.  Fixes regressions on Win32.
2722
2723 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
2726         bblocks.
2727         (linear_scan): Remove an assert which doesn't seem to be needed.
2728
2729         * local-propagation.c (mono_local_deadce): Avoid a call to
2730         MONO_DELETE_INS which would screw up the instruction linking.
2731
2732         * mini.c (mono_decompose_op_imm): Make this work with globalra.
2733
2734         * regalloc2.c: Upgrade to work the current JIT code.
2735
2736 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
2737
2738         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
2739         case.
2740
2741         * aot-runtime.c: Remove some dead code.
2742
2743         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
2744         consistency.
2745         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
2746
2747         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
2748         trampolines using sscanf since atoi doesn't work on large unsigned values.
2749
2750         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
2751         Initialize code_size.
2752
2753 2008-11-08  Mark Probst  <mark.probst@gmail.com>
2754
2755         * method-to-ir.c (mini_emit_inst_for_method): Make
2756         Interlocked.CompareExchange work for Int arguments on 32 bit
2757         archs, as well.
2758
2759 2008-11-07  Mark Probst  <mark.probst@gmail.com>
2760
2761         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
2762
2763 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
2764
2765         * main.c Fix MSVC build.
2766
2767         Contributed under MIT/X11 license.
2768
2769 2008-11-06  Mark Probst  <mark.probst@gmail.com>
2770
2771         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
2772         alignment larger than 8 bytes are aligned correctly, too.
2773
2774         * mini.c: Honor the min_align field of MonoClass when laying out
2775         the stack.
2776
2777 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
2778
2779         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
2780
2781         * aot-compiler.c (emit_plt): Fix a warning.
2782         
2783         * aot-compiler.c: Implement ARM support in the binary writer.
2784
2785 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2786
2787         * basic-simd.cs: Add test for getter with byref arg.
2788         Fix the naming of a few tests.
2789         Add missing checks to a test.
2790
2791 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
2792
2793         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
2794
2795         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
2796         most of the full-aot support for monitor enter/exit trampolines.
2797
2798         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
2799         enter/exit trampoline creation functions.
2800
2801         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
2802         make dist.
2803
2804 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
2805
2806         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
2807         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
2808         implement the needed functionality without adding crap to the runtime.
2809
2810 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
2813         non-x86 builds.
2814
2815         * mini.c (mono_build_date): New global version holding the build date in
2816         string format.
2817         
2818         * Makefile.am (buildver.c): Generate a file containing the build date.
2819
2820         * main.c: Set the build date from the generated file.
2821
2822         * mini.c (mono_get_runtime_build_info): New helper function returning build
2823         information in a string format.
2824         
2825         * driver.c (mono_main): Print the build date in --version.
2826
2827         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
2828         file when the bind-to-runtime-version option is used.
2829
2830 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2831
2832         * simd-intrinsics.c: Fix bug when using getters and byref args. 
2833
2834 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2835
2836         * simd-methods.h: Rename prefetch methods.
2837
2838         * simd-intrinsics.c: Same.      
2839
2840 2008-11-05  Mark Probst  <mark.probst@gmail.com>
2841
2842         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
2843         sizes.
2844
2845 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2846
2847         * aot-compiler.c: Use the bundled elf header files instead of depending on
2848         the system one.
2849         
2850         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
2851         mempool.
2852
2853         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
2854         on every call.
2855
2856 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
2857
2858         * cpu-x86.md: Add store nta ops.
2859
2860         * mini-ops.h: Same.
2861
2862         * mini-x86.c: Same.
2863
2864         * mini.h: Add an enum for simd prefetch modes.
2865
2866         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
2867         of store. Use the changed code to support store nta.
2868
2869         * simd-intrinsics.c: Add prefetch ops for all vector types.
2870
2871 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
2874         threads.
2875         
2876         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
2877         names.
2878
2879         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
2880         trampolines.
2881
2882 2008-11-04  Mark Probst  <mark.probst@gmail.com>
2883
2884         * mini-x86.c: Fixed commit.
2885
2886 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2887
2888         * aot-compiler.c (emit_plt): Align the plt section only on x86.
2889
2890 2008-11-04  Mark Probst  <mark.probst@gmail.com>
2891
2892         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
2893         and MONITOR_EXIT, for the ASM fastpaths.
2894
2895         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
2896         available.
2897
2898         * mini.c, patch-info.h: Signature and patch infos for
2899         Monitor.Enter/Exit trampolines.
2900
2901         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
2902
2903         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
2904         Monitor.Enter/Exit ASM fastpath for Linux.
2905
2906 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
2909
2910         * objects.cs: Add a new test.
2911         
2912         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
2913
2914         * aot-runtime.c (load_method): Run class initialization in the PLT case even
2915         if MONO_LOG_LEVEL is set.
2916
2917         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
2918
2919         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
2920
2921         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
2922         
2923         * aot-compiler.c: Change the relocation code to use virtual addresses instead
2924         of file offsets. Align the sections belonging to the data segment to 
2925         PAGESIZE.
2926
2927 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
2928
2929         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
2930         elf.h. Port it to amd64.
2931
2932 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2933
2934         * driver.c: Enable SIMD by default.
2935
2936 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2937
2938         * cpu-x86.md: Add prefetch op.
2939
2940         * mini-ops.h: Same.
2941
2942         * mini-x86.c: Same.
2943
2944         * mini.h: Add an enum for simd prefetch modes.
2945
2946         * simd-methods.h: Add prefetch function names.
2947
2948         * simd-intrinsics.c: Add prefetch ops for all vector types.
2949
2950 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
2951
2952         * aot-compiler.c (emit_bytes): Speed this up a little.
2953
2954 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * aot-compiler.c: Add JIT time etc. statistics.
2957         
2958         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
2959
2960         * mini.h (MonoCompile): Add 'got_offset' field.
2961
2962         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
2963         method_got_offsets array.
2964
2965         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
2966         wrappers.
2967
2968         * aot-compiler.c (compile_method): Add generic method instances referenced
2969         by the method to the list of methods to be compiled, this is required so if
2970         A<T> references B<T>, and another assembly references A<int>, then it will
2971         also get a copy of B<int>.
2972
2973         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
2974         when checking for monitor enter/exit.
2975
2976 2008-10-30  Mark Probst  <mark.probst@gmail.com>
2977
2978         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
2979         for Monitor.Enter and Monitor.Exit if enabled.
2980
2981         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
2982         Solaris.
2983
2984 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
2985
2986         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
2987         of an OP_MOVE. Fixes #440046.
2988
2989         * basic-long.cs: Add a new test.
2990
2991 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
2992
2993         * mini.h: Add synchronization note for the managed counter-part.
2994
2995         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
2996         returns the simd caps of the current cpu.
2997
2998 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
2999
3000         * basic-simd.cs: Remove Console.WriteLine.
3001
3002 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3003
3004         * basic-simd.cs: New tests for Vector2ul.
3005
3006 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3007
3008         * simd-intrinsics.c: Add new vector type Vector2ul.
3009
3010 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3011
3012         * basic-simd.cs: New tests for Vector2l.
3013
3014 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3015
3016         * cpu-x86.md: Add long version of most packed int ops.
3017
3018         * mini-ops.h: Same.
3019
3020         * mini-x86.h: Same.
3021
3022         * simd-intrinsics.c: Add new vector type Vector2l.
3023
3024 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3025
3026         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3027
3028         * simd-methods.h: Remove SN_op_BitwiseXor.
3029
3030 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3033         alignment.
3034
3035 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3036
3037         * basic-simd.cs: Test for Vector2d.
3038
3039         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3040         value.
3041
3042 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3043
3044         * cpu-x86.md: Add double version of all packed float ops.
3045
3046         * mini-ops.h: Same.
3047
3048         * mini-x86.h: Same.
3049
3050         * simd-intrinsics.c: Add new vector type Vector2d.
3051
3052         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3053
3054         * simd-methods.h: Add Duplicate.
3055
3056 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3057
3058         * basic-simd.cs: Test for packing with signed saturation.
3059
3060 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3063         found in the TYPESPEC table.
3064
3065 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3066
3067         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3068         too.
3069
3070         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3071
3072         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3073         instead of the RVA, since the RVA can be changed by tools like the cil 
3074         stripper.
3075
3076         * method-to-ir.c (mono_method_to_ir2): Ditto.
3077
3078         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3079         (deserialize_variable): Ditto.
3080
3081 2008-10-25  Martin Baulig  <martin@ximian.com>
3082
3083         * debug-mini.c (write_variable): Use
3084         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3085
3086 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3087
3088         * cpu-x86.md: Add unsigned variants of packd and packw.
3089
3090         * mini-ops.h: Same.
3091
3092         * mini-x86.h: Emit the right instruction for packd and packw.
3093         Add unsigned variants of packd and packw.
3094
3095         * simd-intrinsics.c: Packd and packw were used in place of their
3096         unsigned variants. Change that.
3097         Add intrinsics for (Signed)PackWithSignedSaturation.
3098
3099         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3100
3101 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3102
3103         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3104
3105 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3106
3107         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3108
3109         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3110
3111         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3112         sse instructions.
3113
3114         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3115
3116 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3117
3118         * method-to-ir.c, mini.c: Special casing for the synchronized
3119         wrapper for the ldtoken+GetTypeFromHandle case.
3120
3121 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3122
3123         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3124
3125         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3126         created/split bblocks.
3127
3128 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3129
3130         * mini-ops.h: Add packed signed mul high.
3131         
3132         * cpu-x86.md: Same.
3133
3134         * mini-x86.c (mono_arch_output_basic_block): Same.
3135
3136         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3137
3138         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3139
3140 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3141
3142         * basic-simd.cs: Tests for Vector16sb.
3143
3144 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3145
3146         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3147
3148 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3149
3150         * mini-ops.h: Add packed signed min, max and compare greater.
3151         
3152         * cpu-x86.md: Same.
3153
3154         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3155         saturation.
3156
3157         * simd-methods.h: Add CompareGreaterThan.
3158
3159         * simd-methods.h: Remove CompareEquals.
3160
3161         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3162
3163         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3164
3165         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3166         CompareEqual.
3167
3168 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3169
3170         * basic-simd.cs: Fix tests due to change in the API.
3171
3172 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3173
3174         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3175
3176 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3177
3178         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3179
3180         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3181         inst_offset as this has invalid values for LDADDR.
3182
3183 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3184
3185         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3186
3187         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3188
3189 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3190
3191         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3192         for accessing field->data.
3193
3194 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3195
3196         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3197
3198 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3199
3200         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3201
3202         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3203
3204 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3207         from the cfg mempool.
3208
3209 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3210
3211         * basic-simd.cs: Tests for new methods in Vector8us.
3212
3213 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3214
3215         * mini-ops.h: Add multiply and store high.
3216         
3217         * cpu-x86.md: Same.
3218
3219         * mini-x86.c (mono_arch_output_basic_block): Same.
3220
3221         * simd-methods.h: Same.
3222
3223         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3224         and CompareEqual.
3225
3226 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3229         mono_class_setup_vtable ().
3230
3231         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3232         mono_class_get_vtable_entry () for accessing klass->vtable.
3233
3234         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3235
3236         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3237         found.
3238
3239         * method-to-ir.c (mono_save_token_info): Don't save references made from
3240         wrappers.
3241
3242         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3243         of generic instances.
3244
3245         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3246
3247 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3248
3249         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3250         OP_JMP depends on the method signature.  Calculate it properly.
3251
3252 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3253         
3254         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3255         called directly.
3256
3257         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3258         instances.
3259         (emit_extra_methods): Add another table mapping method indexes to 
3260         offsets in the extra_method_info table.
3261
3262         * mini.h: Bump AOT file format version.
3263         
3264         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3265         and mono_aot_get_method_from_token () into one function.
3266
3267 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3268
3269         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3270         separate counter.
3271
3272 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3273
3274         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3275         methods.
3276
3277         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3278         disable_aot.
3279
3280         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3281
3282         * mini.h: Bump aot file format version.
3283
3284         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3285         AOT file can contain native code for methods which are not in the METHOD
3286         table. Generate code for non-sharable generic instances of generic methods
3287         found in the METHODSPEC table.
3288         
3289         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3290         encoding generic type handles.
3291
3292         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3293         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3294
3295         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3296         macros + MONO_ADD_INS.
3297
3298         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3299         context as well.
3300
3301         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3302
3303         * mini.h: Bump aot file format version.
3304
3305         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3306
3307 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3308
3309         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3310         platforms, with definable stack alignment value.  Set to 16 now
3311         for all platforms.
3312
3313         * mini.c, mini.h, driver.c: Command line option for disabling
3314         stack alignment.
3315
3316 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3317
3318         * basic-simd.cs: Tests for new methods in Vector4ui.
3319
3320 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3321
3322         * mini-ops.h: Add packed int shuffle.
3323         
3324         * cpu-x86.md: Same.
3325
3326         * mini-x86.c (mono_arch_output_basic_block): Same.
3327
3328         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3329         extract mask, max, min, shuffle.
3330
3331         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3332
3333 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3334
3335         * basic-simd.cs: Tests for new methods in Vector8us.
3336
3337 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3338
3339         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3340         RuntimeTypeHandle, not a TypedReference.
3341
3342 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3343
3344         * simd-intrinsics.c: remove relocations.
3345
3346 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3347
3348         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3349         optimizations from the x86 backend.
3350
3351 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3352
3353         * simd-methods.h, simd-intrinsics.c: debloat method names and
3354         prepare for no relocations.
3355
3356 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3357
3358         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3359         
3360         * cpu-x86.md: Same.
3361
3362         * mini-x86.c (mono_arch_output_basic_block): Same.
3363
3364         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3365         extract mask, max, min and sum of absolute differences.
3366
3367         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3368         method name.
3369
3370 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3371
3372         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3373         Renamed one test for consistency.
3374
3375 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3376
3377         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3378         fix to the code that deal with other blocks.
3379
3380 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3381
3382         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3383
3384 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3385
3386         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3387         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3388         able to process the source reg.
3389
3390 2008-10-16  Martin Baulig  <martin@ximian.com>
3391
3392         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3393
3394         * inssel.brg: Add `OP_HARD_NOP'.
3395
3396         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3397
3398         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3399         `OP_HARD_NOP' instruction when running inside the debugger.
3400
3401         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3402         `OP_HARD_NOP' instruction when running inside the debugger.
3403
3404 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3405
3406         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3407         now works. The issue with the regalloc tripping up no longer
3408         happens.
3409
3410         * simd-intrinsics.c (load_simd_vreg): Same.
3411
3412 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3413         
3414         * basic-simd.cs: Tests for new Vector8ui methods.
3415
3416 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3417
3418         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3419         only for type. This fixes crashes where MonoInst::klass is checked
3420         for ops of type != VTYPE or OBJ.
3421
3422         * simd-intrinsics.c (load_simd_vreg): Same.
3423
3424 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3425
3426         * mini-ops.h: Add ops for packed shuffle/max/avg and
3427         extract mask.
3428         
3429         * cpu-x86.md: Same.
3430
3431         * mini-x86.c (mono_arch_output_basic_block): Same.
3432
3433         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3434         extract mask.
3435
3436         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3437         to emit extract mask op.
3438
3439         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
3440         to emit word shuffles.
3441
3442 2008-10-15  Mark Probst  <mark.probst@gmail.com>
3443
3444         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
3445         the largest alignment needed by a variable, but at least
3446         sizeof(gpointer).
3447
3448 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3449
3450         * basic-simd.cs: Tests for the fixes in the last commit.
3451
3452 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3453
3454         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
3455         no longer handles STACK_PTR input.
3456
3457         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
3458
3459         * simd-intrinsics.c (load_simd_vreg): New function that works like 
3460         get_simd_vreg   but handles STACK_PTR input.
3461
3462         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
3463         as the input can be an arbitrary pointer.
3464
3465         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
3466         LDADDR local optimization directly otherwise use a store op.
3467
3468 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3469
3470         * basic-simd.cs: Tests for dup low and dup high.
3471
3472 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3473
3474         * mini-ops.h: Add dup low and dup high ops.
3475         
3476         * cpu-x86.md: Same.
3477
3478         * mini-x86.c (mono_arch_output_basic_block): Same.
3479
3480         * simd-intrinsics.c (vector4f_intrinsics): Same.
3481
3482 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3483
3484         * basic-simd.cs: Tests for recently added functionality.
3485
3486 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3487
3488         * mini-ops.h: Add remaining sse1 fp ops.
3489         
3490         * cpu-x86.md: Add remaining sse1 fp ops.
3491
3492         * mini-x86.c (mono_arch_output_basic_block): Same.
3493
3494         * mini.h: Add enum for simd FP compare conditions.
3495
3496         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
3497
3498         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
3499         so the backed can generate the appropriate op.
3500
3501 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3502         This patch squeese one more byte from the SimdIntrinsc struct.
3503
3504         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
3505         a a shift amount intead of simply or'ing it.
3506
3507         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
3508
3509         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
3510         byte so we can have an aditional flags field without increasing struct size.
3511
3512         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
3513         against the simd_supported_versions bitmask.
3514
3515         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
3516
3517 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
3518
3519         * mini.c: remove rawbuffer code (the only use here is unsafe because
3520         it takes locks during signal handling and the kernel now provides much
3521         better info in proc/pid/smaps these days).
3522
3523 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3524
3525         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
3526         OP_X86_PUSH_OBJ. Fixes #434620.
3527
3528         * objects.cs: Add a test.
3529         
3530 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
3531
3532         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
3533         that the packuswb/packusdw don't work with unsigned numbers for what
3534         would be negative numbers in signed format.
3535
3536         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
3537         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
3538
3539         * mini-ops.h: Add doubleword forms of many ops and packing ones.
3540
3541         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
3542
3543         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
3544
3545         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
3546
3547         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
3548         add more ops.
3549
3550         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
3551         version as the enum in mini.h.
3552
3553         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
3554         for sse3 ops, check the simd_version field if present. This way the code
3555         works with all versions of sse.
3556
3557 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3558
3559         * simd-intrinsics.c: Fixed intrinsic name typo.
3560
3561         * mini.h: Added missing simd exported function.
3562
3563         * basic-simd.cs: Added tests for Vector4ui.
3564         Fixed broken test for Vector16b.
3565
3566 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3567
3568         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
3569         the max length to 64.
3570
3571 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3572
3573         * method-to-ir.c: Only do the fast virtual generic method call for
3574         non-wrapper methods.
3575
3576         * mini.h, mini-trampolines.c: The new generic virtual remoting
3577         trampoline handles virtual method calls via the vtable (as done by
3578         the fast virtual generic method calls) to remoting proxies.
3579
3580         * mini.c (mono_jit_create_remoting_trampoline): For generic
3581         methods reate a generic virtual remoting trampoline.
3582
3583         * mini-amd64.h: Enable fast virtual generic method calls again.
3584
3585 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3586
3587         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
3588         restore registers when doing tail calls.
3589
3590 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3591
3592         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
3593         Vector4ui.
3594
3595 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3596
3597         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
3598
3599 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3600
3601         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
3602
3603 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3604
3605         * basic-simd.cs: Retrofit for API changes.
3606
3607 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3608
3609         * mini-ppc.c: Handle integer stack arguments for tail calls.
3610
3611 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3612
3613         * optflags-def.h: Removed sse3 optimization.
3614
3615         * driver.c: Same.
3616
3617         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
3618         sse3.
3619
3620         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
3621
3622         * mini.h: Added enumeration with simd versions.
3623
3624         * simd-intrinsics.c (emit_intrinsics): Use the new static var
3625         for detecting SSE3.
3626
3627         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
3628
3629         * mini.c (mini_init): Call mono_simd_intrinsics_init.
3630
3631 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3632
3633         * basic-simd.cs: Added tests for Vector8u and Vector16u.
3634
3635         * basic-simd.cs: Fixed test naming.
3636
3637 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3638
3639         * mini-ops.h: Added ops for packed and saturated math, shifts
3640         and packing/unpacking.
3641
3642         * cpu-x86.md: Added descriptors for the above ops.
3643
3644         * mini-x86.c: Added code to emmit the above ops.
3645
3646         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
3647
3648 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * aot-compiler.c (compile_method): Enable AOT for generic code.
3651
3652         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
3653
3654 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
3655
3656         * mini.c: add a workaround for a common screwup that ends up blamed
3657         to mono (other processes blocking signal delivery).
3658
3659 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3660
3661         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
3662         in the LDFLD/STFLD opcodes. Fixes #432673.
3663
3664         * iltests.il.in: Add a new test.
3665
3666 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
3667
3668         * mini-arm.c: attach the thread in unmanaged->managed transitions
3669         using delegates (bug #433148).
3670
3671 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3672
3673        * basic-simd.cs: Use new ShuffleSel constants.
3674
3675 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3676
3677         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
3678
3679         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
3680         only disable simd intrinsics if no sse2 is detected.
3681
3682         * optflags-def.h: Added sse3.
3683
3684         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
3685         is disabled.
3686
3687 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
3690         when adding delegate-invoke wrappers.
3691
3692 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3693
3694         * Makefile.am: Reenable the simd tests.
3695
3696 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3697
3698         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
3699           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
3700           other vreg is allocated to that hreg.
3701
3702         Contributed under MIT/X11 license.
3703
3704 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
3707         yet checked in.
3708
3709 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * basic-simd.cs: New test suite for SIMD intrinsics.
3712
3713         * Makefile.am: Added new tests.
3714
3715 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3716
3717         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
3718
3719         * mini-ops.h: Same.
3720
3721         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
3722
3723         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
3724         using SSE2 aware opcodes.
3725
3726         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
3727         is enabled, this code path is only reachable if conversion ops are emmited after
3728         mono_method_to_ir.
3729
3730         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
3731
3732         This optimization saves 6 bytes per conversion against the old version.
3733
3734 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3735
3736         * aot-compiler.c (compile_method): Don't skip methods referencing 
3737         generic methods without a corresponding entry in token_info_hash, since
3738         encode_method_ref () can handle all generic methods now.
3739
3740         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
3741         generic context is set.
3742         
3743         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
3744         generic sharing of LDTOKEN.
3745
3746 2008-10-06  Mark Probst  <mark.probst@gmail.com>
3747
3748         * mini-amd64.h: Temporarily disabled fast virtual generic method
3749         calls because it breaks the System.Runtime.Remoting tests.
3750
3751 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3752
3753         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
3754
3755         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
3756         so inlining actually works.
3757         (check_inline_caller_method_name_limit): Ditto.
3758
3759 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
3760
3761         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
3762         64 bit safety (from Olaf Hering and Andreas Färber).
3763
3764 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3765         
3766         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
3767         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
3768         unused virtual call support code.
3769
3770         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
3771         
3772         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
3773         which can't use aot trampolines.
3774         (decode_patch): Don't create aot trampolines for methods which can't use
3775         them.
3776
3777         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
3778         use aot trampolines.
3779
3780         * mini.h: Bump AOT image format version.
3781         
3782 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
3783
3784         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
3785         to save_token_info () since cmethod is inflated for constrained calls.
3786
3787         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
3788
3789 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3790
3791         * Makefile.am: Add build rules for ppc64.
3792         This avoids the build failing at pedump with unresolved symbols
3793         due to lack of arch_sources. Instead it will now fail earlier
3794         due to lack of cpu-ppc64.md.
3795
3796         Contributed under MIT/X11 license.
3797
3798 2008-10-04  Mark Probst  <mark.probst@gmail.com>
3799
3800         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
3801         tail calls.
3802
3803         * iltests.il.in: Add test case for tail call with many arguments.
3804
3805 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3806
3807         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
3808         to the fast virtual generic method code until the aot case is fixed.
3809
3810 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3811
3812         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
3813
3814 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3815
3816         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
3817         thunks.
3818
3819 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3820         
3821         * simd-intrinsics.c: Forgot to add this one.
3822
3823         * mini-codegen.c: Fix macro in case SIMD is not supported.
3824
3825 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3826         
3827         This patch land initial JIT support for simd intrinsics.
3828
3829         * mini-x86.h: Added new define to make --enable_minimal work on x86.
3830
3831         * Makefile.am: Added simd-intrinsics.c
3832
3833         * simd-intrinsics.c: New file with simd instrinsic related
3834         code.
3835
3836         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
3837
3838         * cpu-x86.md: Add simd related instructions.
3839
3840         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
3841
3842         * driver.c: Added two new --regression variants.
3843
3844         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
3845
3846         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
3847
3848         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
3849         extract some complicated logic to helper functions.
3850
3851         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
3852
3853         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
3854
3855         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
3856         the specialized simplification pass.
3857
3858         * method-to-ir.c (mono_spill_global_vars): Use new macro.
3859
3860         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
3861
3862         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
3863         table.
3864
3865         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
3866         if MONO_ARCH_NEED_SIMD_BANK is defined.
3867
3868         * mini-ops.h: Added the new simd ops.
3869
3870         * mini-x86.c: Added mono_arch_xregname.
3871
3872         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
3873
3874         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
3875
3876         * mini-x86.h: Define simd related MONO_ARCH macros.
3877
3878         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
3879
3880         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
3881
3882         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
3883         MONO_CLASS_IS_SIMD to deal with simd related IR.
3884
3885         * mini.h (MonoInst): Added spill_var to the backend union.
3886
3887         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
3888
3889         * mini.h: Added forward declarations of the new simd fuctions.
3890
3891         * optflags-def.h: Added new optimization names SIMD.
3892
3893         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
3894
3895         * regalloc.h: Added support for working with 3 register banks.
3896
3897         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
3898
3899         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
3900
3901 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
3902
3903         * mini-exceptions.c: remove 64 bit related ifdef clutter.
3904
3905 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3906
3907         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
3908         instead of one on 64 bit systems.
3909
3910         * method-to-ir.c: Remove unused includes.
3911
3912 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
3913
3914         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
3915         cfg->used_int_regs, since the two are different on arm.
3916
3917 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3918
3919         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
3920         mono_method_get_vtable_index() to get the vtable index.
3921
3922 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3923
3924         * method-to-ir.c (mono_method_to_ir2): Don't create native
3925         wrappers for array methods, because they're never called (and if
3926         they were called they wouldn't work).
3927
3928 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3929
3930         * method-to-ir.c (mono_method_to_ir2): Array methods are
3931         special-cased and must not be invoked indirectly via the (M)RGCTX
3932         when generic sharing is turned on.  Fixes #431413.
3933
3934 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3935
3936         * method-to-ir.c: When generic sharing is active, call
3937         non-interface virtual generic methods via the standard trampoline.
3938
3939         * mini-trampolines.c: Handle virtual generic shared methods.
3940
3941         * mini.h, mini-x86.c, mini-x86.h: New argument for
3942         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
3943         method thunks and which is the trampoline to call if the lookup
3944         fails.  Enable the virtual generic method thunk for x86.
3945
3946         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
3947         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
3948         argument but assert that it's NULL, because these archs don't yet
3949         implement the virtual generic method thunk.  Changes in the IMT
3950         thunk data structures.
3951
3952 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3953
3954         * aot-compiler.c (emit_globals): Avoid invalid characters in
3955         the static linking symbol.
3956
3957         * objects.cs: Add a test for the range check optimization. Fix warnings.
3958
3959         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
3960         optimization from the current JIT.
3961
3962         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
3963         later in decompose_array_access_opts () to allow more optimizations.
3964
3965         * method-to-ir.c (mono_handle_soft_float): Rename this to 
3966         mono_decompose_soft_float () for consistency.
3967
3968         * mini-ops.h: Fix arguments of OP_STRLEN.
3969
3970         * method-to-ir.c (save_cast_details): Extract the cast details saving code
3971         into a separate function.
3972         (reset_cast_details): Ditto.
3973         (handle_unbox): Save cast details. Fixes #431254.
3974
3975         * method-to-ir.c: Remove some obsolete FIXMEs.
3976
3977 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3978
3979         * ir-emit.h (alloc_dreg): Write a warning before crashing.
3980
3981 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3982
3983         * mini-codegen.c: More work on macros to make them
3984         ready for multiple regbanks.
3985
3986 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3987
3988         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
3989
3990         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
3991
3992 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3993
3994         * mini-codegen.c (mono_spillvar_offset): Proper support for
3995         multiple regbanks.
3996
3997 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
3998
3999         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4000         the stack overflow changes.
4001
4002 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4003
4004         * mini-codegen.c: Make all bank macros depend on reg_bank.
4005
4006         * mini-codegen.c (mono_local_regalloc): Make free mask
4007         initialization regbank aware.
4008
4009 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4010
4011         * mini-codegen.c (mono_local_regalloc): Extract callee
4012         mask selection to a function and make it regbank aware.
4013
4014 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4015
4016         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4017         code to deal with many regbanks.
4018
4019 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4020
4021         * mini-codegen.c: More fp->regbank changes.
4022
4023 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4024
4025         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4026         of a hardcoded constant.
4027
4028 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4029
4030         * method-to-ir.c (type_from_stack_type): Fix typo.
4031
4032 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4033
4034         * mini-ia64.c (emit_move_return_value): Convert float return values to
4035         double.
4036
4037         * objects.cs: Add a new test.
4038         
4039         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4040         VARARG methods to fix an assert later.
4041
4042         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4043         end so it at least compiles.
4044
4045 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4048
4049 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4050
4051         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4052         optimization to a new function (emit_optimized_ldloca_ir) and enable
4053         it for both ldloca and ldloca_s.
4054
4055 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4056
4057         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4058         gshared CASTCLASS code.
4059
4060         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4061         amd64, where the libc stack unwinder encounters stack frames referring to
4062         native code in unmapped memory.
4063
4064         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4065         sharing.
4066
4067         * generics.cs: Add new test.
4068
4069 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4070
4071         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4072         add a check that one of the ARM_FPU_ constants is defined.
4073
4074         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4075         
4076         * mini-exceptions.c: Fix build on non-altstack platforms.
4077
4078         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4079         sharing of vtypes.
4080
4081         * ir-emit.h: Add a comment to NEW_PCONST.
4082
4083         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4084
4085         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4086
4087         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4088         after the changes to MonoJitDomainInfo.
4089
4090 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4091
4092         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4093
4094 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4095
4096         * mini-ppc.c: Compiler warning fixes.
4097
4098 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4099
4100         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4101         for pinvokes.
4102
4103 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4104
4105         * exceptions-ppc.c, mini-ppc.h: Compile
4106         mono_arch_handle_altstack_exception() on Darwin, too.
4107
4108 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4109
4110         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4111         work on archs which don't have generic sharing implemented, only
4112         without the vtable_arg.
4113
4114 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4115
4116         * mini.c: Added comment explaining why delegate ctor icall
4117         wrappers are compiled.
4118
4119 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4120
4121         * mini.c: Don't produce trampolines to delegate ctor icall
4122         wrappers but compile them upfront.
4123
4124 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4125
4126         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4127         runtime-set function when going back to managed code. Currently this
4128         is used to set back the protection on the soft ovf pages and/or to
4129         throw the stack overflow exception that happened in unmanaged code.
4130
4131 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4132
4133         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4134         runtime-set function when going back to managed code. Currently this
4135         is used to set back the protection on the soft ovf pages and/or to
4136         throw the stack overflow exception that happened in unmanaged code.
4137
4138 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4139
4140         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4141         the support code for restoring stack protection after stack overflows
4142         that happen in unmanaged code. Don't set the exec permission on the
4143         soft overflow area.
4144
4145 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4146
4147         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4148         delegate->method_ptr is set. Fixes #428054.
4149
4150 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4151
4152         * tests.cs: Rename to ratests.cs.
4153
4154         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4155         emit_get_rgctx_... functions.
4156
4157 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4158
4159         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4160
4161 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4162
4163         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4164         before asserting that method is sharable.
4165
4166 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4167
4168         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4169         whether method needs a static RGCTX wrapper used instead of
4170         complex conditions.
4171
4172         * generic-sharing.c, mini.h: A few functions moved to
4173         metadata/generic-sharing.c.
4174
4175 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4176
4177         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4178         Generic code sharing for value types, which essentially means
4179         treating value type methods like static methods.  The RGCTX is
4180         passed in the same way.
4181
4182 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4183
4184         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4185         opcode when creating multi-dimensional arrays of open types.
4186
4187         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4188         open generic types.
4189
4190         * generics.cs: Add a test.
4191
4192         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4193
4194 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4195
4196         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4197
4198         * mini.c (mini_method_compile): Set it when running under the debugger. 
4199
4200         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4201         vreg optimization if the flag is set.
4202
4203         * driver.c (mono_main): Add --attach= option to pass options to
4204         the attach agent.
4205
4206         * mini.c (sigquit_signal_handler): Start the attach agent.
4207
4208         * ssapre.c: Disable this to save space since it is not yet ported to
4209         linear IR.
4210
4211         * regalloc2.c: Disable this to save space.
4212
4213         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4214
4215 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4216
4217         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4218         the -v option useful again.
4219
4220 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4221
4222         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4223         --break-at-bb.
4224
4225         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4226         arrays of arrays. Fixes #428406.
4227
4228         * method-to-ir.c (mini_emit_castclass): Ditto.
4229
4230         * objects.cs: Add new test.
4231         
4232 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4233
4234         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4235         was wrong at it choked against target_type_is_incompatible for byref types.
4236
4237 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4238
4239         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4240         places.
4241
4242 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4243
4244         * mini-exceptions.c: update a few more exceptions-related counters.
4245
4246 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4247
4248         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4249         new functions to allocate from persistent mempools.
4250
4251 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4252
4253         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4254         multiple register banks in the future.
4255
4256         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4257
4258 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4259
4260         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4261
4262         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4263
4264         * mini.h: Export type_to_eval_stack_type.
4265
4266         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4267         is only ins->klass of byref types.
4268
4269 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4270
4271         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4272         (mini_emit_memcpy2): Ditto.
4273
4274         * mini-amd64.c: Fix a warning.
4275
4276 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4277
4278         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4279         linking.
4280
4281 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4282
4283         * method-to-ir.c: Extract stloc micro-optimization to a
4284         function and apply it to all cases.
4285
4286 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4287
4288         * method-to-ir.c: Don't fail generic code sharing in cases we
4289         already support.
4290
4291 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4292
4293         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4294
4295 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4296
4297         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4298         implementation.
4299
4300 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4301
4302         * trace.c: make tracing more useful and correct, with per-thread
4303         id and indent info.
4304
4305 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4306
4307         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4308         doing a method call and the argument is an R4.
4309
4310 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4313         generic methods.
4314
4315 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4316
4317         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4318
4319 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4320
4321         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4322         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4323
4324 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * driver.c: Add a --agent argument (not supported yet) to load managed
4327         agent assemblies before loading the main assembly, similarly to how the
4328         Java VM handles agents.
4329
4330 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4331
4332         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4333         function to do stack layout of local variables.
4334
4335 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4336
4337         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4338         calculation.
4339
4340 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4341
4342         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4343         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4344         JIT if DISABLE_JIT is defined.
4345
4346         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4347         defined.
4348
4349 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4350
4351         * iltests.il.in: Disable the fconv test on PPC (the result is
4352         undefined according to ECMA).
4353
4354 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4355
4356         * iltests.il.in: Enable tail call tests for PPC.
4357
4358         * mini.h: Add variable for storing incoming valuetype argument
4359         addresses for tail calls.
4360
4361         * mini-ppc.c: Implement valuetype arguments and return values for
4362         tailcalls on Linux.
4363
4364 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4365
4366         * mini-ppc.c: Partially implement tail calls (struct arguments and
4367         return values not supported).
4368
4369         * method-to-ir.c: Enable tail calls on PPC.
4370
4371 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4372
4373         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4374         runtime-invoke wrappers to work around the problem of them getting
4375         assigned to a random class.
4376
4377         * aot-runtime.c (mono_aot_get_method): Ditto.
4378         
4379 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4382         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4383
4384 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4385
4386         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4387         until they're implemented properly.
4388
4389         * exceptions-ppc.c: Use arch-independent exception-handling code
4390         instead of custom one.
4391
4392         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4393         for Linear IR.
4394
4395         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4396
4397         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4398         applies when __powerpc__ is defined.
4399
4400 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4401
4402         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4403         methods to their code to avoid computing the full name of wrappers and
4404         doing a lookup in a string hash table.
4405
4406 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4409         we identify bblocks before method_to_ir () is ran.
4410
4411         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4412         Also avoid optimizing branches pointing to themselves.
4413
4414         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4415
4416 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4417
4418         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4419
4420 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4421
4422         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4423         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4424         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4425         'buf'.
4426
4427         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4428         jumped to the same entry in plt_jump_table.
4429
4430 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4431
4432         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4433         dynamic images.
4434
4435 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4436
4437         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4438         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4439         #421807.
4440
4441 2008-08-29  Geoff Norton  <gnorton@novell.com>
4442
4443         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
4444         segment, and doesn't properly handle .space as .text.  Fixes
4445         AOT Mach/ARM
4446
4447 2008-08-29  Geoff Norton  <gnorton@novell.com>
4448
4449         * mini.c: Disable the mach exception handler when running on 
4450         ARM
4451
4452 2008-08-29  Geoff Norton  <gnorton@novell.com>
4453
4454         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
4455         globals on Darwin/ARM
4456
4457 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4458
4459         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
4460         since too many things depend on it. Instead, call 
4461         mono_runtime_set_no_exec ().
4462         
4463         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
4464         the new JIT.
4465
4466         * aot-compiler.c: Add an 'asm-only' AOT option.
4467
4468         * mini.c: Avoid initializing the runtime when doing AOT compilation.
4469                 
4470         * aot-compiler.c (compile_method): Disable gshared support for now as it
4471         doesn't yet work.
4472
4473 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4474
4475         * mini-amd64.h : Fix a compiler warning.
4476
4477         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
4478           Changed to use a callback function to retrieve the unwind info.
4479           This avoids problems observed when code blocks were removed by
4480           unloading an app domain.
4481
4482         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
4483           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
4484           to work properly.
4485
4486         Contributed under MIT/X11 license.
4487
4488 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4489
4490         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
4491           case to keep the stack aligned to 8.
4492
4493         Contributed under MIT/X11 license.
4494
4495 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
4496
4497         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
4498         avoid repeated linear searches.
4499
4500 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4501
4502         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
4503         methods it can't handle.
4504         
4505         * aot-compiler.c (add_method): Avoid adding a method twice.
4506         (add_wrappers): Add runtime invoke wrappers for all methods.
4507
4508         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
4509         function to create an aot-compatible version of this trampoline.
4510
4511         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
4512
4513 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4514
4515         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
4516
4517         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
4518         with a generic sharing failure.
4519
4520         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
4521
4522         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
4523         CEE_RETHROW. Fixes #419634.
4524
4525         * mini.c (mono_method_to_ir): Ditto.
4526
4527         * exceptions.cs: Add a new test.
4528         
4529         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
4530         to mono_type_stack_size_internal () since some callers might not pass in
4531         an rgctx.
4532
4533         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
4534         instrument_prolog. Fixes #419878.
4535
4536         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
4537         doubles in soft float mode volatile.
4538
4539 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4540
4541         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
4542
4543         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
4544         to handle soft float correctly.
4545
4546         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
4547         the fast path.
4548
4549         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
4550
4551         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
4552         to sp, since the generics catch code requires it.
4553
4554         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
4555         copying.
4556
4557         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
4558         mono_arch_emit_imt_argument ().
4559
4560         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
4561
4562         * mini-arm.c tramp-arm.c: Generic sharing updates.
4563
4564 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4565
4566         * mini-arm.c: Fix the arm build.
4567
4568         * generic-sharing.c (mini_type_get_underlying_type): New helper function
4569         handling enums, generic instances and generic sharing.
4570         (mini_type_stack_size_full): Ditto.
4571
4572         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
4573         
4574         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
4575
4576         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
4577
4578         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
4579         trampolines.
4580
4581         * mini-arm.c: Various small generic sharing changes.
4582
4583         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
4584         this for x86.
4585         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
4586         custom code.
4587
4588         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
4589         helper function to return a generic class init trampoline.
4590
4591         * method-to-ir.c mini.c: Use it.
4592         
4593         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
4594         arch-specfic function to return a generic class init trampoline.
4595
4596         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
4597         the GENERIC_CLASS_INIT custom code.
4598
4599         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
4600         a fatal error, not a sharing failure.
4601
4602         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
4603         needed.
4604
4605         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
4606         trampoline argument from MONO_ARCH_VTABLE_REG.
4607
4608         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4609         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4610         argument, and pass the vtable in VTABLE_REG.
4611
4612         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4613         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4614         argument, and pass the vtable in VTABLE_REG.
4615         (mono_arch_create_trampoline_code_full): Remove some special casing for
4616         the rgctx fetch trampoline.
4617
4618         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
4619         Fixes #419273.
4620
4621         * iltests.il: Add a test for it.
4622
4623 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4624
4625         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
4626
4627         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
4628         no longer needed.
4629
4630         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
4631         use mono_jit_info_table_find () to avoid recursion.
4632         (mono_delegate_trampoline): Add a sync wrapper here.
4633
4634         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
4635         here.
4636
4637         * mini.c (mono_method_to_ir): Ditto.
4638         
4639         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
4640         add_sync_wrapper argument. Don't add a sync wrapper here.
4641         (mono_create_jump_trampoline): Don't add a sync wrapper here.
4642
4643         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
4644         
4645 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4646
4647         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
4648           of nonvolatile registers back from MonoContext to CONTEXT.
4649
4650         Contributed under MIT/X11 license.
4651
4652 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4653
4654         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
4655           arguments on Winx64 there are only 4 argument registers.  For this
4656           logic to work the last argument must be pulled from the stack.  
4657
4658         Contributed under MIT/X11 license.
4659
4660 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4661
4662         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4663
4664         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
4665         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
4666         encode/decode_method_ref ().
4667
4668         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
4669
4670         * aot-runtime.c (decode_patch): Ditto.  
4671
4672         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
4673         MONO_PATCH_INFO_METHOD.
4674
4675         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
4676         MonoGenericJitInfo.
4677
4678         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
4679         MonoGenericJitInfo.
4680
4681         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
4682
4683         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
4684         one from the caller.
4685
4686         * aot-runtime.c (decode_generic_inst): New function to decode and
4687         return a interned generic inst.
4688         (decode_klass_ref): Use it.
4689         (decode_method_ref): Ditto.
4690
4691         * aot-compiler.c (emit_exception_debug_info): Save 
4692         jinfo->has_generic_jit_info too.
4693
4694 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4695
4696         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
4697
4698         * iltests.il.in: Add a test for fconv_to_i.
4699
4700         * liveness.c: Disable the liveness2 pass for now to save space.
4701
4702         * regalloc2.c: Include mempool-internals.h to fix warnings.
4703
4704         * aot-compiler.c (encode_method_ref): Encode the context of generic
4705         instance methods.
4706
4707         * aot-runtime.c (decode_method_ref): Inflate generic methods using
4708         the context saved in the aot file.
4709
4710         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4711
4712         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4713
4714         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
4715         volatile so they won't be optimized away.
4716
4717 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4718
4719         * ssa.c:
4720         * ssa2.c:
4721         * mini.c:
4722         * regalloc2.c:
4723         * dominators.c: Remove duplicated functions that now are in
4724         mempool-internals.h.
4725
4726 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4727
4728         * aot-compiler.c: Fix warnings.
4729
4730         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
4731
4732         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
4733
4734         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
4735         as the patch type.
4736
4737         * mini.c (mono_resolve_patch_target): Ditto.
4738         
4739         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
4740         (encode_klass_ref): Add support for encoding VARs/MVARs.
4741
4742         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
4743
4744         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
4745         the handling of the got entries into a separate 'decode_got_entry' function.
4746         Add support for RGCTX_FETCH.
4747
4748         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
4749         clobbered by the trampoline code.
4750
4751         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
4752         not clobbered by the indirect calling code.
4753
4754 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4755
4756         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
4757         to fix the build.
4758
4759 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4760
4761         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
4762         signature using the compilation mempool otherwise we would leak it.
4763
4764 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4765
4766         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
4767         mono_emit_abs_call ().
4768
4769         * patch-info.h: Add GENERIC_CLASS_INIT.
4770
4771         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
4772
4773         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
4774         as their target as a near call.
4775
4776         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
4777         ABS handling code.
4778         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
4779
4780         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
4781         call to a runtime function described by a patch.
4782
4783         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
4784         mono_emit_abs_call, this has the advantage that the ABS handling code in
4785         mono_codegen () can handle them both, and can handle other stuff in the
4786         future without additional code.
4787
4788         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
4789         entry.
4790         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
4791         abs addresses.
4792
4793         * mini.h: Add missing bblock related prototypes.
4794
4795         * mini.h (MonoCompile): Remove unused reverse_inst_list and
4796         reverse_inst_list_len fields.
4797
4798         * mini.c: Refactor this file a bit by moving branch optimizations to 
4799         branch-opts.c.
4800
4801         * method-to-ir.c: Merge generic sharing changes missed earlier.
4802
4803         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
4804
4805         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
4806         shared patches. Process METHODCONST as a shared patch.
4807
4808         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
4809         as it crashes on the 2.0 mscorlib.
4810
4811         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
4812         to cause crashes.
4813         
4814         * aot-compiler.c: Use is_plt_patch () in a few additional places.
4815         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
4816         by IMT.
4817
4818         * aot-compiler.c: Reorganize the got handling code to be a bit more
4819         understandable.
4820
4821 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
4822
4823         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
4824         mono_patch_info_equals/hash, and use it to massively simplify
4825         get_plt_index ().
4826
4827         * mini.c (mono_patch_info_hash): Simplify this and add support for
4828         more patch types.
4829
4830         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
4831
4832         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
4833         handling code, since an offset is not enough to identify a trampoline.
4834
4835         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
4836
4837 2008-08-17  Mark Probst  <mark.probst@gmail.com>
4838
4839         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
4840
4841         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
4842
4843         * mini-ops.h: Argument and result types for OVF_CARRY ops.
4844
4845         * decompose.c: PPC decompositions for various ops.
4846
4847         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
4848
4849 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
4850
4851         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
4852         call the generic trampoline code using a call, instead of a jump, to
4853         remove some special casing from the generic trampoline code.
4854
4855         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
4856         (mono_codegen): Ditto.
4857
4858         * aot-compiler.c aot-runtime.c: Ditto.
4859
4860         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
4861
4862         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
4863         helper function to find the offset corresponding to a lazy fetch trampoline.
4864
4865         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
4866         when doing generic sharing.
4867
4868         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
4869         places.
4870         
4871         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
4872         mini-trampolines.c to be with the other trampoline creation functions.
4873
4874         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
4875         as it is equal to method->signature in most cases, add a 
4876         mono_emit_method_call_full variant which takes a signature and an imt
4877         argument as well.
4878
4879 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
4882         to this function, since it could be computed easily from the method 
4883         argument.
4884         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
4885         more.
4886
4887         * method-to-ir.c mini.c: Remove references to 
4888         compile_generic_method_wo_context.
4889
4890         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
4891         generic method calls.
4892         
4893         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
4894         dimensional non-szarrays.
4895
4896         * mini.c (mini_init): Register mono_array_new_1.
4897
4898         * jit-icalls.c (mono_array_new_1): New jit icall.
4899
4900         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
4901         pointing to the method.
4902
4903         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
4904         method addresses belonging to METHOD_JUMP patches in the 
4905         jump_target_got_slot_hash.
4906         (mono_aot_load_method): Ditto.
4907
4908         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
4909         METHOD_JUMP patches.
4910
4911         * mini.c (mini_create_jit_domain_info): New helper function which 
4912         initializes/frees domain->runtime_info.
4913         (mini_free_jit_domain_info): Ditto.
4914         (mini_init): Install the domain hook functions with the runtime.
4915
4916         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
4917         information maintained by the JIT.
4918
4919         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
4920         insertion into jump_table_hash into mono_codegen (), also implement proper
4921         locking.
4922
4923         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
4924         tail calls, it is already done by the aot code.
4925         
4926         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
4927         mechanism on amd64.
4928
4929         * iltests.il.in: Make the jmp test a bit more complex.
4930
4931         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
4932         generic instances which doesn't have a token.
4933
4934         * aot-runtime.c (decode_method_ref): Ditto.
4935         
4936         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
4937         can handle this case now.
4938         (handle_box): Ditto.
4939
4940 2008-08-15  Geoff Norton  <gnorton@novell.com>
4941
4942         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
4943         debugging check.
4944
4945 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4946
4947         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
4948         calling generic methods.
4949
4950         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
4951
4952         * aot-runtime.c (decode_patch_info): Ditto.
4953
4954         * mini.c (mono_resolve_patch_target): Ditto.
4955         
4956         * patch-info.h: Add METHOD_RGCTX.
4957
4958         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
4959
4960 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
4963         arguments in registers.
4964
4965         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
4966         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
4967
4968         * mini.c (mini_method_compile): Abort aot compilation for generic
4969         methods if generic sharing is disabled.
4970         
4971         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
4972         an mrgctx.
4973
4974         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
4975         requiring an mrgctx.
4976
4977         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
4978         store instructions when converting a vcall to a normal call.
4979
4980         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
4981         mono_arch_find_jit_info.
4982
4983 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
4984
4985         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
4986         avoid calling mono_method_full_name () for every method even if the
4987         env var is not set.
4988         (check_inline_caller_method_name_limit): Ditto.
4989
4990 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4991
4992         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
4993         assemblies in one run.
4994
4995         * aot-compiler.c (mono_compile_assembly): Only print out a count of
4996         skipped methods if it is not 0.
4997
4998         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
4999
5000 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5001
5002         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5003           MONO_ARCH_HAVE_UNWIND_TABLE.
5004
5005         Contributed under MIT/X11 license.
5006
5007 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5008
5009         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5010           from default optimizaton list on Winx64.
5011
5012         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5013
5014         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5015           the LMF from the MonoJitTlsData structure.
5016
5017         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5018
5019         Contributed under MIT/X11 license.
5020
5021 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5022
5023         * mini.c (sigsegv_signal_handler): Fix the build.
5024
5025         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5026         assembly->aot_module.
5027
5028         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5029         hash table. This simplifies and speeds up a lot of code, and fixes support
5030         for .netmodules.
5031
5032         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5033         with the runtime.
5034
5035         * mini-exceptions.c: Ditto.
5036         
5037         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5038         'native_offset' argument, since these are computed in the 
5039         mono_find_jit_info () function.
5040
5041         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5042         is used by exceptions-ppc.c.
5043
5044         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5045         mono_arch_find_jit_info ().
5046         
5047         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5048         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5049         generic code in mini-exceptions.c.
5050
5051 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5052
5053         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5054
5055         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5056         
5057         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5058         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5059         called while holding the loader lock. Fixes #415608.
5060         (mono_aot_get_method_from_token_inner): Ditto.
5061
5062 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5063
5064         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5065         to reduce differences between this and the generic implementation in
5066         mini-exceptions.c.
5067         (ves_icall_get_frame_info): Ditto.
5068
5069         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5070
5071         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5072         longer neccesarry.
5073
5074         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5075         mono_arch_get_call_filter () and make it non-static, for consistency with the
5076         other architectures.
5077
5078 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5079
5080         * mini.c:
5081         * local-propagation.c:
5082         * mini-x86.c: Correct the name of arch defines.
5083
5084 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5085
5086         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5087         NO_EMULATE_LONG_SHIFT_OPS define.
5088
5089 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5090
5091         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5092         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5093
5094         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5095         MACH fixes. Merged from the 2.0 branch.
5096
5097         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5098
5099         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5100         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5101
5102         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5103
5104         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5105         mono_marshal_get_native_wrapper () signature changes.
5106
5107 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5108
5109         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5110         conversion bug under arm.
5111
5112 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5113
5114         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5115
5116         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5117         with overflow checking.
5118
5119 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5120
5121         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5122         to the genmdesc.pl file
5123
5124 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5127         arg_array in the soft-float versions of the LOAD/STORE macros.
5128
5129         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5130         implementation.
5131
5132         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5133
5134 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5135
5136         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5137         a float HFA. Fixes #413621.
5138
5139 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5140
5141         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5142         frame_size to args_size. Fixes build.
5143
5144 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5145
5146         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5147         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5148
5149         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5150         the stack are not unaligned. Fixes #413247.
5151         
5152 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5153
5154         * mini.c: update jitted methods performance counters.
5155
5156 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5157
5158         * mini-exceptions.c: increase the exceptions thrown performance
5159         counter in mono_handle_exception ().
5160
5161 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5164         can work with netmodules.
5165
5166 2008-07-28  Geoff Norton  <gnorton@novell.com>
5167
5168         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5169         regression tests.
5170
5171 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5174         correct place.
5175
5176 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5177
5178         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5179           The float param registers and other param registers must be the 
5180           same index on Windows x64.
5181
5182         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5183           ArgValuetypeAddrInIReg argument case.  Setting the argument
5184           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5185
5186         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5187           variable computed above as the copy length for arguments of storage
5188           type ArgValuetypeAddrInIReg.
5189
5190         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5191           ArgValuetypeAddrInIReg argument case.  This case will rely on
5192           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5193
5194         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5195           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5196           jump and tail call instructoins as they do not follow the typical call behavior.
5197
5198         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5199           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5200           local variable and pass the local variable by reference to the called method.
5201
5202         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5203           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5204           of a struct is passed in a register it must be saved with the other
5205           volatile argument on the stack.
5206
5207         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5208           frame pointer the stack adjustment value must be saved to the unwind 
5209           info structure.
5210
5211         Contributed under MIT/X11 license.
5212
5213 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5214
5215         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5216         which got lost in the merge.
5217
5218 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5221         build.
5222
5223         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5224         
5225         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5226         icalls, since they won't be patched.
5227
5228         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5229         different code sequence when running under valgrind to prevent some valgrind
5230         errors.
5231
5232         * iltests.il.in: Add new regression test.
5233
5234         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5235         end with a throw.
5236
5237         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5238         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5239
5240         * iltests.il.in: Add new test.
5241
5242         * aot-compiler.c: Fix some warnings.
5243
5244         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5245         Fixes #412494.
5246
5247 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5250         (mini_usage_jitdeveloper): Add a missing --wapi option.
5251
5252 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5253
5254         * mini-codegen.c: Simplify the is_fp macros.
5255         (free_up_ireg): Remove, use free_up_reg instead.
5256         (free_up_reg): Fix the fp case.
5257
5258 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5261         lowered earlier.
5262
5263         * exceptions-x86.c: Merge some changes which seemed to have got lost
5264         in the linear-ir merge.
5265
5266         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5267
5268         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5269         long vreg volatile even if the variable was already created.
5270
5271         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5272         volatile variables.
5273
5274 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5275
5276         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5277
5278         * mini.c (mono_jit_compile_method_inner): Add support for 
5279         MONO_EXCEPTION_BAD_IMAGE.
5280
5281         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5282         mini_method_get_context () returns NULL. Fixes #356531.
5283
5284         * mini.c (mono_method_to_ir): Ditto.
5285         
5286         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5287         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5288
5289 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5292         in the LDFTN implementation.
5293
5294 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5295
5296         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5297         code, patch calls to icalls, too, even if they're not in the
5298         shared generic code hash.  Fixes #411962.
5299
5300 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5301
5302         * cpu-x86.md: Increase the length of the fcall opcodes.
5303
5304         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5305         calls returning floats.
5306
5307         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5308         on NEWARR.
5309         
5310         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5311         missed earlier.
5312
5313         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5314         into the domain->method_code_hash.
5315
5316         * aot-compiler.c: Fix win32 build.
5317
5318         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5319         
5320         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5321         gshared NEWARR implementation.
5322
5323         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5324
5325         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5326         can be used outside of method_to_ir.
5327
5328         * mini.h (MonoCompile): Add arg_types field.
5329
5330         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5331         
5332         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5333         the values of the local arg_array and param_types array.
5334
5335 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5336
5337         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5338         got accesses might only get generated later when NEWOBJ is decomposed.
5339         
5340         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5341         looking up the native code of the target method when a delegate is called
5342         for the first time.
5343
5344         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5345         optimization.
5346
5347         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5348
5349         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5350         AOT work on platforms without a working dlsym implementation.
5351
5352         * mini.h: Bump AOT image format version.
5353         
5354 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5355
5356         * mini-exceptions.c: Free a MonoType with
5357         mono_metadata_free_type() instead of g_free().
5358
5359         * aot-runtime.c: Free a MonoType.
5360
5361 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5364         optimization.
5365
5366         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5367         fp stack on x86.
5368
5369 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5370         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5371         profiler hook.
5372
5373 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5374
5375         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5376         NEWOBJ calls on valuetypes.
5377
5378         * iltests.il.in: Add new test.
5379
5380         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5381
5382 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5383
5384         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5385         is no longer needed.
5386
5387         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5388         non register sized integer arguments.
5389         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5390         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5391         emit_memcpy2 ().
5392
5393         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5394         CEE_MONO_RETOBJ.
5395         
5396         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5397         two a binop with different sized arguments is emitted.
5398
5399         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5400         instruction in the ins==NULL case.
5401
5402 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5403
5404         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5405
5406         * mini-x86.c: Fix osx build.
5407
5408         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5409         opcodes as well.
5410
5411         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5412         instruction for non int sized variables.
5413
5414         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5415         implementation.
5416
5417 2008-07-23  Robert Jordan  <robertj@gmx.net>
5418
5419         * method-to-ir.c: Fix MSVC build.
5420
5421 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5422
5423         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5424         a non int sized type, widen it to an int since newer versions of gcc seem to
5425         generate code which needs this.
5426
5427         * ssa2.c abcremoval2.c: Fix warnings.
5428
5429         * *: Merge the Linear IR branch.
5430
5431         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5432         the ChangeLog file there describes all the changes done over the years. 
5433         Further documentation can be found at www.mono-project.com/Linear_IL.
5434
5435 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5436
5437         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5438           The float param registers and other param registers must be the 
5439           same index on Windows x64.
5440
5441         Contributed under MIT/X11 license.
5442
5443 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
5444
5445         * mini.c: Make the previous fix GC safe.
5446
5447 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
5448
5449         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
5450
5451 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5452
5453         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
5454           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
5455           ArgValuetypeAddrInIReg instead.
5456
5457         Contributed under MIT/X11 license.
5458
5459 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
5460
5461         * mini-codegen.c (get_register_spilling): Fix a warning.
5462
5463 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
5464
5465         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
5466         for types which the initialization fails. Raises the provided exception
5467         at the right stop after cleanup.
5468
5469 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
5470
5471         * aot-compiler.c: Free most of the memory allocated during compilation.
5472
5473         * mini.c (mini_parse_debug_options): Fix a leak.
5474         
5475         * mini.c (mini_method_compile): Don't add the method to the jit info tables
5476         during aot compilation.
5477
5478 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
5479
5480         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
5481         it has too much register pressure.
5482
5483 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5484
5485         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
5486
5487 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5488
5489         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5490         on x86.
5491
5492         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5493         on amd64 similar to the way it is done on arm.
5494
5495         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5496
5497         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
5498         consistency, normalize error messages, avoid loading aot-only modules in
5499         normal mode.
5500
5501         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
5502         for consistency.
5503
5504         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
5505
5506 2008-07-11  Martin Baulig  <martin@ximian.com>
5507
5508         * debug-debugger.h
5509         (MonoDebuggerInfo): Add `interruption_request'.
5510
5511 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5512
5513         * aot-compiler.c (emit_plt): Remove some dead code.
5514
5515         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
5516
5517         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
5518         return the plt info offset belonging to a given plt entry.
5519
5520         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
5521         mono_aot_get_plt_info_offset.
5522         
5523         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
5524         similar to the amd64 code by makeing jumps through a separate jump table 
5525         instead of embedding the jump addresses into the code.
5526
5527 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
5528
5529         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
5530         method.
5531
5532 2008-07-10  Martin Baulig  <martin@ximian.com>
5533
5534         * mini.c (mini_method_compile): Disable generics sharing when
5535         running in the debugger.
5536
5537 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5538
5539         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
5540
5541         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
5542         the local register allocator from running out of registers on x86 when 
5543         using aot.
5544
5545 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
5546
5547         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
5548         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
5549         C4146.
5550
5551         Contributed under MIT/X11 license.
5552
5553 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5554
5555         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
5556         speed up the assembler.
5557
5558 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
5561         support.
5562
5563         * mini.c: Move the soft float handling macros a bit earlier, add 
5564         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
5565         place.
5566
5567         * mini.h: Add prototype for mono_arch_fixup_jinfo.
5568
5569         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
5570         read-only to help catch code allocation requests.
5571         
5572         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
5573         and turn it off when using --aot-only or when compiling with --aot=full.
5574
5575         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
5576         jump table for switches from the normal domain mempool, not the code
5577         manager.
5578
5579         * mini-trampolines.c (get_unbox_trampoline): New function to return an
5580         unbox trampoline which handles aot-only mode too.
5581
5582         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
5583         an AOTed unbox trampoline.
5584
5585         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
5586
5587 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5588
5589         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
5590         ""
5591
5592         Contributed under MIT/X11 license.
5593
5594 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5595
5596         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
5597           the unwind information for the method at the end of the allocated block.
5598           
5599         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
5600           MonoCompileArch to hold the unwind info for SEH on Winx64
5601         
5602         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
5603           frame pointer info for the method being compiled.
5604           
5605         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
5606           the call to mono_exception_from_token.
5607           
5608         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
5609           storing the method prolog information in a format that the Winx64 SEH can understand.  This
5610           information is stored a the end of the method block because it is all 32-bit offset based.
5611
5612         Contributed under MIT/X11 license.
5613
5614 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5615
5616         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
5617
5618         * wapihandles.c: Fix warnings.
5619
5620         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
5621         mode.
5622
5623         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
5624         mono_jit_compile_method in aot-only mode since that calls the type 
5625         initializer.
5626         
5627         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
5628         get_delegate_invoke_impl in aot-only mode.
5629
5630         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
5631
5632 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
5635
5636         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
5637         is on by default.
5638
5639         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
5640
5641         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
5642         init trampoline from the AOT file as well.
5643
5644         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
5645         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
5646         code.
5647
5648         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
5649         mono_init.
5650
5651         * exceptions-amd64.c: Add _full variants for the remaining exception code
5652         creation functions as well, allow emission of relocatable code, remove
5653         caching since that is now done by the caller.
5654
5655         * mini-exceptions.c: Add _full variants for the remaining exception code
5656         creation functions as well, add aot-only support.
5657
5658         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
5659         if we can determine a proper token for them.
5660         (add_wrappers): Add a few more wrappers.
5661         (emit_method_code): Remove some dead code.
5662         (emit_trampolines): Emit exception code too.
5663
5664         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
5665
5666         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
5667         mono_array_new_va which avoids varargs.
5668
5669         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
5670
5671         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
5672         mono_arch_create_specific_trampoline () in all places.
5673
5674         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
5675         a bit so it can be used for other things as well.
5676         
5677         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
5678         on demand as well.
5679
5680         * exceptions-amd64.c: Rename the caching from the exception code creation
5681         functions, it is done by the caller instead.
5682         
5683         * exceptions-amd64.c: Change the signature of the exception code creation 
5684         functions to allow the creation of relocatable code later.
5685
5686         * mini-exceptions.c: Add a set of functions to query the various 
5687         runtime-generated exception functions.
5688
5689         * mini.c mini-exceptions.c: Use the newly added functions instead of the
5690         mono_arch_.. () functions.
5691         
5692 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5693
5694         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
5695
5696         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
5697
5698         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
5699         (mini_get_vtable_trampoline): Ditto.
5700
5701         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
5702         code in the AOT case by returning the code size and a list of relocations to
5703         the caller.
5704
5705         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
5706
5707 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5708
5709         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
5710           clean the stack.
5711
5712         Contributed under MIT/X11 license.
5713
5714 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5715
5716         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
5717         so the buffer size can be computed correctly. Fixes #404735.
5718
5719         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
5720         normally as cfg->debug_info is already freed.
5721
5722 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5723
5724         * mini-amd64.c: For calls returning vtypes in registers, don't store
5725         the return address on the stack, instead allocate a separate local for
5726         it. Fixes #404729.
5727
5728 2008-07-05  Mark Probst  <mark.probst@gmail.com>
5729
5730         * mini-trampolines.c, mini.h: Add an argument to
5731         mono_create_jit_trampoline_in_domain() for turning off the adding
5732         of the sync wrapper.
5733
5734         * mini.c: Use the JIT trampoline without sync instead of
5735         ldftn_nosync in static RGCTX invoke wrappers so that the call can
5736         be patched.
5737
5738 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5739
5740         * driver.c: Turn on GSHARED optimization by default.
5741
5742 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
5743
5744         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
5745         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
5746
5747         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
5748         create a variant of the generic trampoline code callable from AOTed trampolines.
5749
5750         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
5751         trampoline code callable from AOTed trampolines.
5752
5753         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
5754
5755 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5756
5757         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
5758         pass-through manner.
5759
5760         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
5761         and don't fail sharing for them anymore.
5762
5763         * mini-exceptions.c: Handle exceptions in shared generic methods.
5764
5765         * generic-sharing.c: When checking the context of a generic
5766         method, also check its class's context.  Don't treat wrappers as
5767         sharable.
5768
5769         * mini-trampolines.c: Some code factored out to
5770         metadata/generic-sharing.c.  Handle the MRGCTX case.
5771
5772         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
5773         we must deal with the method being of another instantiation of the
5774         class.  Add static rgctx invoke wrappers to generic methods.
5775
5776 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5777
5778         * mini.c: Provide all jit infos of generic shared methods with a
5779         generic jit info.
5780
5781         * mini-exceptions.c: Handle the new situation that a generic info
5782         might be available, but not info about the this/vtable/mrgctx
5783         variable.
5784
5785 2008-07-03  Mark Probst  <mark.probst@gmail.com>
5786
5787         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
5788         generic methods.
5789
5790 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * dominators.c (check_dominance_frontier): Fix a warning.
5793
5794         * mini.h: Add some missing prototypes.
5795
5796         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
5797
5798         * driver.c (mono_jit_init_version): Correct the comments since the first
5799         argument should be the name of the root domain, not a filename.
5800
5801         * aot-runtime.c (make_writable): Error out if this is called while running
5802         with --aot-only.
5803         (load_aot_module): Ditto.
5804
5805         * aot-compiler.c: Really fix the computation of method indexes.
5806
5807         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
5808         optimizations as this is no longer called frequently.
5809
5810         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
5811         method and the invoke impl code and pass it to the delegate trampoline instead of
5812         just the delegate class.
5813
5814 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
5815
5816         * aot-compiler.c: Fixup the computation of method indexes.
5817         (add_wrappers): Create the base methods of the runtime invoke wrappers using
5818         the method builder infrastructure.
5819
5820         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
5821         has no header.
5822
5823         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
5824         mode, load the method right away instead of creating a trampoline.
5825
5826         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
5827
5828         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
5829         some checks a bit.
5830
5831 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
5832
5833         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
5834         (mono_aot_load_method): Use method_index instead of method->token.
5835
5836         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
5837         can handle icalls etc. properly.
5838
5839         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5840
5841         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
5842
5843         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
5844         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
5845         JIT_ICALL_ADDR patch type.
5846
5847         * patch-info.h: Add JIT_ICALL_ADDR patch type.
5848
5849         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
5850         request flag.
5851         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
5852
5853         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
5854
5855 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * mini.c: Use domain->jit_code_hash_lock for controlling access to
5858         domain->jit_code_hash.
5859
5860 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
5861
5862         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
5863
5864 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
5865
5866         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
5867         get_this_arg_from_call, let it compute it when needed.
5868
5869         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
5870         gsctx from code only when needed.
5871
5872         * mini-trampolines.c (get_generic_context): Rename this to 
5873         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
5874         it can be called by the arch backends.
5875
5876         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
5877
5878 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
5879
5880         * driver.c (mono_main): Add experimental --aot-only command line option.
5881
5882         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
5883         set.
5884
5885 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
5886
5887         * driver.c (DllMain): Remove mono_module_handle.
5888
5889         Contributed under MIT/X11 license.
5890
5891 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
5892
5893         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
5894         for emitting methods which are not in the source assembly. Detect and report
5895         failure of assembling+linking.
5896         
5897         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
5898
5899         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
5900
5901 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
5902
5903         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
5904
5905 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5906
5907         * mini.h: Remove some obsolete prototypes.
5908
5909         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
5910
5911 2008-06-24  Mark Probst  <mark.probst@gmail.com>
5912
5913         * mini.c (get_object_generic_inst): Variable-sized arrays are not
5914         supported by Visual Studio, so use alloca().
5915
5916 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
5917
5918         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
5919         Fixes #402585.
5920
5921 2008-06-23  Mark Probst  <mark.probst@gmail.com>
5922
5923         * mini.c: Fail sharing of a generic method if it contains an open
5924         catch clause (because we don't pass MRGCTXs yet).
5925
5926 2008-06-23  Mark Probst  <mark.probst@gmail.com>
5927
5928         * mini.c: When compiling a method with generic sharing, insert the
5929         method instantiated with an all-Object generic context into the
5930         jit info table, instead of the context of the first instantiation
5931         of the method we happen to compile.
5932
5933 2008-06-18  Martin Baulig  <martin@ximian.com>
5934
5935         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
5936         `major_version' and `minor_version'.
5937
5938 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5939
5940         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
5941         mono_method_is_generic_sharable_impl() takes an additional
5942         argument specifying whether to treat type variables as reference
5943         types.
5944
5945 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5946
5947         * mini.h: Removed obsolete prototypes.
5948
5949 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5950
5951         * mini.c: Don't fail generic sharing for initobj and sizeof - we
5952         already handle them.
5953
5954 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5955
5956         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
5957         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
5958         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
5959         tramp-x86.c: Added a MonoGenericContext* argument to
5960         mono_arch_get_unbox_trampoline() so that it can call other
5961         functions which require it.
5962
5963 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5964
5965         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
5966         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
5967         mono_arch_get_this_arg_from_call() takes a
5968         MonoGenericSharingContext* as well.
5969
5970 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5971
5972         * mini.c: Factor out code for emitting unbox into emit_unbox() and
5973         implement generic sharing of unbox.
5974
5975 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5976
5977         * mini.c: Don't compute the vtable to determine whether a field is
5978         special static, because it might not work for open types.
5979
5980 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5981
5982         * mini.c: Removed the unused token_type and token_source arguments
5983         from get_runtime_generic_context_ptr().
5984
5985 2008-06-17  Marek Habersack  <mhabersack@novell.com>
5986
5987         * mini.c (ADD_BINOP): fix the build
5988
5989 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
5990
5991         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
5992         a widening op.
5993
5994 2008-06-16  Mark Probst  <mark.probst@gmail.com>
5995
5996         * mini.h: Removed class relations enum that's not used anymore.
5997
5998 2008-06-16  Mark Probst  <mark.probst@gmail.com>
5999
6000         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6001
6002         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6003         the lazy fetch trampoline access code.
6004
6005 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6006
6007         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6008
6009 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6010
6011         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6012
6013         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6014
6015         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6016
6017 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6018
6019         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6020         intrinsics.
6021
6022         * mini-ops.h: Add MIN/MAX_UN opcodes.
6023
6024         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6025         intrinsics.
6026
6027         * basic-math.cs: Add more min/max tests.
6028
6029         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6030
6031 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6032
6033         * mini.c: Small fix in the prologue of emit_castclass.
6034
6035 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6038
6039         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6040         do not work even for unsigned types. Fixes #400014.
6041
6042         * basic-math.cs: Add regression tests for unsigned Min/Max.
6043
6044 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6045
6046         * mini.c: Added additional context_used argument to several
6047         functions, which will be needed for sharing generic methods.  Use
6048         GET_RGCTX macro wherever appropriate.  Declare only one
6049         context_used in mono_method_to_ir().
6050
6051 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6052
6053         * mini.c, generic-sharing.c: Removed generic class relations.
6054
6055         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6056         functions due to MRGCTX changes.
6057
6058 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6059
6060         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6061         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6062         with calculated IMT.
6063
6064         * mini.c: Generic sharing of calls via generic interfaces.
6065
6066         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6067         generic method with non-constant MonoGenericContext*.  Instead,
6068         the context is taken out of the method itself.
6069
6070 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6071
6072         * mini.c: Generic sharing of ldvirtftn.
6073
6074 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6075
6076         * mini.c: Generic sharing of ldftn.
6077
6078 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6079
6080         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6081
6082 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6083
6084         * mini.c: Generic sharing of the special case of ldtoken followed
6085         by a call to GetTypeFromHandle.
6086
6087 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6088
6089         * mini.c: Generic sharing of box for nullable types.
6090
6091 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6092
6093         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6094         are passed on the stack. Fixes #324807.
6095
6096 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6097
6098         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6099         for the ArgValuetypeAddrInIReg case.
6100
6101         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6102         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6103
6104         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6105         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6106         local variable and pass the local variable by reference to the called method.
6107           
6108         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6109         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6110
6111         Contributed under MIT/X11 license.
6112
6113 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6114
6115         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6116
6117         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6118         everything.
6119
6120 2008-06-10  Martin Baulig  <martin@ximian.com>
6121
6122         * debug-mini.c
6123         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6124
6125 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
6126
6127         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6128         possible error when no arguments are passed.
6129
6130         Contributed under MIT/X11 license.
6131
6132 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6133
6134         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6135         where the file name is NULL.
6136
6137 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6138
6139         * mini.c: Fix s390 build.
6140
6141 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * trace.c (mono_trace_parse_options): Fix warnings.
6144
6145         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6146
6147 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6148
6149         * mini.c (remove_block_if_useless): Avoid printing the method name.
6150         
6151         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6152         MONO_INST_NEW.
6153
6154         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6155         LMF. Not yet used.
6156
6157         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6158         translated code after it has been patched.
6159
6160 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6163         avoid problems during code patching on SMP systems.
6164         (emit_call): Avoid adding a patch info which is already added by 
6165         emit_call_body.
6166         (mono_arch_emit_exceptions): Ditto.
6167
6168 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6169
6170         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6171         MONO_TYPE_ISSTRUCT already checks for it.
6172
6173 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6174
6175         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6176           structs with floats on Winx64 the float registers are not used.  
6177           The integer registers are always used..
6178         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6179           only one register will be used and only if the size of the struct 
6180           is 1,2,4, or 8 bytes.
6181
6182         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6183           to work for Winx64.
6184
6185         Contributed under MIT/X11 license.
6186
6187 2008-06-05  Martin Baulig  <martin@ximian.com>
6188
6189         * debug-debugger.c (debugger_lookup_class): Also call
6190         mono_class_setup_methods() here; we're only called from RTI.
6191
6192 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6193
6194         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6195         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6196         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6197         Post-process object files and add dtrace-generated object, if necessary.
6198
6199         Contributed under MIT/X11 license.
6200
6201 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6202
6203         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6204         element class.
6205
6206         * mini.c: Generic sharing for unbox.any and castclass.
6207
6208 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6209
6210         * mini.c: Ignore tailcall prefix in shared generic code and when
6211         doing calls which require a vtable/rgctx argument.
6212
6213 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6214
6215         * mini.c: Don't free the JIT info.
6216
6217         * driver.c: Changes in the JIT info table testing code.
6218
6219 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6220
6221         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6222         interruption. Fix some warnings.
6223
6224         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6225         interruption_checkpoint.
6226
6227 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6228
6229         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6230         from embedding applications.
6231
6232 2008-06-02  William Holmes  <billholmes54@gmail.com>
6233
6234         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6235           reserving 32 bytes on the stack when making calls. 
6236
6237         Contributed under MIT/X11 license.
6238
6239 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6240
6241         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6242         the linear IL branch.
6243
6244         * driver.c: Print out more information for --version on arm.
6245
6246 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6247
6248         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6249         bb_exit instead, since out of line bblocks might not actually be emitted
6250         out-of-line.
6251         
6252         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6253         maximum epilog size for out of line bblocks if tracing is enabled.
6254
6255         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6256
6257 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6260
6261 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6262
6263         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6264         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6265         opcodes.
6266
6267 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6268
6269         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6270         the 'value' to store is a constant.
6271
6272         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6273
6274         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6275         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6276
6277 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6278
6279         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6280         for accessing method->generic_container.
6281
6282 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6285         
6286         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6287
6288         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6289
6290         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6291         fails.
6292
6293 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6294
6295         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6296
6297         * mini.c: Handle the case when mono_class_vtable () fails.
6298
6299 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6300         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6301         the stat profiler.
6302
6303 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6304
6305         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6306         together with domain sharing.
6307
6308 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6309
6310         * mini.c: Treat callvirts to final methods like non-virtual calls
6311         when doing generic sharing, i.e. look them up in the runtime
6312         generic context.
6313
6314 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6315
6316         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6317         with computed types (for generic sharing).
6318
6319         * mini.c: Generic sharing for mkrefany and refanyval.
6320
6321 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6322
6323         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6324         possible.
6325
6326         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6327         the generic sharing code.
6328         
6329         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6330         when needed.
6331
6332 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6333
6334         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6335
6336 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6337
6338         * driver.c: updated copyright date
6339
6340 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6341
6342         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6343         needed.
6344
6345 2008-05-19  Martin Baulig  <martin@ximian.com>
6346
6347         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6348         pointing to the new `_mono_debug_using_mono_debugger' variable.
6349
6350         * driver.c
6351         (mono_main): Check mono_debug_using_mono_debugger() rather than
6352         the `MONO_INSIDE_MDB' environment variable to check whether we're
6353         inside the debugger.
6354
6355 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6358         argument.
6359
6360 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6361
6362         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6363
6364         * mini.c: Added mini_assembly_can_skip_verification. This
6365         function checks if the assembly requested to skip verification. 
6366         Fixes part of #387274.
6367
6368 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6369
6370         * mini.c (mini_get_method): Disable the check for open generic classes when
6371         using generic sharing.
6372
6373         * generics.cs: Add a test for #387034.
6374
6375         * mini.c (mini_get_method): Check whenever the method class is an open generic
6376         type, and return NULL in that case, causing a verification error. Fixes
6377         #384123.
6378
6379 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6380
6381         * driver.c (mono_main): Revert r102623. The right
6382         thing to do is to enable the verifier under verifiable
6383         unless a --security flag was passed.
6384
6385         We need this non-trivial behavior for --verify-all otherwise
6386         mcs-compileall won't be able to use it. As it needs everything to
6387         be verified under validil.
6388
6389 2008-05-06  Martin Baulig  <martin@ximian.com>
6390
6391         Fix #383749.
6392
6393         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6394         (mono_debugger_thread_cleanup): Likewise.
6395         (mono_debugger_extended_notification): Likewise.
6396
6397 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6398
6399         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6400         against both inflated and non-inflated methods. We need to check against the
6401         generic definition for cases where the instantiated method is not visible.
6402         We need to check against the inflated types for cases where the instantiation
6403         changes any super type. This fixes #382986.
6404
6405         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6406         that check for visibiliy as generic params only appears as the type subject
6407         of tokens on call opcodes. Field manipulation and ldftn must always
6408         target an exact type.
6409
6410 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6411
6412         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6413         if no related --security flag is passed.
6414
6415 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6416
6417         * mini-arch.h: Prepare support for ppc64.
6418
6419         Contributed under MIT/X11 license.
6420
6421 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6422
6423         * aot-runtime.c: Prepare support for ppc64.
6424
6425         Contributed under MIT/X11 license.
6426
6427 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6428
6429         * mini-ops.h: Prepare support for ppc64.
6430
6431         Contributed under MIT/X11 license.
6432
6433 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
6434
6435         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6436
6437         Contributed under MIT/X11 license.
6438
6439 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
6440
6441         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
6442         assemblies, since aot_name is not a full path, causing us to load MS.NET 
6443         assemblies on windows.
6444
6445 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6446
6447         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
6448         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
6449         * main.c: Use UTF-8 encoded command line instead of Windows default code
6450         page on Windows to support Unicode.
6451         * driver.c (DllMain): New function for mixed-mode assembly support.
6452         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
6453         export __stdcall functions without decoration.
6454
6455         Contributed under MIT/X11 license.
6456
6457 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6458
6459         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
6460         saving it very early.
6461
6462 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6463
6464         * mini.h, mini.c: Lots of code for accessing the old RGCTX
6465         deleted.  The only way to access the new RGCTX is via the
6466         trampline.
6467
6468         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
6469         vtable instead of the RGCTX to static methods.
6470
6471         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
6472         accessing the new RGCTX.
6473
6474         * generic-sharing.c: There is no separation between self, type
6475         arguments and other types in the RGCTX anymore.
6476
6477 2008-04-25  Jonathan Chambers <joncham@gmail.com>
6478
6479         * mini-amd64.c (add_general): Remove previous stack adjustment.
6480         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
6481         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
6482         for 32 bytes of stack space reserved for all calls.
6483         
6484         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
6485         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
6486         adjustment.
6487         
6488         Code contributed under MIT/X11 license.
6489
6490 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
6491
6492         * mini.c (mini_method_verify): Only verify non-inflated methods, check
6493         against the root definition, peeling out method and type instantiations.
6494         Cache verify success results, code that fails verification is still
6495         checked multiple times.
6496
6497 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6498
6499         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
6500
6501 2008-04-23  Jonathan Chambers <joncham@gmail.com>
6502
6503         * mini-amd64.c (add_general): Always increment stack on Win64.
6504         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
6505         on Win64.
6506         
6507         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
6508         stack based argument handling on Win64.
6509         
6510         Code contributed under MIT/X11 license.
6511
6512 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
6513
6514         * Makefile.am (version.h): Add support for git-svn.
6515
6516 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6517
6518         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
6519         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
6520         avoiding allocations and libc functions which might deadlock.
6521         
6522         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
6523         'no-gdb-backtrace' option is set.
6524
6525         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
6526
6527         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
6528
6529 2008-04-21  Martin Baulig  <martin@ximian.com>
6530
6531         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
6532         and `get_lmf_addr'; `notification_address' is no longer a pointer.
6533
6534 2008-04-21  Martin Baulig  <martin@ximian.com>
6535
6536         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
6537         `thread_vtable', `event_handler_ptr' and `event_handler'.
6538
6539 2008-04-21  Martin Baulig  <martin@ximian.com>
6540
6541         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
6542         allows delayed initialization of the `executable_code_buffer' when
6543         attaching.
6544
6545 2008-04-21  Martin Baulig  <martin@ximian.com>
6546
6547         * mini.h (mono_debugger_create_notification_function): Removed.
6548         * tramp-*.c (mono_debugger_create_notification_function): Removed.
6549
6550         * mdb-debug-info64.s
6551         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6552
6553         * mdb-debug-info32.s
6554         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6555
6556         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
6557         currently only works on x86 and x86_64, so don't create it on ppc.
6558
6559 2008-04-21  Martin Baulig  <martin@ximian.com>
6560
6561         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
6562
6563         * mini.c
6564         (mini_method_compile): In the fp elimination check, check
6565         `debug_options.mdb_optimizations' in addition to
6566         mono_debug_using_mono_debugger().       
6567
6568         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
6569         disable some JIT optimizations which are only disabled when
6570         running inside the debugger.
6571         Added `--help-debug' option to describe the debugging options.
6572         (parse_debug_options): New static function to parse the `--debug'
6573         options, so we can easily add more stuff in future.
6574
6575 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
6578         the method has no body.
6579
6580 2008-04-19  Jonathan Chambers <joncham@gmail.com>
6581
6582         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
6583         assembly is not allowed in MSVC 64-bit compiler. 
6584         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
6585         as we get floating point exceptions everywhere.
6586         
6587         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
6588         correctly align arguments for call to throw_exception.
6589         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
6590         
6591         Code contributed under MIT/X11 license.
6592
6593 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
6594
6595         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
6596
6597 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
6598
6599         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
6600
6601         * mini-amd64.c (NEW_INS): Set cil_code.
6602
6603         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
6604         from mini-amd64.c so all debugger related logic is in one place.
6605
6606         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
6607         later won't have a random ip assigned to them.
6608
6609 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
6610
6611         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
6612         the arch specific function initializes code_size.
6613         (mono_create_delegate_trampoline): Ditto.
6614
6615         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
6616         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
6617         platforms.
6618
6619         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
6620         running under the debugger.
6621
6622         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
6623         debugger.
6624
6625         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
6626         debugger. Also move the disabling of optimizations here from driver.c.
6627         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
6628         debugger.
6629
6630         * mini.h (MonoCompile): Add a few new flags.
6631
6632 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
6633
6634         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
6635         so the cil_code field of created MonoInst's is properly set.
6636         (mini_select_instructions): Ditto.
6637
6638         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
6639         (MONO_INST_NEW_CALL): Ditto.
6640
6641         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
6642         in many places so the ins->cil_code field is properly initialized.
6643
6644         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
6645         place.
6646
6647 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6648
6649         * mini.c (mini_method_compile): Print a different message when compiling a 
6650         shared method.
6651         
6652         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
6653         > 1.
6654
6655 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6656
6657         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
6658         SSE2 instructions.
6659
6660         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
6661         
6662 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6663
6664         * mini.c (handle_stack_args): Make this return void since its return value was
6665         never used. Also set cfg->unverifiable for invalid IL instead of calling
6666         G_BREAKPOINT ().
6667
6668 2008-04-10  Mark Probst  <mark.probst@gmail.com>
6669
6670         * mini.c: Make sure "this" is live in catch clauses with type
6671         variables in shared generic code.
6672
6673 2008-04-08  Mark Probst  <mark.probst@gmail.com>
6674
6675         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
6676         generic_class_is_reference_type() to ensure the proper behaviour
6677         when sharing generic code and the type in question is a type
6678         argument.
6679
6680 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
6683         race conditions when printing thread dumps. Fixes #377738.
6684
6685 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
6686         
6687         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
6688         shows up when both MonoInst arguments can cause aliasig.
6689         There is likely no way in the current JIT to trigger this problem, but
6690         it showed up in the development of generics sharing, when in a new
6691         opcode both args of an OP_GROUP can be aliases (addresses of a local).
6692         When the generics sharing code will be committed, its tests will be
6693         valid also for this bug.
6694
6695 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6696
6697         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
6698         PATCH_INFO_METHOD.
6699
6700         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
6701         NULL.
6702
6703 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
6704
6705         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
6706         use a more detailed exception message for InvalidCastException.
6707
6708         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
6709
6710         * driver.c (mono_main): Add --debug=casts option to turn on better 
6711         InvalidCastException message details.
6712
6713         * mini.c (mini_get_debug_options): New helper function to return the address of
6714         the debug_options variable.
6715
6716         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
6717         the jit_tls TLS variable.
6718
6719         * mini.c (mono_jit_tls): New TLS variable.
6720
6721         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
6722         option is used.
6723
6724 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
6725
6726         * mini.h: Removed verifer related stuff. This code was moved to verify.c
6727
6728         * mini.c: Removed verifer related stuff, code moved to verify.c.
6729
6730         * driver.c: Using code from verify.c instead of mini.c.
6731
6732 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
6733
6734         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
6735         longer valid.
6736
6737 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
6738
6739         * mini.c (check_for_method_verify): Enabling verification of
6740         corlib if mono_verify_all is set. Bugs in the verifier preventing that
6741         have been fixed.
6742
6743 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
6744
6745         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
6746         caller saved registers as well.
6747         
6748         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
6749         saved registers as well.
6750
6751 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
6752
6753         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
6754
6755         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
6756         code.
6757
6758 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
6759
6760         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
6761         to get_call_info.
6762         (get_call_info): Take a gsctx argument instead of 'cfg'.
6763
6764 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6765
6766         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
6767         mono_verify_all is set.
6768
6769         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
6770
6771         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
6772
6773 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6774
6775         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
6776         an exception.
6777
6778         * driver.c mini.c mini.h: Add a --verify-all development option to test the
6779         verifier and the code generated by the compiler.
6780
6781 2008-03-25  Mark Probst  <mark.probst@gmail.com>
6782
6783         * mini.c: Generic sharing of the non-nullable case of the box
6784         instruction.
6785
6786 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
6787
6788         * inssel.brg: Fix the build.
6789
6790         * iltests.il.in: Add a test for lconv.ovf.u8.un.
6791
6792 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
6793
6794         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
6795         Array:Address. Fixes #372410.
6796
6797         * iltests.il.in: New tests for readonly prefix.
6798
6799 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
6800
6801         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
6802         mini-trampolines.c.
6803
6804         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
6805         mini-exceptions.c.
6806
6807         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
6808         
6809         * mini.c (mono_decompose_op_imm): New helper function.
6810
6811         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
6812         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
6813         return value.
6814
6815         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
6816         mono_arch_output_basic_block. Fix warnings.
6817
6818         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
6819         for now.
6820
6821 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
6824         since the extra frame is now detected automatically inside the loop.
6825
6826         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
6827         opts which are now in mono_peephole_ins ().
6828         
6829         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
6830
6831         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
6832         frames and skip duplicate managed-to-native frames. Fixes #367665.
6833
6834         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
6835         opts which are now in mono_peephole_ins ().
6836         (mono_arch_peephole_pass_2): Ditto.
6837
6838         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
6839
6840         * mini-codegen.c (mono_peephole_ins): New helper function containing the
6841         arch independent peephole optimizations.
6842
6843         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
6844         opts which are now in mono_peephole_ins ().
6845
6846         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
6847         
6848         * mini-s390.c (mono_arch_output_basic_block): Fix build.
6849
6850         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
6851         pattern.
6852
6853         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
6854         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
6855         opcode. 
6856
6857 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
6858
6859         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
6860         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
6861         return value.
6862
6863         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
6864         mono_arch_output_basic_block. Fix warnings.
6865
6866 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6867
6868         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
6869         conv.ovf.u.un.
6870
6871 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6872
6873         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
6874         conv.ovf.u.un.
6875
6876         * iltests.il: Add new tests.
6877
6878 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6879
6880         * mini.c: Removed Windows version macros.
6881
6882 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6883
6884         * generic-sharing.c: Put reflection types in the extensible part
6885         of the runtime generic context.
6886
6887         * mini.c: Generic sharing of the GetTypeHandle special case of the
6888         ldtoken instruction.
6889
6890 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6891
6892         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
6893
6894         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
6895         
6896         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
6897         consistency with the other version on the linear IR branch.
6898
6899         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
6900
6901         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
6902
6903         * iltests.il.in: Add new tests.
6904
6905 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
6906
6907         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
6908
6909         * iltests.il.in: Add new tests.
6910
6911 2008-03-19  Mark Probst  <mark.probst@gmail.com>
6912
6913         * mini.c: Two variables with the same name were declared in
6914         nesting contexts and one wasn't initialized.  Fixed.
6915
6916 2008-03-19  Mark Probst  <mark.probst@gmail.com>
6917
6918         * mini.c: Generic sharing of the initobj instruction.
6919
6920 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6921
6922         * mini.c: make the test to optimize ldtoken from typeof() more
6923         precise.
6924
6925 2008-03-18  Mark Probst  <mark.probst@gmail.com>
6926
6927         * mini.c: Generic sharing of the initobj instruction for reference
6928         types.
6929
6930 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6931
6932         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
6933         the mono_breakpoint_clean_code() code to perform bound checks.
6934
6935 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
6936
6937         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
6938         mono_arch_patch_callsite() to include the start of the managed method
6939         to be able to perform bound checks.
6940
6941 2008-03-17  Mark Probst  <mark.probst@gmail.com>
6942
6943         * mini.c: Generic sharing for the isinst instruction.
6944
6945 2008-03-17  Mark Probst  <mark.probst@gmail.com>
6946
6947         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
6948         inssel-long32-mips.brg: Added opcodes for doing indirect calls
6949         with the runtime generic context argument.
6950
6951         * mini.c: Share calls to several types of unsharable methods by
6952         putting the address of the method code in the runtime generic
6953         context and doing an indirect call.
6954
6955         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
6956         to switches.
6957
6958 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6959
6960         * generic-sharing.c: Change due to a change in the runtime genric
6961         context API.
6962
6963 2008-03-15  Martin Baulig  <martin@ximian.com>
6964
6965         * tramp-x86.c
6966         (mono_arch_nullify_class_init_trampoline): Add call to
6967         mono_breakpoint_clean_code() to make things work when running
6968         inside the debugger.
6969
6970         * tramp-amd64.c
6971         (mono_arch_nullify_class_init_trampoline): Add call to
6972         mono_breakpoint_clean_code() to make things work when running
6973         inside the debugger.
6974
6975 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * inssel-long.brg (reg): Fix 64 bit build.
6978
6979 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6980
6981         * mini.c, mini.h: Share static generic code by passing it an
6982         implicit argument pointing to the runtime generic context.
6983
6984         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
6985         inssel-long32-mips.brg: New opcodes for calling shared static,
6986         which need to be passed the runtime generic context.
6987
6988         * mini-amd64.c, mini-x86.c: Save the runtime generic context
6989         argument on the stack in the prologue if needed.  New function for
6990         finding the runtime generic context argument from the registers
6991         saved by the trampoline.
6992
6993         * mini-amd64.h, mini-x86.h: Specify which register to use for the
6994         runtime generic context argument.
6995
6996         * tramp-amd64.c: Also restore the register used for the runtime
6997         generic context argument.
6998
6999         * mini-trampoline.c: Resolve shared static calls by consulting the
7000         runtime generic context via the new argument.
7001
7002         * generic-sharing.c: Add an argument to sharability-checking
7003         functions that specifies whether type variables should be treated
7004         as sharable type arguments.
7005
7006         * inssel-x86.brg: Removed a superfluous, buggy rule.
7007
7008         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7009         to switches.
7010
7011 2008-03-14  Martin Baulig  <martin@ximian.com>
7012
7013         * debug-debugger.c (main_thread_handler): Call
7014         mono_runtime_run_main() without sending any notifications.
7015
7016         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7017
7018 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7019
7020         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7021
7022 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7023
7024         * tramp-x86.c: Fixed register restore offsets in the trampoline
7025         code for ECX and EDX.
7026
7027 2008-03-12  Geoff Norton  <gnorton@novell.com>
7028
7029         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7030         different ucontext_t implementations.
7031         * exceptions-arm.c: Use the above defines to get exceptions working on 
7032         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7033         * mini-arm.c: Implement iPhone icache support (based on a patch by
7034         Luke Howard lukeh@padl.com)
7035
7036 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7037
7038         * mini.c: Enable generic sharing of calls to non-static
7039         non-interface non-generic non-value-type methods.
7040
7041         * mini-trampolines.c: Resolve calls from shared generic code.
7042
7043 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7044
7045         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7046
7047         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7048
7049 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7050
7051         * mini.c: some fixes for the AOT compiler.
7052
7053 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7054
7055         * cpu-amd64.md: Add clob:1 to some float opcodes.
7056
7057 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7058
7059         * mini.h: Added MiniVerifierMode enumeration.
7060
7061         * mini.c: Added mini_verifier_set_mode to control
7062         the usage of the new verifier.
7063
7064         * mini.c (mono_method): Integrated the new verifier.
7065
7066         * driver.c: Extended --security option with validil and
7067         verifiable options to activate the new verifier.
7068
7069 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7070
7071         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7072         optimization to ctors taking 0 or 2 arguments too.
7073
7074         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7075         a bit.
7076
7077         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7078
7079         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7080
7081 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7084         non-aot case as well.
7085
7086         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7087
7088         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7089         changes.
7090
7091         * aot-compiler.c (encode_patch): Ditto.
7092
7093         * mini.h (G_MININT32): Fix the definition of this.
7094
7095 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7096
7097         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7098
7099         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7100
7101 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7102
7103         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7104         methods returning vtypes in registers.
7105         (mono_arch_allocate_vars): Ditto.
7106
7107         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7108
7109         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7110
7111         * generics.cs: Add a test from the linear IR branch.
7112
7113         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7114
7115         * mini.c (inline_method): Cache failed inline attempts.
7116
7117 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7118
7119         * mini.c: For shared methods of generic classes put the location
7120         of "this" into the MonoGenericJitInfo.
7121
7122         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7123         register out of a MonoContext by register number.  Add the generic
7124         sharing context as an argument to mono_arch_find_this_argument().
7125
7126         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7127         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7128         for new arch function.
7129
7130         * mini-exception.c: Handle open exception clauses in shared
7131         generic code.
7132
7133         * mini-trampolines.c: Supply additional argument to
7134         mono_arch_find_this_argument().
7135
7136 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7137
7138         * Makefile.am (regtests): Run the bench.exe tests last.
7139
7140 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7141
7142         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7143         a bit.
7144
7145 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7146
7147         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7148         with MS.
7149
7150         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7151         
7152         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7153
7154         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7155         whose class has no cctor.
7156
7157         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7158
7159 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7160
7161         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7162         unverified.
7163
7164 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7165
7166         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7167         to be in sync with the code on the linear IR branch.
7168
7169         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7170
7171         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7172
7173 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7174
7175         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7176
7177         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7178
7179         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7180
7181         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7182
7183         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7184         
7185         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7186         body.
7187
7188 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7189
7190         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7191         OP_LOADR4_MEMBASE emission.
7192
7193         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7194         (mono_spillvar_offset_float): Ditto.
7195
7196         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7197
7198         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7199         emission.
7200
7201         * basic-long.cs: Add regression tests for them.
7202
7203         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7204         use.
7205         (mono_arch_allocate_vars): Fix representation of single-precision float
7206         argument.
7207         (mono_arch_output_basic_block): Ditto.
7208
7209         * inssel-mips.brg: Ditto, remove duplicate items.
7210
7211         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7212         arguments of tail calls as on other platforms.
7213         (mono_arch_output_basic_block): Handle tail calls.
7214
7215         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7216         register.
7217
7218         * objects.cs (test_5_pass_static_struct): Add test for it.
7219
7220         Contributed under MIT/X11 license.
7221
7222 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7223
7224         * Makefile.am: Use gmcs for compiling the regression tests.
7225
7226         * *.2.cs *.2.il: Rename to *.cs and *.il.
7227
7228 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7229
7230         * regalloc.h: Make the vassign array smaller.
7231
7232         * mini.c (mini_method_compile): Remove an unused field in cfg.
7233
7234         * mini-codegen.c: Add a bunch of micro optimizations.
7235
7236 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7237
7238         * regalloc.h: Remove some unused fields.
7239
7240 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7241
7242         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7243
7244         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7245
7246 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7247
7248         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7249
7250         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7251         trampoline: Fetch an entry from the runtime generic context.  If
7252         it's NULL, jump to the actual trampoline to fill the runtime
7253         generic context.  Otherwise, return it.
7254
7255         * mini.c: Call the lazy fetch trampoline to get entries out of the
7256         runtime generic context.
7257
7258         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7259         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7260         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7261
7262 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7263
7264         * mini.c: Fetch data out of the extensible part of the runtime
7265         generic context instead of calling a helper function.
7266
7267         * generic-sharing.c: Some functions moved into
7268         metadata/generic-sharing.c.  Helper function for fetching other
7269         types now checks and asserts against extensible rgctx (just for
7270         debugging purposes - the helper function isn't called anymore
7271         unless for debugging).
7272
7273 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7276         for tail calls up to the point that the tests in iltests.exe run. Also add a
7277         dummy CKFINITE implementation.
7278         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7279         needed for trampoline LMF frames.
7280
7281         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7282         trampoline LMF frames.
7283
7284 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * mini.c (inline_method): clean any pending loader error when inlining fail.
7287         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7288
7289 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7290
7291         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7292
7293         * aot-runtime.c (decode_patch_info): Ditto.
7294
7295         * mini.c (mono_resolve_patch_target): Ditto.
7296         
7297         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7298         icall wrappers.
7299
7300         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7301         
7302         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7303         if it references an icall address.
7304
7305 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * cpu-s390x.md: Remove some more unused opcodes.
7308         
7309         * cpu-s390x.md: Remove some unused opcodes.
7310
7311         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7312         mono_op_imm_to_op ().
7313
7314         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7315         instead of a switch statement.
7316         
7317         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7318         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7319
7320         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7321         
7322         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7323
7324         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7325         -1.
7326
7327 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7328
7329         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7330         opened. Fixes #362607.
7331
7332         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7333
7334         * iltests.il.in: Add a test for static methods in interfaces.
7335
7336 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7337
7338         * genmdesc.c (build_table): Fix a crash on older glib versions.
7339
7340         * cpu-sparc.md: Remove some unused opcodes.
7341         
7342         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7343         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7344
7345         * cpu-amd64.md: Remove some unused opcodes.
7346
7347         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7348         like the other opcodes.
7349
7350 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7351
7352         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7353
7354         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7355
7356         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7357         variables 'cfg' instead of 'm' for consistency.
7358
7359         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7360
7361         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7362         argument holding the vtype return address, to avoid the ambigious use of
7363         cfg->ret for this purpose.
7364
7365         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7366
7367         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7368         
7369         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7370         new mono_print_ins () function which only takes one argument.
7371
7372 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7373
7374         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7375         macro arguments.
7376
7377 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7380
7381         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7382
7383         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7384         opcodes and other small changes.
7385
7386         * mini-ops.h: Add some new opcodes from the linear IR branch.
7387
7388         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7389
7390         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7391         opcodes, use the REG_MEMBASE opcodes instead.
7392         
7393         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7394         opcodes, use the REG_MEMBASE opcodes instead.
7395         
7396         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7397         linear IR branch.
7398
7399         * mini.c (mono_op_imm_to_op): New helper function.
7400
7401         * mini-ops.h: Add some opcodes from linear IR branch.
7402
7403 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7406         <tsv@solvo.ru>.
7407
7408 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7409
7410         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7411         OP_ICONV_TO_R4/R8.
7412
7413         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7414
7415 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7416
7417         * aot-compiler.c (emit_method_code): Add an assert.
7418
7419         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7420         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7421         methods.
7422
7423 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7424
7425         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7426         some load/store opcodes so they are consistent. 
7427         (mono_arch_emit_prolog): Simplify some code.
7428
7429         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7430
7431         * objects.cs: Add tests for large argument offsets on ARM.
7432
7433         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7434         stack offsets. Fixes #359651.
7435
7436         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7437
7438         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7439
7440         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
7441
7442         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
7443
7444         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
7445
7446         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
7447         rid of CEE_CONV_R_UN.
7448
7449         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
7450
7451 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
7452
7453         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
7454
7455         * mini.c (mono_normalize_opcodes): Add some more opcodes.
7456
7457         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
7458
7459         * cpu-amd64.md: Remove some unused opcodes.
7460
7461         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
7462
7463         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
7464
7465         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
7466         arch specific functions for its parts. Call the peephole pass after local
7467         regalloc so the prolog can compute a more accurate max_offset.
7468         
7469         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
7470         the corresponding OP_I/OP_L opcodes.
7471
7472         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
7473
7474         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
7475
7476 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
7479         as they are handled in mini.c.
7480
7481         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
7482         
7483         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
7484         case since it is handled in mini.c.
7485
7486         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
7487
7488         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
7489
7490         * *.c: Use the new opcodes in the IR and back end code.
7491
7492         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
7493
7494         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
7495
7496 2008-02-06  Mark Probst  <mark.probst@gmail.com>
7497
7498         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
7499         an assert because it has a race condition.
7500
7501 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7502
7503         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
7504
7505         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
7506
7507         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
7508
7509         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
7510         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
7511
7512 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7513
7514         * cpu-amd64.md (move): Correct the maximum size of move.
7515
7516 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7517
7518         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
7519         the generic class init trampoline to return quickly if the class
7520         is already inited.
7521
7522 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
7523
7524         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
7525         issues where an 32 bit callsite cannot be patched by a 64 bit address.
7526
7527 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
7530         branch.
7531
7532 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * objects.cs: Add some soft-float tests.
7535
7536         * mini.c: Fix a couple more soft-float issues.
7537
7538         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
7539
7540         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
7541         avoid a REX prefix.
7542
7543 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
7546         exception happens while compiling a virtual method.
7547
7548 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7549
7550         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
7551         
7552         * mini-sparc.c: Fix build.
7553
7554         * mini-sparc.c (get_call_info): Add support for generic sharing.
7555
7556         * mini-exceptions.c: Add a FIXME.
7557
7558 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7559
7560         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
7561         altstack handling code.
7562
7563         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
7564         
7565         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
7566
7567         * mini-s390.c: Add support for generic sharing.
7568
7569         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7570         Fix CAS on s390.
7571         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7572
7573         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
7574
7575         * mini-s390x.c: Add support for generic sharing.
7576         
7577         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7578         Fix CAS on ia64.
7579         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7580
7581         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
7582         can be used since it takes a 16 bit signed immediate.
7583
7584         * inssel-s390x.brg: Fix OP_SETRET.
7585
7586         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
7587
7588         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
7589
7590         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
7591
7592         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
7593
7594         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
7595         in one place.
7596
7597         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
7598         stuff.
7599
7600         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
7601         of the unused mono_arch_patch_delegate_trampoline stuff.
7602
7603 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
7604
7605         * basic-long.cs: Move the fp related tests to basic-float.cs.
7606
7607         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
7608
7609         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
7610
7611         * basic-calls.cs: Add a test for proper float argument passing.
7612
7613         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
7614         if the context corresponds to an exception received through a signal.
7615
7616         * exceptions.cs: Add a test for nullref handling at the start of a try
7617         clause.
7618
7619         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
7620
7621         * jit-icalls.c (mono_break): New JIT icall.
7622
7623         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
7624
7625         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
7626
7627 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
7628
7629         * cpu-*.md: Get rid of unused opcodes.
7630
7631         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
7632
7633         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
7634         by all platforms.
7635
7636         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
7637         define.
7638
7639         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
7640         the arch independent trampoline code in mini-trampolines.c.
7641
7642         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
7643
7644         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
7645
7646         * mini-s390.h: Remove an unused define.
7647         
7648         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
7649         the arch independent trampoline code in mini-trampolines.c.
7650
7651         * mini-arm.c (mono_arch_emit_prolog): Fix build.
7652
7653 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
7656
7657         * mini-s390.c (mono_arch_emit_prolog): Fix build.
7658
7659         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
7660
7661         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
7662
7663         * cpu-amd64.md: Use smaller sizes for int opcodes.
7664
7665         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
7666
7667         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
7668         objects.cs.
7669
7670         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
7671         debugging.
7672
7673         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
7674         instead of though a pointer to save an indirection when accessing elements of
7675         the array.
7676
7677         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
7678         some typos.
7679         (NOT_IMPLEMENTED): New helper macro.
7680         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
7681         of a bb.
7682
7683         * *.c: Use the new helper macro.
7684
7685 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
7686
7687         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
7688
7689 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7690
7691         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
7692         stack slots.
7693
7694 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
7695
7696         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
7697         profiling is enabled.
7698         
7699         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
7700         the end.
7701         (mono_arch_emit_prolog): Add more first bblock optimizations.
7702
7703         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
7704         in order if possible.
7705         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
7706         bblock, since the arguments are still in their original registers.
7707
7708         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
7709
7710 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7711
7712         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
7713         as well.
7714
7715         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
7716         offset 0.
7717
7718         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
7719
7720         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
7721         process async exceptions received while in unmanaged code.
7722
7723         * mini.c (mini_init): Install a callback with the runtime which will be called
7724         when a thread receives an async exception while in unmanaged code.
7725
7726         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
7727
7728         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
7729
7730 2008-01-16  Wade Berrier  <wberrier@novell.com>
7731
7732         * cpu-g4.md:
7733         * cpu-arm.md:
7734         * cpu-s390x.md:
7735         fix build
7736
7737 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7738
7739         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
7740         compilation with sun cc.
7741
7742         * cpu-*.md: Fix the build.
7743
7744         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
7745
7746         * mini-amd64.h: Add some comments to the MonoLMF structure.
7747
7748         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
7749         
7750         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
7751         in the LMF structure if possible. This saves two instructions in the
7752         managed->native wrappers.
7753
7754         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
7755
7756 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7757
7758         * generic-sharing.c: New type argument lookup code which uses the
7759         runtime generic context template.
7760
7761 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7762
7763         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
7764
7765         * mini-arm.c (add_general): Fix arm eabi parameter passing.
7766         (mono_arch_output_basic_block): Fix localloc implementation.
7767
7768         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
7769
7770         * mini-ia64.c (peephole_pass): Fix ia64 build.
7771
7772         * mini-amd64.c (peephole_pass): Fix a warning.
7773         
7774         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
7775         at a constant offset from sp/fp.
7776
7777         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
7778         instead of obtaining it from *lmf in the managed method case.
7779
7780 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7781
7782         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
7783
7784 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
7785
7786         * mini.h (MonoInstList): New type.
7787         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
7788         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
7789         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
7790         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
7791         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
7792         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
7793         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
7794         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
7795         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
7796         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
7797         MONO_INST_LIST_FOR_EACH_ENTRY,
7798         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
7799         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
7800         mono_inst_list_first, mono_inst_list_last,
7801         mono_inst_list_next, mono_inst_list_prev): New instruction
7802         list handling interfaces.
7803         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
7804         list head 'ins_list'.
7805         (MonoInst): Replace next pointer with list head 'node'.
7806         (MonoCallInst): Make 'out_args' a MonoInstList.
7807         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
7808         (MonoCompile): Delete reverse_inst_list and
7809         reverse_inst_list_len.
7810         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
7811         mono_arch_lowering_pass, mono_arch_local_regalloc,
7812         mono_arch_output_basic_block, mono_arch_emit_prolog):
7813         Convert to new instruction lists.
7814         (insert_after_ins): Delete.
7815         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
7816         instruction lists.
7817         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
7818         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
7819         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
7820         mono_emulate_opcode, mono_emit_load_got_addr,
7821         inline_method, mono_method_to_ir, mono_print_bb_code,
7822         print_dfn, decompose_pass, nullify_basic_block,
7823         replace_out_block_in_code, remove_block_if_useless,
7824         merge_basic_blocks, move_basic_block_to_end,
7825         try_unsigned_compare, optimize_branches, mono_print_code,
7826         mini_select_instructions, remove_critical_edges): Likewise.
7827         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
7828         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
7829         mono_arch_output_basic_block, mono_arch_emit_prolog):
7830         Likewise.
7831         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
7832         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7833         mono_arch_output_basic_block): Likewise.
7834         (inst_list_prepend, insert_after_ins): Delete.
7835         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
7836         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
7837         instruction lists.
7838         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
7839         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
7840         mono_arch_emit_prolog): Likewise.
7841         * cfold.c (mono_constant_fold): Likewise.
7842         * liveness.c (visit_bb, mono_analyze_liveness,
7843         optimize_initlocals): Likewise.
7844         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
7845         * graph.c (mono_draw_code_cfg): Likewise.
7846         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
7847         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
7848         mono_ssa_cprop): Likewise.
7849         * abcremoval (get_relations_from_previous_bb, process_block):
7850         Likewise.
7851         * local-propagation (mono_cprop_invalidate_values,
7852         mono_local_cprop_bb): Likewise.
7853         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
7854         peephole_pass, mono_arch_output_basic_block,
7855         mono_arch_emit_prolog): Likewise.
7856         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
7857         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7858         mono_arch_emit_prolog): Likewise.
7859         (insert_after_ins): Delete.
7860         * aliasing.c (print_code_with_aliasing_information,
7861         mono_build_aliasing_information, mono_aliasing_deadce):
7862         Convert to new instruction lists.
7863         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
7864         peephole_pass, NEW_INS, mono_arch_lowering_pass,
7865         mono_arch_local_regalloc, mono_arch_output_basic_block):
7866         Likewise.
7867         (insert_after_ins): Delete.
7868         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
7869         peephole_pass, mono_arch_output_basic_block): Convert to
7870         new instruction lists.
7871         * mini-codegen (InstList, inst_list_prepend,
7872         insert_after_ins): Delete.
7873         (insert_before_ins, get_register_force_spilling,
7874         get_register_spilling, free_up_ireg, free_up_reg,
7875         create_copy_ins, create_spilled_store, alloc_int_reg,
7876         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
7877         to new instruction lists.
7878         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
7879         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7880         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
7881         (insert_after_ins): Delete.
7882         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
7883         mono_arch_local_regalloc, mono_arch_output_basic_block,
7884         mono_arch_call_opcode): Convert to new instruction lists.
7885         (insert_after_ins): Delete.
7886         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
7887         peephole_pass, mono_arch_output_basic_block,
7888         mono_arch_emit_prolog): Convert to new instruction lists.
7889
7890 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
7893
7894         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
7895         Fixes #353182.
7896
7897         * Makefile.am (version.h): Make this work with non-bash shells.
7898
7899 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7900
7901         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
7902
7903 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7904
7905         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
7906         the InitializeArray optimization.
7907
7908 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * mini.c driver.c: Don't include os/gc_wrapper.h.
7911
7912 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7913
7914         * mini.c (print_jit_stats): Print GC statistics if available.
7915
7916 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
7919
7920 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
7921
7922         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
7923
7924 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7925
7926         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
7927         
7928         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7929
7930         * driver.c (mono_main): Ditto.
7931
7932 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
7935
7936         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
7937         in the vtable can't be encoded.
7938         (compile_method): Ditto.
7939
7940 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
7943         defined.
7944
7945         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
7946         lmf->rbp.
7947
7948         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
7949         the top LMF entry belongs to the current method.
7950
7951         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
7952
7953 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
7956         
7957         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
7958
7959         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
7960
7961         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
7962
7963         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
7964
7965         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
7966         implementation.
7967
7968         * basic-float.cs: Add an ulong->double cast test.
7969
7970 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * mini.c (mono_method_to_ir): Fix a warning.
7973
7974 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
7975
7976         * mini-ops.h: Add OP_SWITCH.
7977
7978         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
7979         CEE_SWITCH in back-end code, use OP_SWITCH instead.
7980
7981 2007-12-11  Geoff Norton  <gnorton@novell.com>
7982
7983         * mini-s390x.c: Minor change to the MAX() define to allow
7984         it to compile with other gcc versions.
7985
7986 2007-12-11  Geoff Norton  <gnorton@novell.com>
7987
7988         * cpu-s390x.md:
7989         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
7990
7991 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7992
7993         exceptions-arm.c (mono_arch_get_restore_context): Restore
7994         the frame pointer.
7995
7996         exceptions-arm.c (throw_exception): Save the frame pointer.
7997         This is a partial fix for #323747. Only the client side is
7998         fixed.
7999
8000 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8001
8002         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8003         was using an unrelated variable to log the class which
8004         needed the cctor to be called. This was crashing on arm.
8005
8006 2007-12-09  Robert Jordan  <robertj@gmx.net>
8007
8008         * mini-x86.c (mono_arch_emit_epilog):
8009         Consider all kinds of 64-bit types. Fixes #323114.
8010
8011 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8014
8015 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8016
8017         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8018
8019 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8020
8021         * mini.c: run type ctor before allocating an object, not only
8022         when running it's constructor method (fixes at least part of bug #342507).
8023
8024 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8025         
8026         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8027         
8028         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8029         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8030         function.
8031
8032         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8033         mono_generic_class_init_trampoline () the same as it is done with the other
8034         trampolines.
8035
8036         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8037         aot-runtime.c aot-compiler.c: Implement AOT support.    
8038
8039 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8040
8041         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8042         build for archs which don't have the vtable trampoline defined
8043         yet.
8044
8045 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8046
8047         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8048
8049         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8050
8051         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8052
8053         * tramp-<ARCH>.c: Use the new helper function.
8054
8055 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8056
8057         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8058         trampoline call, which takes a vtable argument.
8059
8060         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8061         OP_TRAMPCALL_VTABLEs like other calls.
8062
8063         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8064         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8065         call.  Implemented a support function which fetches the vtable
8066         from a register set.
8067
8068         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8069         Implemented a generic class init trampoline, using the
8070         OP_TRAMPCALL_VTABLE opcode.
8071
8072         * mini.c: Implemented static field access when sharing generic
8073         code.  This implies initing the class using the new
8074         OP_TRAMPCALL_VTABLE call.
8075
8076 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8077
8078         * mini.c: Don't compile methods with sharing enabled if their
8079         classes are disabled for sharing.
8080
8081 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8082
8083         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8084         opcodes. Fixes #346563.
8085
8086         * objects.cs: Add a new test.
8087
8088         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8089
8090         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8091         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8092
8093 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8094
8095         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8096
8097 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8098
8099         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8100         code stream.
8101
8102 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8103
8104         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8105
8106         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8107         optimization in the AOT case.
8108         
8109 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8110
8111         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8112         
8113         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8114
8115         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8116
8117         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8118
8119         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8120         is created by the inlined delegate ctor.
8121
8122         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8123
8124         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8125
8126 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8127
8128         * cpu-x86.md: Fix the length of ckfinite.
8129
8130 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8131
8132         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8133         
8134         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8135         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8136
8137         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8138
8139         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8140         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8141
8142 2007-11-28  Martin Baulig  <martin@ximian.com>
8143
8144         * mini-x86.c
8145         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8146         after creating the trampoline.
8147
8148 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8149
8150         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8151
8152         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8153         the same version.
8154
8155         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8156         instead of the calling method to help AOT.
8157
8158         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8159
8160 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8161
8162         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8163         is defined.
8164
8165 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8166
8167         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8168         
8169         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8170         (encode_method_ref): No need to handle generic method definitions specially.
8171
8172         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8173
8174         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8175         decode_klass_info.
8176
8177         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8178         encode_klass_info.
8179         (compile_method): Enable generic sharing.
8180
8181 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8182
8183         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8184         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8185
8186         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8187         generic code.
8188
8189         * mini-trampolines.c: Fix a warning.
8190
8191         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8192         NEW_PCONST.
8193         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8194         (generic_class_is_reference_type): Remove unused function.
8195
8196         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8197         in the generic vtable trampoline case.
8198
8199         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8200         
8201         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8202         return an AOT method based on a vtable slot.
8203
8204         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8205
8206         * mini.c (mini_get_vtable_trampoline): Export this.
8207
8208 2007-11-22  Martin Baulig  <martin@ximian.com>
8209
8210         * debug-debugger.h
8211         (MonoDebuggerInfo): Move `debugger_version' up.
8212
8213 2007-11-22  Martin Baulig  <martin@ximian.com>
8214
8215         * mini-amd64.c
8216         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8217
8218         * mini-trampolines.c
8219         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8220         after compiling the method.
8221
8222 2007-11-20  Martin Baulig  <martin@ximian.com>
8223
8224         * debug-mini.c
8225         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8226         (mono_debugger_remove_breakpoint): Likewise.
8227         (mono_debugger_check_breakpoints): Likewise.
8228
8229         * debug-debugger.c: Implement the new breakpoint interface here.
8230
8231 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8232
8233         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8234         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8235
8236         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8237
8238 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8241
8242         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8243         mini.c.
8244
8245         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8246         mini.c.
8247
8248         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8249         returning a vtype in a register.
8250
8251         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8252         here from the arch specific code.
8253
8254         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8255         mini.c.
8256
8257         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8258         (mono_arch_emit_prolog): Increment maximum prolog size.
8259
8260         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8261         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8262
8263         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8264         MonoGenericSharingContext.
8265
8266         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8267         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8268
8269 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8270
8271         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8272         which extract fields out of the runtime generic context.  Full
8273         sharing of the NEWARR opcode.
8274
8275 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8276
8277         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8278         --enable-minimal=ssa.
8279
8280 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8283         mono_marshal_get_delegate_invoke () signature change.
8284
8285 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8286
8287         * mini.c: Removed the shared context in favor of the generic
8288         sharing context.  Allocate the MonoJitInfo structure with room for
8289         the generic sharing context if it's needed.
8290
8291         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8292         domain-internals.h now.
8293
8294         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8295
8296         * generic-sharing.c: Several changes for working without a shared
8297         context and instead operating on open types instead.
8298
8299 2007-11-12  David S. Miller  <davem@davemloft.net>
8300
8301        * inssel-sparc.brg: Fix double instruction emit.
8302
8303 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8306         Get/Set/Address methods.
8307         
8308         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8309         mono_marshal_get_delegate_invoke signature change.
8310
8311 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8312
8313         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8314         This can happens with dynamic methods. Fixes the other bug in #322722.
8315
8316 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8317
8318         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8319         BX call sequence.
8320
8321         * mini-arm.c (arm_patch): Implement patching of BX call
8322         sequence. Fixes one of the bugs in #322722.
8323
8324 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8325
8326        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8327        under Linux.  We only need to flush every 32-byte cache line.    
8328
8329 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8330
8331         * mini.c:
8332         move_basic_block_to_end: Add branches when needed, eventually creating
8333         a new BB.
8334         optimize_branches: added a parameter that tells if it's ok to create
8335         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8336         and avoid calling move_basic_block_to_end when it's not ok.
8337         Fixes bug 318677.
8338
8339 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8340
8341         * mini.c: Abort inlining call to InitializeArray if something
8342         looks wrong.  Let the icall handle it, which now has proper safety
8343         checks.
8344
8345 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8346
8347         * mini.c (mono_spill_call): add support for soft-float.
8348
8349         * mini.c (mono_method_to_ir): add support for soft-float
8350         to inlined functions that return float.
8351
8352         * mini.c (mono_method_to_ir): add support for soft-float
8353         to cee_stsfld opcode on float fields.
8354
8355 2007-11-05  Geoff Norton  <gnorton@novell.com>
8356
8357         * mini-x86.h: Fix the structure access for X86 Leopard.
8358
8359
8360 2007-11-05  Martin Baulig  <martin@ximian.com>
8361
8362         * mini-trampolines.c
8363         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8364         after compiling the method to notify the debugger.
8365
8366 2007-11-05  Martin Baulig  <martin@ximian.com>
8367
8368         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8369
8370 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8371
8372         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8373         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8374
8375 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8376
8377         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8378         native-to-managed wrappers.
8379         
8380 2007-11-01  Geoff Norton  <gnorton@novell.com>
8381
8382         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8383         members.
8384
8385 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8386
8387         * mini.c, mini-x86.c: when getting back from unmanaged code
8388         to managed via a marshaled delegate we also need to set the
8389         right domain.
8390
8391 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8392
8393         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8394         for amd64.
8395
8396 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8397
8398         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8399         let the debugger or other external agents to tell the JIT when
8400         a sw breakpoint has been inserted in the code that the JIT needs
8401         to be able to inspect.
8402
8403 2007-10-31  Martin Baulig  <martin@ximian.com>
8404
8405         * debug-debugger.h
8406         (MonoDebuggerInfo): Remove `runtime_class_init'.
8407
8408 2007-10-30  Martin Baulig  <martin@ximian.com>
8409
8410         * debug-mini.h
8411         (mono_debugger_thread_created): Added `MonoThread *' argument.
8412         (mono_debugger_extended_notification): New public method.
8413         (mono_debugger_trampoline_compiled): New public method.
8414
8415         * debug-mini.c
8416         (MonoDebuggerThreadInfo): Added `thread' and
8417         `extended_notifications' fields.
8418
8419         * debug-debugger.c
8420         (debugger_executable_code_buffer): New static variable.
8421
8422         * debug-debugger.h
8423         (MonoDebuggerInfo): Added `executable_code_buffer',
8424         `executable_code_buffer_size', `breakpoint_info_area',
8425         `breakpoint_table' and `breakpoint_table_size'.
8426
8427 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8428
8429         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8430         that IP  either is an unused value or the vtable pointer. IMT 
8431         calls use vtable + offset now. Reduced by almost half the size
8432         of IMT entries.
8433
8434 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8435
8436         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8437         defines to access param registers. Replace long usage with
8438         gsize as sizeof(long) != sizeof(void*) on Win64.
8439
8440         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
8441         on Win64. Fix intrinsic, use _AddressOfReturnAddress
8442         instead of non-existant _GetAddressOfReturnAddress.
8443
8444         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
8445         param registers. Save/restore %rdi and %rsi in MonoLMF.
8446
8447         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
8448         param registers. Modify (throw_exception) signature to take 
8449         %rdi and %rsi on Win64. 
8450
8451         Code is contributed under MIT/X11 license.
8452
8453 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8454
8455         * helpers.c: unlink debugging output files.
8456
8457 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8458
8459         * mini.c: Move mono_create_ftnptr () to object.c.
8460
8461 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8462
8463         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
8464         optional. This function can now be used to disassemble code generated
8465         outside the JIT such as trampolines and IMT thunks.
8466
8467         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
8468
8469         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
8470         vtable pointer from a ldr instruction.
8471
8472         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
8473         new IMT call sequence.
8474
8475         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
8476         call sequence for interface invocations.
8477
8478         * mini-arm.c (mono_arch_emit_imt_argument): added, required
8479         for imt support. This function is empty since IMT on ARM requires no
8480         special handling on the IR side.
8481
8482         * mini-arm.c (mono_arch_find_imt_method): added, required for
8483         imt support.
8484
8485         * mini-arm.c (mono_arch_find_this_argument): added, required
8486         for imt support.
8487
8488         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
8489         a ldr instruction to load a value stored in the code stream.
8490
8491         * mini-arm.c (mono_arch_build_imt_thunk):added, required
8492         for imt support.
8493
8494
8495 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8496
8497         * mini.c (mini_init): Install the jump trampoline callback.
8498
8499 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8500
8501         * mini-trampolines.c: handle synchronized methods with the common
8502         vtable trampoline (bug #335601).
8503
8504 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
8505
8506         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
8507
8508         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
8509         64 bit platforms.
8510
8511         * mini-ia64.h mini-ia64.c: Add support for IMT.
8512
8513         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
8514         prolog. Fixes #331958.
8515
8516 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
8517
8518         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
8519
8520 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8521
8522         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
8523         trampoline.
8524
8525 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8526
8527         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
8528         trampoline.
8529
8530 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
8531
8532         * mini-x86.c, mini-x86.h: x86 support for the common vtable
8533         trampoline.
8534
8535 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8536
8537         * mini-trampolines.c: changed the magic rampoline to understand
8538         the common vtable trampoline method: the method to invoke is
8539         determined by the vtable displacement of the call.
8540
8541 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8542
8543         * mini.c, mini.h: register the common vtable trampoline if the
8544         architecture supports it.
8545
8546 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8547
8548         * cpu-amd64.md: use the correct max length for tls_get.
8549
8550 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
8551
8552         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
8553         CEE_STELEM_ANY. Fixes #333696.
8554
8555 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8556
8557         * exceptions-x86.c: provide more graceful handling of the case where
8558         we followed a bogus function pointer from managed code (bug #332866).
8559
8560 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8561
8562         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
8563         replaces the generic_shared flag and will carry more information
8564         in the future.
8565
8566         * generic-sharing.c: Added mini_type_stack_size() which allows
8567         allows open types if given a generic sharing context.
8568         mini_get_basic_type_from_generic() takes a
8569         MonoGenericSharingContext* instead of a MonoCompile* now.
8570
8571         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
8572         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
8573         mini-sparc.c, mini-x86.c: Trivial changes required by the two
8574         changes above.  Just passing arguments through to the right
8575         places.
8576
8577 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8578
8579         * mini-arm.c: unify the call emission to emit_code_seq().
8580
8581 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
8582
8583         * tramp-arm.c: reduced the trampoline size.
8584
8585 2007-10-10  Mark Probst  <mark.probst@gmail.com>
8586
8587         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
8588         variable handling out of arch-specific code.
8589
8590 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
8591
8592         * mini-arm.c: implemented fast delegate dispatch.
8593
8594 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8595
8596         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
8597         that fp elimination is turned off if the space required by locals is too
8598         big. Fixes #331958.
8599
8600 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8601
8602         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
8603         ARM to the new style trampoline.
8604
8605 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
8608
8609         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
8610
8611 2007-10-09  Martin Baulig  <martin@ximian.com>
8612
8613         * debug-debugger.h
8614         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
8615         `field_info_offset_offset'.     
8616
8617 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
8618
8619         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
8620         removed more internal usage of the r11 register and made it available
8621         to the register allocator.
8622
8623 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8624
8625         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
8626         when sharing generics and treat type variables as references.
8627
8628 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8629
8630         * mini-ppc.c: started removing the internal uses of register r11
8631         to eventually allow the register allocator to manage it as an
8632         additional available register.
8633
8634 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8635
8636         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
8637
8638 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
8639
8640         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
8641         specific trampolines as they are not performance critical as a jump
8642         target (maybe align as before only for AOT code?). This saves about
8643         200 KB of native code on x86 for monodevelop startup.
8644
8645 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8646
8647         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
8648         monodevelop startup.
8649
8650 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
8653
8654         * mini-sparc.h mini-sparc.c: Implement IMT support.
8655
8656         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
8657         its smaller and doesn't clobber sparc_g1.
8658
8659         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
8660
8661 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8662
8663         * mini-ppc.c: optimized the size of the IMT thunks a bit.
8664
8665 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
8666
8667         * mini-ppc.c: implemented fast delegate invocation.
8668
8669 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
8670
8671         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
8672
8673 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8674
8675         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
8676         code to the new style trampoline in preparation for IMT support.
8677
8678 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8679
8680         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
8681         systems already. This also reduces the specific trampiline sizes and
8682         prepares for the use of r12 as the IMT identifier register.
8683
8684 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8685
8686         * mini-mips.h: endianess fix (simplified from a patch by
8687         Thomas Kunze <thommy@tabao.de>, bug #323737).
8688
8689 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8690
8691         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
8692         to access ucontext fields and enable netbsd support
8693         (partially from Magnus Henoch <mange@freemail.hu>).
8694
8695 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8696
8697         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
8698         use the preprocessor from the CPP env var if it is set.
8699
8700 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8701
8702         * mini-trampolines.c: fixed an assertion and moved it earlier in the
8703         code, before interface_offset gets used.
8704
8705 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
8706
8707         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
8708         mono_class_setup_vtable () before accessing klass->vtable.
8709
8710 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
8711
8712         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
8713         hackish.
8714
8715 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8716
8717         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
8718         IMT slots (this saves hundreds of KB of memory in programs like
8719         IronPython and Monodevelop).
8720
8721 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8722
8723         * mini.c: print the delegate counter.
8724
8725 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
8726
8727         * mini-x86.c: make it easier to enable the debugging code for IMT
8728         slots.
8729
8730 2007-09-28  Martin Baulig  <martin@ximian.com>
8731
8732         * debug-debugger.h
8733         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
8734         `mono_method_klass_offset' and `mono_method_token_offset'.
8735
8736 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8737
8738         * mini.c: First generics sharing implementation.  Can only share
8739         in very simple cases.  If sharing doesn't work it falls back to
8740         dedicated compilation.
8741
8742         * mini.h: Flag in MonoCompile to specify whether generic
8743         compilation is shared.  Flags enum for marking which generic inst
8744         of a context is used.  Prototypes for helper functions.
8745
8746         * generic-sharing.c: Helper functions for generic method sharing.
8747
8748         * optflags-def.h: Optimization flag (gshared) for enabling generic
8749         method sharing added.
8750
8751         * Makefile.am: generic-sharing.c added.
8752
8753 2007-09-19 Daniel Nauck <dna@mono-project.de>
8754
8755         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
8756
8757 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
8758         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
8759         fixes bug 325507.
8760
8761 2007-09-19  Martin Baulig  <martin@ximian.com>
8762
8763         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
8764         mono_debug_cleanup() is now part of mono_cleanup().
8765
8766 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * driver.c (mono_main): Fix a warning.
8769
8770 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * aot-compiler.c: Optimize various parts when processing large assemblies.
8773         Fixes ##325568.
8774
8775         * mini.c (mono_patch_info_hash): Improve hash function.
8776
8777 2007-09-14  Jonathan Chambers <joncham@gmail.com>
8778
8779         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
8780         
8781         Code is contributed under MIT/X11 license.
8782
8783 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8784
8785         * mini.c (mini_init): Fix a leak.
8786
8787         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
8788
8789 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8790
8791         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
8792
8793 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8794
8795         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
8796
8797 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
8798
8799         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
8800         variance tests.
8801
8802         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
8803
8804         * mini.c (handle_alloc): Enable managed allocators in AOT code.
8805
8806         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
8807
8808         * aot-runtime.c (decode_patch_info): Ditto.
8809
8810 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8811
8812         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
8813         static case. Cache delegates in architecture specific code, 
8814         based on number of parameters.
8815         
8816         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
8817         in architecture specific code, based on number of parameters.
8818         
8819         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
8820         caching happen in architecture specific code now.
8821         
8822         Code is contributed under MIT/X11 license.
8823
8824 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8825
8826         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
8827         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
8828         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
8829
8830         Code is contributed under MIT/X11 license.
8831
8832 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
8833         * mini.c: (mono_thread_abort) Fixed bug #82416.
8834
8835 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8836
8837         * mini.: hook the new managed GC allocation feature into the JIT.
8838
8839 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
8840
8841         * mini.c: implementation for the new runtime tls opcode.
8842
8843 2007-09-11  Martin Baulig  <martin@ximian.com>
8844
8845         * debug-debugger.h
8846         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
8847         `mono_method_inflated_offset'.
8848
8849 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
8850
8851         * driver.c mini.h mini.c: Add a new devel command line option for injecting
8852         async exceptions into a method.
8853
8854         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
8855         purpose of testing whenever the unwinder works at every instruction.
8856
8857 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
8858
8859         * mini.c: check accessibility of method used in ldftn (fixes
8860         bug #82635).
8861
8862 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
8863
8864         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
8865
8866         * inssel.brg: Fix a warning.
8867
8868 2007-09-03  Martin Baulig  <martin@ximian.com>
8869
8870         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
8871         now takes the `main_method' as argument.
8872
8873 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
8874
8875         * cpu-sparc.md (endfilter): Add missing src1:i argument.
8876
8877 2007-08-30  Jonathan Chambers <joncham@gmail.com>
8878
8879         * driver.c: include the cil-coff.h header on Windows.
8880         
8881         Code is contributed under MIT/X11 license.
8882
8883 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
8884
8885         * mini.c, driver.c: don't include the cil-coff.h header.
8886
8887 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8888
8889         * mini.c: flag places that needs fixes fo soft-float support.
8890
8891 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
8892
8893         * mini.h, inssel-float.brg: fix soft-float constant loads on big
8894         endian systems (partially from Dean Jenkins, bug #81924).
8895
8896 2007-08-28  Mark Probst  <mark.probst@gmail.com>
8897
8898         * mini.c (check_linkdemand): Remove embedded reference object in
8899         call to LinkDemandSecurityException.
8900         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
8901         with an IntPtr instead of a reference object.
8902
8903 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
8904
8905         * mini.c (handle_initobj): Handle alignment properly.
8906
8907         * inssel.brg (mini_emit_memset): Ditto. 
8908
8909         * inssel.brg (mini_emit_memcpy): Ditto. 
8910
8911         * inssel-sparc.brg: Ditto.              
8912
8913         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
8914
8915 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
8916
8917         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
8918         exceptions raised in unmanaged code. Fixes part of #82594.
8919
8920 2007-08-24  Mark Probst  <mark.probst@gmail.com>
8921
8922         * mini.c (mono_method_to_ir), declsec.c
8923         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
8924
8925 2007-08-22  Martin Baulig  <martin@ximian.com>
8926
8927         * debug-mini.h
8928         (MonoDebuggerThreadInfo): New typedef.
8929         (mono_debugger_thread_table): New global variable.
8930         (mono_debugger_thread_created): New public function.
8931         (mono_debugger_thread_cleanup): New public function.
8932
8933         * debug-debugger.h
8934         (MonoDebuggerInfo):
8935         - removed `get_current_thread' and `lookup_assembly'.
8936         - removed `data_table'.
8937         - added `thread_table'.
8938
8939         * mini.c
8940         (mono_thread_start_cb): Call mono_debugger_thread_created().
8941         (mono_thread_attach_cb): Likewise.
8942         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
8943         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
8944         initial domain.
8945
8946         * driver.c (mono_main): Move mono_debug_init() up, before calling
8947         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
8948
8949 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8950
8951         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
8952         together when passing several arguments of type double (gives a small
8953         speedup and saves a few bytes of generated code).
8954
8955 2007-08-20  Jb Evain  <jbevain@novell.com>
8956
8957         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
8958
8959 2007-08-20  Jb Evain  <jbevain@novell.com>
8960
8961         * mini.c (mono_method_to_ir): throw MethodAccessException
8962         and FieldAccessException instead of InvalidProgramException.
8963
8964 2007-08-20  Mark Probst  <mark.probst@gmail.com>
8965
8966         * mini.c: CoreCLR security checks.
8967
8968         * mini.h: Removed MonoSecurityMode (moved to
8969         metadata/security-manager.h) and mono_security_mode global var
8970         (replaced by set/get functions in security-manager.h).
8971
8972         * driver.c: Added "core-clr-test" security mode for testing.  Used
8973         set-function for setting security mode.
8974
8975 2007-08-17  Mark Probst  <mark.probst@gmail.com>
8976
8977         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
8978         the new jit_info_table.
8979
8980         * driver.c: Test code for the new jit_info_table (enabled by the
8981         define MONO_JIT_INFO_TABLE_TEST).
8982
8983 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
8984
8985         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
8986         detection of call <REG> instruction sequence. Fixes build on freebsd.
8987
8988 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
8989
8990         * mini-exceptions.c: Fix a warning.
8991
8992 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
8993
8994         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
8995         stack overflow handling code on amd64 too.
8996
8997         * mini-exceptions.c (mono_setup_altstack): Make this use 
8998         mono_thread_get_stack_bounds ().
8999
9000         * mini-x86.h: Disable sigaltstack on solaris x86.
9001
9002 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9003
9004         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9005
9006 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9007
9008         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9009
9010 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9013
9014         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9015
9016 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9017
9018         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9019         due to alignment.
9020
9021 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9022
9023         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9024         to be emitted (bug #82281).
9025
9026 2007-08-01  Martin Baulig  <martin@ximian.com>
9027
9028         Merged the `debugger-dublin' branch.
9029
9030         * debug-debugger.h (MonoDebuggerInfo):
9031         Removed the `old_*' compatibility entries.
9032         Added `debugger_version' and `data_table'.
9033         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9034         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9035
9036         * debug-mini.c
9037         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9038         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9039         instead of a `gconstpointer'.
9040         (mono_debugger_insert_method_breakpoint): Return a
9041         `MonoDebugMethodAddressList *'.
9042
9043 2007-06-28  Martin Baulig  <martin@ximian.com>
9044
9045         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9046
9047 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9048
9049         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9050         __builtin_frame_address () since it is broken on older gcc versions.
9051
9052 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9053
9054         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9055         on the stack overflow handling and made the managed stack overflows
9056         catchable in most cases using soft guard pages.
9057         * exceptions-x86.c: added code to restore the protection in the soft
9058         guard pages at the end of exception handling.
9059
9060 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9061
9062         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9063
9064 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9065
9066         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9067         exception handling.
9068
9069 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9070
9071         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9072         signal handling support until it has been ported to the new mechanism.
9073         * mini.c: fixed stack overflow detection and use the new
9074         architecture code  to handle signals on the altstack.
9075
9076 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9077
9078         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9079         stack overflows on the alt stack.
9080
9081 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9082
9083         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9084         stack overflows on the alt stack.
9085
9086 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9087
9088         * exceptions-ppc.c: cleanup preparing for altstack support.
9089
9090 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9091
9092         * exceptions-arm.c: cleanup preparing for altstack support.
9093
9094 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9095
9096         * mini.c (print_jit_stats): Output hazard pointer stats.
9097
9098 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9099
9100         * driver.c, mini.c: Replaced security mode flags with a single
9101         enum variable.
9102
9103 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9104
9105         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9106
9107 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9108
9109         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9110         (which doesn't do anything yet) for activating Core CLR
9111         (Silverlight) security.
9112
9113 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9114
9115         * mini-codegen.c: work around a possible gcc bug on arm.
9116
9117 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9118
9119         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9120         message for platforms that don't support AOT compilation.
9121
9122 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9123
9124         * mini.h, mini.c, driver.c: temporary smcs hack.
9125
9126 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9127
9128         * mini-arm.h, mini-arm.c: arm EABI fixes.
9129
9130 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9131
9132         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9133         case.
9134
9135         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9136         trampolines taking a method argument.
9137
9138         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9139
9140         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9141         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9142
9143         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9144         JIT compilation throws an exception. Fixes #82050.
9145
9146 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9147
9148         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9149         with the MONO_EXCEPTION_ defines.
9150
9151 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9154         #82117.
9155         
9156         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9157         the cause of an assertion.
9158
9159 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9160
9161         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9162         removed.
9163
9164 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9165
9166         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9167         assert. Should fix #82103.
9168
9169 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9170
9171         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9172         here too. Fixes #82095.
9173
9174         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9175         addresses.
9176
9177         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9178
9179         * mini-amd64.h: Enable IMT for amd64.
9180         
9181         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9182
9183 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9184
9185         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9186
9187 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9188
9189         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9190         as soon as check_linkdemand sets an exception_type.
9191
9192 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9193
9194         * mini-x86.c: fixed offsets for IMT call sequence.
9195         * mini-x86.h: enable IMT again.
9196
9197 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9198
9199         * trace.c (mono_trace_enter_method): Decode MonoType too.
9200
9201         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9202
9203         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9204
9205         * mini-amd64.c: Add preliminary IMT implementation.
9206         
9207 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9208
9209         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9210         understand the new IMT-base interface invocation (thanks to
9211         Daniel Nauck for the report and the remote debugging session).
9212
9213 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9214
9215         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9216
9217 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9218
9219         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9220
9221 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9222
9223         * mini-trampolines.c: implement AOT IMT support.
9224         * mini-x86.h: enable IMT support for wider testing.
9225
9226 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9227
9228         * inssel.brg (emit_imt_argument): Add aot support here.
9229
9230         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9231
9232 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9233
9234         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9235         of the IMT implementation, partially from massi, with my
9236         implementation of the bsearch sequence. Disabled by default until
9237         the AOT code is implemented.
9238
9239 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9240
9241         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9242
9243         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9244
9245 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9246
9247         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9248         arch-independent IMT JIT code from Massimiliano
9249         Mantione (massi@ximian.com) with small cleanups from me.
9250
9251 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9252
9253         * Makefile.am: fix svn invocation to get the svn revision to be
9254         independent of the local language (build fix).
9255
9256 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9257
9258         * mini.c (inline_method): Reset cfg->exception_type if the
9259         inlining is aborted.  Fixes: 82049.
9260
9261 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9262
9263         * mini.c: remove assert from exception handling code when exception_ptr
9264         is not set.
9265
9266 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9267
9268         * mini.c (mono_codegen): Add an assert.
9269
9270         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9271         enter and leave code.
9272         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9273
9274 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9275
9276         * mini-ppc.c: fixed memory corruption for localloc(0)
9277         (bug #81852).
9278
9279 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9280         
9281         * mini.c: Fix warnings.
9282
9283 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9284
9285         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9286         to emit better double->int conversions.
9287
9288 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9289
9290         * mini.c: the provided Min/Max optimizations are valid for unisgned
9291         ints.
9292
9293 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9294
9295         * 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
9296
9297 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9298
9299         * mini.c (mono_running_on_valgrind): Add support for reporting the
9300         method and  its boundaries to valgrind.
9301
9302 2007-06-28  Martin Baulig  <martin@ximian.com>
9303
9304         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9305
9306 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9307
9308         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9309
9310         * generic.2.cs: Add new test case.
9311
9312 2007-06-25  Martin Baulig  <martin@ximian.com>
9313
9314         Merged the `debugger-dublin' branch.
9315
9316         * debug-mini.c
9317         (mono_debugger_insert_method_breakpoint): New public method.
9318         (mono_debugger_remove_method_breakpoint): Likewise.
9319         (mono_debugger_check_breakpoints): New static method.
9320         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9321
9322         * debug-debugger.h (MonoDebuggerInfo):
9323         Renamed (to keep backward compatibility in the vtable):
9324         `insert_breakpoint' -> `old_insert_breakpoint'.
9325         `remove_breakpoint' -> `old_remove_breakpoint'.
9326         `create_string' -> `old_create_string'.
9327         `lookup_class' -> `old_lookup_class'.
9328         `lookup_type' -> removed; changed into a dummy field.
9329         `lookup_assembly' -> `old_lookup_assembly'.
9330         Added (same functionality, but different signature):
9331         `create_string', `lookup_class', `lookup_assembly'
9332         Added new:
9333         `get_method_addr_or_bpt', `remove_method_breakpoint',
9334         `runtime_class_init'.
9335
9336         * debug-debugger.c: Merged the `debugger-dublin' branch.
9337
9338 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9339
9340         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9341         well.
9342         (peephole_pass): Likewise.
9343
9344 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9345
9346         * driver.c: hopefully make setaffinity work also for ancient
9347         versions of linux.
9348
9349 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9350
9351         * driver.c : win32 build fix.
9352
9353 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9354
9355         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9356         processor if it is set.
9357
9358 2007-06-21  Martin Baulig  <martin@ximian.com>
9359
9360         * debug-mini.h: New file.
9361
9362         * debug-mini.c
9363         (mono_debugger_insert_breakpoint_full): Moved here from
9364         ../metadata/mono-debug-debugger.c.
9365         (mono_debugger_remove_breakpoint): Likewise.
9366         (mono_debugger_breakpoint_callback): Likewise.
9367
9368 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9369
9370         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9371         changes in MonoGenericClass.
9372
9373 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9374
9375         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9376
9377 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9378
9379         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9380         removal of MonoGenericMethod.
9381
9382 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9383
9384         * mini-exceptions.c: hooks for the exception events profiling API.
9385
9386 2007-06-14  Randolph Chung  <tausq@debian.org>
9387
9388         * Makefile.ma: Add hppa target.
9389         * mini-arch.h: Include mini-hppa.h
9390         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9391         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9392         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9393
9394 2007-06-14  Randolph Chung  <tausq@debian.org>
9395
9396         * inssel.brg: Add rules for "chained" compare-branch operations so that
9397         a single compare op can affect multiple branches.  Adjust cost for
9398         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9399         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9400         cost for some rules so that they can more easily be overridden by
9401         per-arch rules (with fixes from lupus).
9402         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9403
9404 2007-06-13  Randolph Chung  <tausq@debian.org>
9405
9406         * mini-ops.h: Reorder branch ops so that they match the order of the
9407         corresponding CEE_* ops.  The code expects them this way.
9408         Add new ops for HPPA target.
9409         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9410
9411 2007-06-13  Randolph Chung  <tausq@debian.org>
9412
9413         * mini-exceptions.c: Handle cases where the stack grows towards
9414         larger addresses.
9415         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9416
9417 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9418
9419         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9420         counter.
9421         * driver.c: explain where a non-matching corlib is found.
9422
9423 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9424
9425         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9426
9427 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9428
9429         * mini-exceptions.c: Generate a method profile leave event during
9430         an exception to ensure that the profiler gets notified.
9431
9432 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9435         branch.
9436
9437         * cpu-amd64.md: Add long_and/or/xor opcodes.
9438
9439 2007-06-06  Wade Berrier  <wberrier@novell.com>
9440
9441         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
9442         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
9443         length of instruction shr_imm (expected 8, got 10)
9444
9445 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
9446
9447         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
9448
9449 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9450
9451         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9452         MonoInternalHashTable again (fixed bug in the internal hash table
9453         code).
9454
9455 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9456
9457         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
9458         Have to figure out what makes it crash the SWF regression.
9459
9460 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
9461
9462         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
9463
9464 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9465
9466         * mini.c: optimize out the type check when storing null in a
9467         reference array.
9468
9469 2007-06-04  Mark Probst  <mark.probst@gmail.com>
9470
9471         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9472         MonoInternalHashTable.
9473
9474 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9475
9476         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
9477         signed integer methods.
9478
9479 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9480
9481         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
9482         permanently since the current approach doesn't work.
9483
9484 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9485
9486         * inssel.brg (stmt): Only call delegate->invoke_impl if 
9487         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
9488
9489 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9490
9491         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
9492         the sreg2==rdx case.
9493         
9494         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
9495         account if it contains a rex prefix.
9496         (peephole_pass): Handle OP_FMOVE as well.
9497
9498 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9499
9500         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
9501         as it causes regressions.
9502
9503 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
9504
9505         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
9506         static case as well.
9507
9508         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
9509
9510         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9511         (mono_arch_get_this_arg_from_call): Ditto.
9512
9513         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
9514
9515         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9516         invoke_impl field.
9517
9518         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9519         (mono_arch_get_this_arg_from_call): Ditto.
9520
9521         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
9522         
9523         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
9524         try to create optimized invoke code and use that for further invocations. 
9525         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
9526
9527         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
9528
9529 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
9530
9531         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
9532         sealed classes or methods.
9533         *devirtualization.cs: tests for the new optimization
9534
9535 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
9536
9537         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
9538         by the update_volatile () function.
9539
9540 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
9541
9542         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
9543         require it.
9544
9545         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
9546
9547 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
9548
9549         * mini.c: Add configure checks for header files.
9550         * mini-x86.c: Add configure checks for header files.
9551         * trace.c: Add configure checks for header files.
9552         * aot-runtime.c: Add configure checks for header files.
9553         * aot-compiler.c: Add configure checks for header files.
9554         * driver.c: Add configure checks for header files.
9555         * mini-codegen.c: Add configure checks for header files.
9556         
9557         Code is contributed under MIT/X11 license.
9558
9559 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
9562         icompare_imm -128 + op_iclt. Fixes #81703.
9563
9564 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
9567
9568 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9569
9570         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
9571         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
9572         so that all isinst checks now use "interface_bitmap".
9573
9574 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
9575
9576         * cpu-amd64.md (jmp): Fix a warning.
9577
9578         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
9579
9580         * basic.cs: Add new regression test.
9581
9582         * basic.cs: Remove test which is now in basic-long.cs.
9583
9584         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
9585
9586         * basic-long.cs: Add new test.
9587         
9588 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
9589
9590         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
9591
9592 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
9593
9594         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
9595
9596         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
9597         places.
9598         
9599         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
9600         throwing code a bit.
9601
9602         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
9603         the exception throwing code a bit.
9604
9605         * mini-x86.c (get_call_info): Allocate result from a mempool.
9606
9607 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
9608
9609         * aot-compiler.c (find_typespec_for_class): Fix the assert.
9610
9611         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
9612
9613         * mini.h (MonoCompile): Add 'token_info_hash' field.
9614
9615         * mini.c: Save token->method associations during compilation so the AOT 
9616         compiler can use it.
9617         
9618         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
9619         which reference generic classes and methods.
9620
9621 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
9622
9623         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
9624
9625         * aot-compiler.c (compile_method): Fix a typo in a comment.
9626
9627         * aot-runtime.c (decode_cached_class_info): Skip generic types.
9628
9629         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
9630         everything generic.
9631
9632         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
9633
9634 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
9635
9636         * mini.h (MonoCompile): Add 'args' field.
9637
9638         * mini.c (mono_compile_create_vars): Store variables representing the arguments
9639         into cfg->args.
9640
9641         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
9642
9643 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * mini.c (mono_compile_get_interface_var): Remove this unused function.
9646
9647         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
9648
9649         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
9650         opcodes for some opcodes.
9651
9652         * mini.h *.brg *.c: Use the new opcodes.
9653
9654 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9655
9656         * mini.h: Bumped aot revision.
9657
9658         * inssel.brg: modified code generation of type checks for interfaces
9659         to use the new "MonoClass.interface_bitmap" instead of the old
9660         "MonoClass.interface_offsets".
9661
9662 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
9663
9664         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
9665
9666 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
9667
9668         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
9669         64 bit platforms.
9670
9671 2007-04-27  Neale Ferguson <neale@sinenomine.net>
9672
9673         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
9674
9675 2007-04-27  Wade Berrier  <wberrier@novell.com>
9676
9677         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
9678         mini.h) to fix build.
9679
9680 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
9683         
9684         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
9685         causes the corlib unit tests to fail.
9686
9687 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
9688
9689         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
9690
9691         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
9692
9693         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
9694         opcodes to the comparison relations.
9695
9696         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
9697         opcodes to their types.
9698         
9699         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
9700
9701         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
9702         it in cfg->arch.cinfo.
9703
9704         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
9705
9706         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
9707         cfg->cil_offset_to_bb.
9708
9709 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
9710
9711         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
9712         created becase of initlocals.
9713
9714 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * mini-alpha.c cpu-alpha.md: More alpha port work from 
9717         Sergey Tikhonov <tsv@solvo.ru>.
9718
9719 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
9720
9721         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
9722
9723 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * cpu-s390.md (break): Correct the length of break instruction.
9726
9727 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9728
9729         * mini.c: fix a couple of soft-float issues and comments.
9730
9731 2007-04-15  Miguel de Icaza  <miguel@novell.com>
9732
9733         * trace.c (is_filenamechar): - is also a filename char.
9734
9735 2007-04-15  Neale Ferguson <neale@sinenomine.net>
9736
9737         * mini-s390.c: Correct checking for enum type in return value processing.
9738
9739 2007-04-14  Raja R Harinath  <rharinath@novell.com>
9740
9741         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
9742         (version.h): Makefile is in the build directory.
9743
9744 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
9745
9746         * mini-amd64.h: fix for assertion failure on Solaris/amd64
9747
9748 2007-04-11  Martin Baulig  <martin@ximian.com>
9749
9750         * mini.c (can_access_member): Fix handling of generic classes;
9751         fixes #81259.
9752
9753 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
9754
9755         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
9756
9757 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
9758
9759         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
9760
9761 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
9762
9763         * mini-codegen.c: make sure the right spill amount is
9764         used for fp or integer registers (fixes the float_sub_spill() on ppc).
9765
9766 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
9767
9768         * mini-ppc.c: fixes for the fp_branch_nan test.
9769
9770 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
9771
9772         * basic.cs: Comment out new test which still fails on ia64.
9773
9774 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9775
9776         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
9777
9778 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9779
9780         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
9781
9782 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
9783
9784         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
9785         on 64 bit machines. Fixes part of #80738.
9786
9787         * basic.cs: Add regression test.
9788
9789 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
9790
9791         * inssel.brg basic.cs: Revert previous change to fix build.
9792
9793         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
9794         platforms.
9795         
9796         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
9797
9798         * basic.cs: Add new regression test.
9799
9800 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
9801
9802         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
9803         many arguments.
9804
9805 2007-03-16  Neale Ferguson <neale@sinenomine.net>
9806
9807         * cpu-s390x.md: Correct length of break instruction.
9808
9809 2007-03-16  Neale Ferguson <neale@sinenomine.net>
9810
9811         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
9812         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
9813
9814 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
9815
9816         * *.c: Begin WIN64 port.
9817         * mini.c:  Use correct register in profiler.
9818         * mini-amd64.c: No inline assembly on Win64.
9819         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
9820         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
9821         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
9822         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
9823         mono_arch_ip_from_context for Win64.
9824         
9825         Contributed under MIT/X11 license.
9826
9827 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
9828
9829         * exceptions-amd64.c (seh_handler): Ditto.
9830
9831         * exceptions-x86.c (seh_handler): Fix a memory leak.
9832
9833 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
9834
9835         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
9836         mini-s390x.c: fixed peephole optimizations to deal
9837         correctly with 1 and 2 byte reload avoidance.
9838
9839 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
9840
9841         * cpu-s390.md, cpu-s390x.md: update localloc length.
9842
9843 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
9844
9845         * cpu-g4.md: added missing descriptions.
9846
9847 2007-03-14  Miguel de Icaza  <miguel@novell.com>
9848
9849         *  Makefile.am: Add support so the tail tests are not executed on
9850         PowerPC as that is a known limitation of the PowerPC port.
9851
9852 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
9853
9854         * runmdesc.bat:  Move to msvc directory.
9855         
9856 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
9857
9858         * runmdesc.bat:  Run executable that was produced by the current
9859         target and sent via an argument.
9860         
9861 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
9864         #81102.
9865
9866         * generics.2.cs: Add regression test.
9867
9868 2007-03-09  Wade berrier  <wberrier@novell.com>
9869
9870         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
9871
9872 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
9873
9874         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
9875         AOT code depends on this.
9876
9877 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
9878
9879         * mini.c: more precise tracking of types in the eval stack
9880         (part of fix for bug #81044).
9881
9882 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
9883
9884         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
9885
9886         * aot-compiler.c (encode_patch): Remove an obsolete comment.
9887
9888 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
9891
9892         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
9893
9894 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
9895
9896         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
9897         a pointer on 64 bit systems. Fixes #80190.
9898
9899         * iltests.il: Add new regression test.
9900
9901 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9902
9903         * mini.c: inline a constant for Environment.IsRunningOnWindows.
9904
9905 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
9906
9907         * trace.c: Remove an erroneous alignemnt check when tracing.
9908           Fixes --trace on OSX86.
9909
9910 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
9911
9912         * mini-$(arch).h: initialize SP in context for all the archs.
9913
9914 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
9915
9916         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
9917         regressions in the thread tests.
9918
9919 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
9922         - fixed implementation of LOCALLOC opcode
9923         - implemented non-un compare for floats
9924         - code cleanup
9925         - implementation of FDIV and CKFINITE opcodes
9926         - fixes for latest mono updates
9927         - additional arch opcodes
9928
9929 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
9930
9931         * Makefile.am: simplify and merge rules for cross-compilation.
9932
9933 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
9934
9935         * local-propagation.c: Actually *apply* the fix for bug 80591...
9936
9937 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
9938
9939         * mini-exceptions.c: backuot part of the last change
9940         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
9941
9942 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
9943         * inssel.brg: Fix bug 59286.
9944
9945
9946 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
9947
9948         * mini-exceptions.c: patch from Zoltan to correctly check for
9949         stack boundaries (using the stack register, not the frame register),
9950         fixes bugs #80724, #79717.
9951
9952 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
9953
9954         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
9955         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
9956
9957         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
9958         presence of frame pointer elimination.
9959
9960 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
9961         
9962         * mini-x86.h: NetBSD UCONTEX_REG defines.
9963
9964 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
9965
9966         * inssel-amd64.brg: Fix amd64 build.
9967
9968 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
9969
9970         * mini.h: remove extern to workaround what looks likes gcc bug 26905
9971         on amd64.
9972
9973 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
9976         ends.
9977
9978         * mini-<ARCH>.c: Use mono_is_regsize_var ().
9979
9980 2007-01-30 Mark Mason <mason@broadcom.com>
9981
9982            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
9983            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
9984            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
9985            beginning support for CEE_JMP [not quite working yet]
9986            * tramp-mips.c: LMF handling now works
9987         
9988 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
9991
9992         * mini.h (NULLIFY_INS): New macro.
9993
9994 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9995
9996         * mini.c: statistical profiler fix for windows, patch
9997         from Tor Lillqvist (tml@novell.com).
9998
9999 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10000         * local-propagation.c: Fix bug 80591.
10001
10002 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10003
10004         * Makefile.am: put back the --export-dynamic option as with
10005         the previous gmodule flags (thanks to Robert Jordan).
10006
10007 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10008
10009         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10010
10011         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10012         simplify and speed up the local register allocator. Also rename some fields
10013         like iassign->vassign.
10014         
10015         * regalloc.c: Remove some functions which are no longer used since their
10016         inlined version is in mini-codegen.c.
10017         
10018         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10019
10020         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10021
10022 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10023
10024         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10025         narrowing. Fixes #80622.
10026
10027         * iltests.il: Add new regresssion test. 
10028
10029 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10030
10031         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10032         debug-debugger.c, debug-debugger.h: warning fixes.
10033         * driver.c: updated copyright year and made it fit in one line.
10034
10035 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10036
10037         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10038
10039 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10040
10041         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10042
10043         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10044
10045         * iltests.il: Add new test for bug #80507.
10046
10047 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10048
10049         * mini-arm.h: use soft-float also on vfp for now.
10050
10051 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10052
10053         * mini.c: fix some more soft-float issues.
10054
10055 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10056
10057         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10058
10059 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10060         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10061         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10062         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10063
10064 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10065
10066         * mini-arm.c: typo fix.
10067
10068 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10069
10070         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10071
10072 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10073
10074         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10075         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10076
10077         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10078
10079         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10080
10081         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10082         
10083         * inssel.brg: Fix a warning.
10084
10085         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10086
10087         * abcremoval.c ssa.c ssapre.c: Update after this change.
10088         
10089         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10090
10091         * dominators.c (df_set): Use mono_bitset_union_fast.    
10092
10093 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10094
10095         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10096         mini-codegen.c: reduce relocations and memory usage for the cpu
10097         description.
10098
10099 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10102
10103         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10104         to reduce their size.
10105
10106 2007-01-19 Mark Mason <mason@broadcom.com>
10107
10108         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10109         * mini-mips.c: more configuration macros, support long conditional branches, additional
10110         asserts, fix epilog instrumentation.
10111         * mini-mips.h: use standard stack walk
10112         * cpu-mips.md: increase size of div, rem and conditional branches
10113         
10114 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10115
10116         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10117         to cpu spec data.
10118
10119 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10120
10121         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10122         (compile_method): Ditto.
10123
10124         * aot-runtime.c (decode_klass_info): Ditto.
10125
10126         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10127         needed by the code generated by inssel.brg. Also fix a warning.
10128
10129 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10130
10131         * mini.c: deal with enums that become genericinsts by
10132         being nested in a generic class (bug #79956).
10133
10134 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10135
10136         * mini.c: match the generic definition to check for
10137         private access with generic types (bug #78431).
10138
10139 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10140
10141         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10142         to make life easier for people cross-compiling that insist on not
10143         using scratchbox.
10144
10145 2007-01-17 Mark Mason <mason@broadcom.com>
10146
10147         * inssel-long.brg: patch to deal with mips missing flags
10148         * inssel-long32-mips.brg: implement overflow checks
10149         * insset-mips.brg: implement overflow checks
10150         * mini-mips.h: implement conditional exception handling
10151         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10152           Remove unused code, minor cleanups.
10153         * exceptions-mips.c: minor cleanups
10154         * mini-ops.h: add mips conditional exception ops
10155         * cpu-mips.md: add mips conditional exception ops
10156
10157         
10158 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10159
10160         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10161         to deal with mips missing of flags.
10162
10163 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10164
10165         * exceptions-ppc.c: execute fault handlers.
10166
10167 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10168
10169         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10170
10171 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10172
10173         * mini.c: handle also floating point values in initialize_array.
10174
10175 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10176
10177         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10178         array initialization and make it conditional on the intrins option.
10179
10180 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10181
10182         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10183         relocations and put the patch info names close to the enum definition.
10184
10185 2007-01-15 Mark Mason <mason@broadcom.com>
10186
10187         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10188
10189 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10190
10191         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10192
10193 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10194
10195         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10196
10197 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10198
10199         * Makefile.am: distribute the mips sources.
10200
10201 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10202
10203         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10204         directly.
10205
10206 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10207
10208         * cpu-x86.md: back out for now as this triggers other regressions.
10209
10210 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10211
10212         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10213         to eax:edx, so ecx can't get allocated to them (bug #80489).
10214
10215 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10216
10217         * mini.c, mini-exceptions.c: enabled running fault handlers
10218         (bug #80469).
10219
10220 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10221
10222         * driver.c: If nothing fail, do not use the string "failed",
10223         because it makes it very annoying to view test result logs on the
10224         web. 
10225
10226 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10227
10228         * debug-debugger.c (mono_debugger_main): Rename "main" to
10229         "main_method" to prevent a warning.
10230
10231         Remove a warning for unused field.
10232
10233 2006-12-28  Martin Baulig  <martin@ximian.com>
10234
10235         * debug-debugger.c
10236         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10237
10238 2006-12-22  Martin Baulig  <martin@ximian.com>
10239
10240         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10241         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10242         seperate `.mdb_debug_info' section, so we can access it from the
10243         debugger even if the binary is stripped.
10244
10245         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10246         from the `.mdb_debug_info' here to prevent the linker from
10247         removing that section.
10248
10249         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10250         mdb-debug-info64.s.
10251
10252 2006-12-19  Robert Jordan  <robertj@gmx.net>
10253
10254         * mini-x86: enable the code to return small structures in
10255         registers for FreeBSD as well. Fixes bug #80278.
10256         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10257
10258 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10259
10260         * mini-x86.c: align the stack when calling the profiler
10261         function instrumenting the prolog (on OSX).
10262
10263 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10264
10265         * mini.c: emit a break opcode where Debugger.Break () is called.
10266
10267 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10268
10269         * mini.c (mono_method_to_ir): Provide useful information on this
10270         assert, to prevent others from debugging like I did.
10271
10272 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10273
10274         * mini.c: enable code which was incorrectly commented
10275         (bug #80235).
10276
10277 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10278
10279         * mini-x86.c: enable on OSX, too, the code to return small
10280         structures in registers.
10281
10282 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10283
10284         * mini-x86.c: remove the use of the dynamic code manager here, too.
10285
10286 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10287
10288         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10289         mono_debugger_create_notification_function() to use
10290         mono_global_codeman_reserve () instead of a dynamic code manager.
10291
10292 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10293
10294         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10295         ves_array_element_address() jit icall and use a generated
10296         managed method instead (which is about 4 times faster for a rank 3
10297         array access).
10298
10299 2006-11-29  Mark Mason  <mason@broadcom.com>
10300
10301         * basic-calls.cs: additional tests for passing
10302         structures as function arguments.
10303
10304 2006-11-29  Mark Mason  <mason@broadcom.com>
10305
10306         * mini-mips.h: disable custom exception handling
10307         * mini-mips.c: throw/rethrow should use jalr to call
10308         exception stubs.  Fixed bug with passing structures
10309         by value. More support for tracing floating point
10310         functions.
10311
10312 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10313
10314         * mini.c: fixed typo in the soft-float ldind.r4 handling
10315         (bug #80086).
10316
10317 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10318
10319         * mini.c, mini.h, driver.c: added --runtime command line
10320         option to select a different runtime than the autodetected one.
10321         * jit.h: added API for embedders to initialize with a specific
10322         runtime version.
10323
10324 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10325
10326         * mini.c: handle also boxing of r4 values (bug #80024).
10327
10328 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10329
10330         * mini-ppc.c: force indirect calls until we reserve
10331         enough address space for all the generated code.
10332
10333 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10334
10335         * exceptions-arm.c: workaround bugs in the libc definition
10336         of struct ucontext.
10337
10338 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10339
10340         * inssel.brg: fixes from me and Mark Mason.
10341
10342 2006-11-23  Dick Porter  <dick@ximian.com>
10343
10344         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10345         semaphore display now we've fixed the initial value
10346
10347 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10348
10349         * inssel.brg: partially revert the last change to fix the build.
10350
10351 2006-11-21  Mark Mason  <mason@broadcom.com>
10352
10353         * inssel.brg: Add and use compare-and-branch macros to support
10354         architectures that do not have condition code registers (ie. MIPS).
10355         * *-mips.{c,brg,md}: Fix copyright statements
10356
10357 2006-11-20  Mark Mason  <mason@broadcom.com>
10358
10359         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10360         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10361         * mini.h: Added declaration for mono_print_ins()
10362         * mini-codegen.c: added ins_spec initializer for MIPS
10363         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10364         vreg to be virtual and hreg to be non-virtual.
10365         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10366         is not yet working/implemented correctly.
10367         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10368         non-static, fixup calls to print_ins() from other parts in the file.
10369
10370 2006-11-20  Mark Mason  <mason@broadcom.com>
10371
10372         * basic-calls.cs: added tests for passing structures as arguments
10373         to calls.
10374
10375 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10376
10377         * inssel-long32.brg: optimize signed division by power of two.
10378
10379 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10380
10381         * mini-arm.c: added support for interworking with thumb code
10382         (mono must be still be built using the ARM instruction encoding).
10383
10384 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10385
10386         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10387         verifier has different rules for it.   Fixes a few verifier issues
10388         in the test suite.
10389
10390         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10391         at the end, so people know what happened.
10392
10393 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10394
10395         * brach-opts.c: in optimize_exception_target() make sure we
10396         are in a catch clause (fixes bug #79871).
10397
10398 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10399
10400         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10401         more soft-float support fixes.
10402
10403 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10404
10405         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10406         that are passed half on the stack and half in registers.
10407
10408 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10409
10410         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10411         more mips integration work from Mark E Mason 
10412         <mark.e.mason@broadcom.com>.
10413
10414 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10415
10416         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10417         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10418         tramp-mips.c: added sources for the mips port, not
10419         integrated in the build yet. Contributed by
10420         Mark E Mason <mark.e.mason@broadcom.com>.
10421
10422 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10423
10424         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10425
10426 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10427
10428         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10429         put the soft-float rules in its own file since it seems to
10430         break s390 compilation.
10431
10432 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10433
10434         * mini-arm.c: fixed wrnings.
10435
10436 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10437
10438         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10439         inssel-arm.brg: ARM support for soft-float.
10440
10441 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10442
10443         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
10444         loads and stores of 32 bit fp values.
10445
10446 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
10449
10450         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
10451         works. Fixes #79852 and #79463.
10452
10453 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10454
10455         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
10456         more soft-float support WIP and fixes.
10457
10458 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
10459
10460         * mini-arm.c: some VFP updates.
10461
10462 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10463
10464         * mini-exceptions.c: 0 is a valid local var offset in some
10465         architectures, don't assert (bug #78508).
10466
10467 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
10468
10469         * exceptions-arm.c: fixed off by one error in stack walk code.
10470
10471 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10472
10473         * mini.h, mini.c: more precise tracking of type load exceptions.
10474
10475 2006-11-03  Robert Jordan  <robertj@gmx.net>
10476
10477         * Makefile.am: [WIN32] Add monow.exe target.
10478         * driver.c: [WIN32] Don't detach the console when debugging.
10479         Fixes bug #79797.
10480         
10481 2006-10-30  Miguel de Icaza  <miguel@novell.com>
10482
10483         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
10484
10485 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * aot-compiler.c (emit_method_info): Add a case missed earlier.
10488
10489         * driver.c (mini_regression): Fix --regression with AOT.
10490
10491         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
10492
10493 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
10494
10495         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
10496
10497         * mini-sparc.h: Don't use sigaction on sparc/linux.
10498
10499         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
10500
10501         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
10502
10503         * mini-exceptions.c: Add proper include files for getpid ().
10504
10505 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
10506
10507         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
10508         address instead of a MonoJitInfo* to avoid decoding the exception info for the
10509         method.
10510
10511         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
10512         name cache to reduce its size.
10513
10514         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10515
10516 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10517
10518         * mini-x86.c: Save/restore the current LMF structure more efficiently using
10519         the mono_lmf TLS variable.
10520
10521         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
10522         trampoline lmf frames.  
10523
10524         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
10525
10526 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
10527
10528         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
10529         the mono_lmf TLS variable.
10530
10531         * mini-exceptions.c: Access the LMF structure through accessors.
10532
10533         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
10534         variable instead of in jit_tls->lmf.
10535
10536         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
10537         
10538         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
10539         trampoline lmf frames.
10540
10541         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
10542
10543 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10544
10545        * mini.c trace.c mini-x86.c: Revert these too.
10546         
10547        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
10548        signature change.
10549
10550 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
10551
10552         * genmdesc.c: removed now dead code.
10553
10554 2006-10-09  Robert Jordan <robertj@gmx.net>
10555
10556         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
10557
10558 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10559
10560         * mini.h: do not leave gaps in the opcode values.
10561
10562 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
10563
10564         * jit-icalls.h: flag functions as internal here, too.
10565
10566 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
10567
10568         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
10569         functions with the internal attribute.
10570
10571 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
10572
10573         * aot-compiler.c: fclose the file descriptor in the profile read loop.
10574
10575 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
10576
10577         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
10578         for soft-float.
10579
10580 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
10581
10582         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
10583         tail calls as on other platforms.
10584
10585         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
10586
10587         * iltests.il: Add a few tailcall tests.
10588
10589 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10590
10591         * driver.c: fix loop for old compilers (bug #79521).
10592
10593 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
10594
10595         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
10596
10597         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
10598
10599         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
10600         metadata without any code.
10601
10602         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
10603         more precise debugging information using gdb.
10604
10605 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
10606
10607         * inssel-ia64.brg: Make the helper methods static.
10608
10609 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10610
10611         * inssel-x86.brg: make the helper methods static.
10612
10613 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
10614
10615         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
10616
10617 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10618
10619         * mini.c: updates for monoburg changes.
10620         * inssel.brg: make a few helper functions static as they should.
10621
10622 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
10623
10624         * Makefile.am: Move mini-codegen.c to common_sources.
10625
10626 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10627
10628         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
10629         instructions.
10630         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
10631         mini-ppc.h: port to use the common local register allocator.
10632
10633 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10634
10635         * mini.h: Remove the comment too then.
10636
10637 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
10638
10639         * mini.h: put back backend.data which is to be used shortly and
10640         doesn't increase the size of MonoInst. If any 64 bit arch aligned
10641         pointers on 4 byte boundaries it'd have much bigger issues running
10642         and you can ifdef it out anyway.
10643
10644 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10645
10646         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
10647         MonoInst size by 4 bytes on 64 bit machines.
10648
10649 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10650
10651         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
10652         replacement with more meaningful field names. Arch maintainers, please
10653         check the assigned names are good enough for your arch.
10654
10655 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
10658         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
10659
10660 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10661
10662         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
10663         relocations and memory requirements, put the optimization flags
10664         definitions in their own file.
10665
10666 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
10669
10670         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
10671
10672 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
10675
10676 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
10677
10678         * inssel.brg: use the correct function to get the size of an item
10679         in an array, given an element class.
10680         * aot-compiler.c: do not access class->class_size directly.
10681
10682 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10683
10684         * mini.h, debug-mini.c: added a debugging function to print
10685         info about local variables and arguments in a jitted method.
10686
10687 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
10688
10689         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10690
10691         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
10692
10693 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10694
10695         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
10696         inner and outer loops when passing vtypes.
10697
10698 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
10699
10700         * mini-ppc.c: take into account the cpu errata for cache flushing
10701         which caused some random errors (bug #79381).
10702
10703 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
10706         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
10707
10708 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
10709
10710         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
10711         loaded.
10712
10713         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
10714         freebsd ports tree.
10715
10716         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
10717         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
10718
10719         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
10720         displacement.
10721
10722 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
10725
10726 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
10727
10728         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
10729         macro does not have to be changed during debugging.
10730
10731         * 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>.
10732
10733         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
10734
10735         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
10736         
10737         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
10738         MONO_ARCH_NO_EMULATE_MUL is defined.
10739
10740         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
10741
10742         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
10743
10744         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
10745
10746         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
10747         
10748 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
10749
10750         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
10751         stuff to mini-exceptions.c where it is used.
10752
10753         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
10754         setup code, the real one is in mini-exceptions.c.
10755
10756         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
10757         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
10758         some changes from the freebsd ports tree.
10759
10760         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
10761         constants.
10762         
10763         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
10764
10765 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
10766
10767         * mini.c: on Linux, check for /proc to be mounted
10768         (bug# 79351, novell bug#201204).
10769
10770 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
10771
10772         * mini.c: handle cases where pthread_attr_getstack() behaves
10773         incorrectly (bug #78096).
10774
10775 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
10776
10777         * mini-arm.c: support larger stack frames (bug #79272).
10778
10779 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
10780
10781         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
10782
10783         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
10784         tokens.
10785
10786         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
10787         mono_class_from_name () to find a class from its name.
10788
10789         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
10790
10791 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
10794
10795 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
10796
10797         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
10798
10799 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
10800
10801         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
10802         callinfo->trampoline.
10803
10804         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
10805         fixes #79271.
10806         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
10807         future.
10808
10809 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
10810
10811         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
10812
10813 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
10814
10815         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
10816         stats.method_trampolines, it is already done by the generic trampoline code.
10817
10818         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
10819         
10820 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
10821
10822         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
10823
10824         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
10825
10826         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
10827
10828         * mini.c (print_jit_stats): Print mscorlib mempool size too.
10829         
10830         * mini.c (print_jit_stats): Print new stats.
10831
10832         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10833
10834 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
10837         Address on two dimensional arrays. Fixes #78729.
10838
10839         * mini.h (MonoCompile): Add a 'skip_visibility' field.
10840
10841         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
10842         a method.
10843
10844         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
10845
10846         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
10847         #79130.
10848         
10849         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
10850         a race condition.
10851         (mini_get_ldelema_ins): Ditto.
10852
10853 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
10854
10855         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
10856         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
10857         Fixes #79213.
10858
10859 2006-08-29 Neale Ferguson <neale@sinenomine.net>
10860
10861         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
10862         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
10863
10864         * exceptions-s390x.c: Cosmetic change.
10865
10866         * tramp-s390.c: Fix warning.
10867
10868         * cpu-s390.md: Correct length of mul_imm.
10869
10870 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
10871
10872         * aot-compiler.c: added binary writer with ELF backend
10873         implementation (only on Linux/x86 for now).
10874
10875 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * Makefile.am: Don't run net 2.0 AOT tests.
10878
10879         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
10880         (mono_compile_assembly): Skip net 2.0 assemblies as well.
10881
10882         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
10883
10884 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
10885
10886         * aot-compiler.c: simplified and refactored the asm-writing code
10887         to allow different backends.
10888
10889 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10892
10893         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
10894         little. Share patches of type TYPE_FROM_HANDLE as well.
10895
10896         * mini.c (mono_patch_info_equal): New helper function.
10897         (mono_patch_info_hash): Ditto.
10898
10899         * aot-compiler.c (emit_method_code): Fix s390 build.
10900
10901         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
10902         is not handled because it is stored as a flag and not as a type ctor. Fixes
10903         #79016.
10904
10905 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10906
10907         * aot-compiler.c: Fix computation of GOT slot statistics.
10908         
10909         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
10910         Also remove support for not PIC AOT.
10911
10912         * mini.h: Bump AOT file format version.
10913
10914         * objects.cs: Add a test for #78990.
10915
10916         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
10917         (peter.dettman@iinet.net.au). Fixes #79087.
10918
10919         * basic-long.cs: Add a test for the above.
10920
10921 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
10922
10923         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
10924         
10925         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
10926         code somewhat.
10927
10928 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
10929
10930         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
10931         exceptions.
10932
10933 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
10934
10935         * mini.c: Don't verify COM proxy invoke calls
10936         
10937
10938 2006-08-10  Dick Porter  <dick@ximian.com>
10939
10940         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
10941         which process is holding semaphores locked.
10942
10943 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
10944
10945         * mini-ia64.c mini-amd64.c: Fix #79027.
10946
10947         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
10948
10949         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
10950
10951         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
10952         implicit arguments in a vararg call. Fixes #79027.
10953
10954 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
10955
10956         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
10957         (mono_get_array_new_va_signature): Ditto.
10958
10959 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
10960
10961         * aot-runtime.c: Call init_plt lazily.
10962
10963         * inssel-long.brg: Fix unsigned long->int conversion.
10964
10965         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
10966
10967         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
10968         that most data is now in the .rss/.data section.
10969
10970 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
10971
10972         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
10973
10974         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
10975
10976         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
10977
10978         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
10979
10980         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
10981         virtual call. Fixes #79010.
10982
10983         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
10984         and use the result as the this argument in the real call.
10985
10986         * generics.2.cs: Add a new test for #79010.
10987         
10988 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
10989
10990         * mini-x86.c: Fix a warning.
10991
10992         * aot-compiler.c: Add a bunch of statistics.
10993
10994         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
10995
10996 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
10997
10998         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
10999
11000 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11001
11002         * cpu-alpha.md inssel-alpha.brg mini-alpha.h mini-alpha.c exceptions-alpha.c tramp-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11003
11004 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11005
11006         * mini.c (mono_method_to_ir): Obtain the original method in the
11007         CIL stream and use this to perform validation.
11008
11009         Fixed: #78816
11010
11011 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11012
11013         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11014         (mono_arch_call_opcode): Ditto.
11015
11016         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11017         #78826.
11018
11019         * mini.c (mono_patch_info_dup_mp): New helper function.
11020         
11021         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11022         compilation. Fixes #78827.
11023
11024 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
11025
11026         * declsec.c: Use original security informations for
11027           MONO_WRAPPER_MANAGED_TO_MANAGED.
11028
11029 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11030
11031         * mini.c: Allow Com Interop methods/classes and
11032         don't verify COM wrapper calls
11033         
11034
11035 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11036
11037         * inssel-long32.brg: Fix long->i4 checked conversion.
11038
11039         * exceptions.cs: Add a test for the above.
11040
11041 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11042
11043         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11044
11045         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11046         leaks.
11047
11048         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11049         #78775.
11050
11051 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11052
11053         * mini.c: Fix solaris/x86 exception handling.
11054
11055         * Makefile.am: Get rid of $(ICU_LIBS).
11056
11057 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11058
11059         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11060         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11061         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11062
11063         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11064
11065         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11066         this function causes a SIGSEGV.
11067
11068 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11069
11070         * mini.c: Remove unused solaris/x86 includes.
11071
11072 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11073
11074         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11075
11076 2006-06-20  Jb Evain  <jbevain@gmail.com>
11077
11078         * cpu-g4.md: fix max length of start_handler instruction.
11079
11080 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11081         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11082
11083 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11084         * ssa.c: Fixed bug 78653 for SSA based deadce.
11085         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11086         MonoInst.flags, used in SSA based deadce.
11087         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11088         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11089
11090 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11091
11092         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11093         it can end up using non executable memory on ppc64 systems
11094         running ppc32 userspace (fix from Johannes Berg).
11095
11096 2006-06-14  Dick Porter  <dick@ximian.com>
11097
11098         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11099         4.1.1
11100
11101 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11102         * mini.c: Made so that inline is locally disabled if it would
11103         trigger a .cctor, because too many apps depend on this behavior
11104         (which seems to be also the one of the MS CLR).
11105
11106 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11107
11108         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11109         No idea why this worked before.
11110
11111         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11112         which branch to outer exception clauses since they could skip the
11113         inner finally clauses. Fixes #78633.
11114
11115         * exceptions.cs: Add a test for the above.
11116
11117         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11118         Fixes #78629.
11119
11120         * iltests.il: Add a test for the above.
11121
11122 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11123
11124         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11125         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11126
11127         * iltests.il: Add a test for the above.
11128
11129 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11132         
11133         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11134         methods as instrinsics.
11135
11136 2006-06-09  Wade Berrier <wberrier@novell.com>
11137
11138         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11139         (simple-cee-ops.h ssapre-mini-ops.h)
11140
11141 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11142
11143         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11144         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11145         instruction).
11146         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11147         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11148
11149 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11150
11151         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11152
11153 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11154
11155         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11156         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11157         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11158         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11159         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11160         of opcodes, so that bug 78549 should not happen again.
11161         * ssapre.c: Updated to use the renamed files.
11162
11163 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11164
11165         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11166         in OP_ATOMIC_EXCHANGE_I4.
11167
11168 2006-06-07  Wade Berrier <wberrier@novell.com>
11169
11170         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11171         in mono_debugger_create_notification_function)
11172
11173 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11174
11175         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11176         
11177         * mini.c (type_from_stack_type): Disable some changes which do not
11178         seem to work.
11179
11180         * driver.c: Reenable opts.
11181
11182         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11183         of the evaluation stack.
11184         
11185         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11186         evaluation stack trace at entry to the bblock.
11187
11188         * mini.c (merge_stacks): New function to perform verification of stack merges.
11189         Turned off by default.
11190
11191         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11192         STACK_MP.
11193         
11194 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11195
11196         * local-propagation.c: Fixed bug 78549.
11197
11198 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11199
11200         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11201
11202 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11203
11204         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11205         tramp-arm.c, tramp-ia64.c
11206         (mono_debugger_create_notification_function): Update signature to
11207         new signature and use new protocol for creating the notification
11208         function.  
11209
11210         Should fix the build.
11211
11212 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11213
11214         * exceptions-ppc.c (mono_jit_walk_stack)
11215         (ves_icall_get_frame_info): Fix the build
11216
11217 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11220
11221 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11222
11223         * il2tests.2.il: New file for generics CIL tests.  Add test for
11224         #78019.
11225         * Makefile.am: Update.
11226
11227         Fix #78019
11228         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11229         to nullable types.
11230
11231 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11232
11233         * aliasing.c: Fixed bug 78311.
11234
11235 2006-05-29  Martin Baulig  <martin@ximian.com>
11236
11237         * mini-exceptions.c (mono_find_jit_info): When computing the
11238         native offset, check whether we're actually inside the method's
11239         code; call mono_debug_print_stack_frame() to format the frame.
11240         (ves_icall_System_Exception_get_trace): Call
11241         mono_debug_print_stack_frame() to format the stack frame.
11242         (ves_icall_get_trace): Update to the new debugging API.
11243         (mono_jit_walk_stack_from_ctx): Likewise.
11244         (ves_icall_get_frame_info): Likewise.
11245
11246         * mini.c (get_method_from_ip): Use the new debugging API.
11247         (mono_print_method_from_ip): Likewise.
11248
11249         * exceptions-ppc.c
11250         (mono_jit_walk_stack): Use the new debugging API.
11251         (ves_icall_get_frame_info): Likewise.   
11252
11253 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11254
11255         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11256
11257 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11258
11259         * mini.c: Added "limitator" to inline for debugging.
11260
11261 2006-05-24  Martin Baulig  <martin@ximian.com>
11262
11263         * debug-debugger.c (mono_debugger_init): Create a private,
11264         malloc()-based code manager for the notification function and
11265         intentionally leak it on exit.  This fixes the crash-on-exit race
11266         condition.
11267
11268         * tramp-amd64.c
11269         (mono_debugger_create_notification_function): Added
11270         `MonoCodeManager *' argument.
11271
11272         * tramp-x86.c
11273         (mono_debugger_create_notification_function): Added
11274         `MonoCodeManager *' argument.
11275
11276 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11277
11278         * aliasing.c: Fixed 64 bit issue.
11279         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11280         default since all known bugs are fixed (one more time!).
11281
11282 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11283
11284         * mini.c: write barrier support.
11285
11286 2006-05-23  Martin Baulig  <martin@ximian.com>
11287
11288         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11289         check at the top of the file.
11290
11291 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11292
11293         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11294         reverting changes without reason and without changelog entries.
11295
11296 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11297
11298         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11299         to a few opcodes. Fixes #78439.
11300
11301         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11302         consistency with other archs.
11303
11304         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11305
11306 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11307
11308         * debug-debugger.c: fix the build.
11309
11310 2006-05-17  Martin Baulig  <martin@ximian.com>
11311
11312         * debug-debugger.c
11313         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11314         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11315         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11316         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11317
11318 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11321
11322 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11323
11324         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11325         MONO_TYPE_GENERICINST.
11326         
11327         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11328         MONO_TYPE_GENERICINST.
11329
11330 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11331
11332         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11333         #78325.
11334
11335 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11336
11337         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11338         mempool.
11339         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11340
11341 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11342
11343         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11344         mono_trace_cleanup ().
11345
11346         * iltests.il: Fix problem with the newly added test.
11347
11348         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11349         due to register constraints, free up the previous hreg. Fixes #78314.
11350
11351         * iltests.il: Add new test for #78314.  
11352
11353         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11354         Interlocked.Add. Fixes #78312.
11355
11356         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11357         
11358 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11359
11360         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11361
11362 2006-05-05  Martin Baulig  <martin@ximian.com>
11363
11364         * debug-mini.c (mono_debug_open_block): New method.
11365
11366         * mini-amd64.c
11367         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11368         the beginning of each basic block.
11369
11370         * mini-x86.c
11371         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11372         the beginning of each basic block.
11373
11374 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11375
11376         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11377         default until I understand why they break the build on amd64.
11378
11379 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11380
11381         * mini.c (mini_cleanup): Call mono_cleanup ().
11382
11383         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11384         errors.
11385
11386 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11387
11388         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11389         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11390         default since all known bugs are fixed, and I cannot reproduce bug
11391         77944... I'm asking Matt Hargett to test again after this commit.
11392
11393 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11394
11395         * mini-codegen.c: Fixed typo that thrashed inline.
11396
11397 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11398
11399         * dominators.c (compute_dominators): Avoid using a worklist since
11400         it is not correct in some cases. Instead, iterate over all bblocks as
11401         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11402
11403 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11404
11405         * mini.c (mono_jit_compile_method_inner): Use
11406         mono_prepare_exception_from_error that resets the value
11407         internally.
11408
11409 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11410
11411         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11412         
11413 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11414
11415         * aliasing.c: Fixed bug 78210.
11416
11417 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11418
11419         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11420         default until all their problems (or the ones they trigger) are fixed.
11421
11422 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11423
11424         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11425         
11426         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11427         as loaded only after resolving patches since that could invoke the same method.
11428
11429         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11430
11431         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11432         functions.
11433
11434         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11435         AOT loader.
11436
11437         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11438         stack.
11439
11440         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
11441         made from AOT code through the PLT table.
11442
11443         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
11444         holding the plt offset when a call is made to the aot plt trampoline.
11445         
11446 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11447
11448         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
11449         amd64 AOT support.
11450
11451         * Makefile.am (common_sources): Fix build breakage.
11452
11453         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
11454         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
11455         intra-assembly calls if possible.
11456         
11457         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
11458
11459         * mini-trampolines.c: Handle PLT entries.
11460
11461         * mini.c: Avoid creating a GOT var for calls.
11462
11463         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
11464         from mscorlib code.
11465
11466         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
11467         from mscorlib code.
11468
11469         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
11470         AOT code.       
11471
11472         * mini.h: Bump AOT file format version.
11473         
11474         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
11475         covers more cases.
11476
11477 2006-04-25  Martin Baulig  <martin@ximian.com>
11478
11479         * driver.c: Disable copyprop, consprop and inline when running
11480         inside the debugger.
11481
11482 2006-04-25  Martin Baulig  <martin@ximian.com>
11483
11484         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
11485         with `get_current_thread' and added `detach'.
11486         (MonoDebuggerMetadataInfo): Added `thread_size',
11487         `thread_tid_offset', `thread_stack_ptr_offset' and
11488         `thread_end_stack_offset'.
11489
11490 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11491
11492         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
11493         aot-runtime.c.
11494
11495         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
11496         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
11497
11498         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
11499
11500         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
11501
11502         * aot.c: Add support for ADJUSTED_IID.  
11503
11504 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11505
11506         * aot.c (emit_method_order): Don't align method_order_end.
11507
11508         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
11509         the interface ID changes.
11510
11511 2006-04-21  Dick Porter  <dick@ximian.com>
11512
11513         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
11514         cleaning up a thread.  Fixes the new part of bug 77470.
11515
11516 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
11517
11518         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
11519         to managed wrapper.
11520                      
11521 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11522
11523         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
11524         
11525         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
11526         SIGSEGV. Fixes #78072.
11527
11528         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
11529         unregister our SIGABRT handler.
11530
11531 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
11532
11533         * mini.c: Disabled inline where it can alter the call stack in a
11534         way visible from managed code.
11535         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
11536         default.
11537
11538 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
11539
11540         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
11541         on other platforms. Fixes #78089.
11542
11543 2006-04-13  Martin Baulig  <martin@ximian.com>
11544
11545         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
11546         determine whether we're inside the debugger.
11547
11548         * debug-debugger.h
11549         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
11550
11551 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11552
11553         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
11554         handler clauses. Fixes #78024.
11555
11556         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
11557         in the CALL_MEMBASE opcodes. Fixes #78088.
11558         (mono_arch_get_vcall_slot_addr): Ditto.
11559
11560 2006-04-10  Martin Baulig  <martin@ximian.com>
11561
11562         * debug-debugger.c: The thread handling code has now been moved
11563         into ../metadata/threads.c.
11564
11565 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11566
11567         * driver.c (mono_main): Fix --with-gc=none build.
11568
11569         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
11570         (mono_spillvar_offset_float): Ditto.
11571         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
11572         hreg, not when its !global, since on ia64, there is a third category: stacked
11573         registers.      
11574
11575 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
11576
11577         * mini.c: set MonoInst->klass for load field address and a few other
11578         places.
11579
11580 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11581
11582         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
11583
11584 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11585
11586         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
11587         the branch opt changes.
11588
11589 2006-04-06  Dick Porter  <dick@ximian.com>
11590
11591         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
11592         
11593         * wapihandles.c (mini_wapi_seminfo): 
11594         * driver.c (mono_main): Add semaphore info option
11595
11596 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
11599         branch optimization changes. Fixes #78009.
11600
11601 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11602
11603         * mini.c: ignore accessibility of methods in managed->native wrappers.
11604
11605 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
11608         
11609         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
11610
11611 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
11612
11613         * mini.c: Modify the branch optimizations to preserve the invariant that
11614         the entries inside the in_bb and out_bb arrays are unique.
11615         (mono_unlink_bblock): Avoid creation of new arrays.
11616
11617 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
11618
11619         * mini.c (mono_unlink_bblock): Fix regression caused by previous
11620         change (#77992).
11621
11622 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
11623
11624         * mini.c (optimize_branches): Remove the "optimizations" in
11625         the cbranch1/cbranch2 -> branch cases which were causing several
11626         problems in the past. Fixes #77986.
11627
11628 2006-03-31  Chris Toshok  <toshok@ximian.com>
11629
11630         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
11631         default optimizations :(
11632
11633 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
11634
11635         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
11636         branch.
11637
11638 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
11639
11640         * local-propagation.c: Added comments to structs and removed
11641         "Mono" prefixes from local tree mover types.
11642
11643 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
11644
11645         * Makefile.am (arch_sources): Define this for each architecture so 
11646         libmono_la_SOURCES is defined in one place.
11647
11648 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
11649
11650         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
11651         from handles/.
11652
11653 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
11654
11655         * driver.c: print the GC name supplied by configure.
11656
11657 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
11658
11659         * local-propagation.c: Added tree mover, and moved here all the
11660         local propagation code from mini.c
11661         * mini.c: Added support for treeprop, and moved all the local
11662         propagation code to local-propagation.c
11663         * mini.h: Added support for treeprop
11664         * driver.c: Added support for treeprop, enabled consprop, copyprop,
11665         treeprop, inline and deadce by default
11666         * Makefile.am: Added local-propagation.c
11667
11668 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
11669
11670         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
11671
11672 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
11673
11674         * debug-debugger.c: make it compile without the Boehm GC.
11675
11676 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11677
11678         * mini.c: fixed issue with mismatch when an icall is registered
11679         with multiple names but same address.
11680
11681 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11682
11683         * declsec.c, mini-exceptions.c: use write barrier to set reference
11684         fields of managed objects.
11685
11686 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11687
11688         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
11689         (can_access_internals): Fix a warning.
11690
11691         * mini.c (print_method_from_ip): Rename this to 
11692         mono_print_method_from_ip so it gets exported.
11693
11694         * trace.c: Deal with strings inside StringBuilder's containing garbage
11695         and fix memory leaks. Fixes #77848.
11696
11697 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11698
11699         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
11700         fixes #77787.
11701
11702 2006-03-16 Neale Ferguson <neale@sinenomine.net>
11703         
11704         * mini-s390.c: Remove OP_X86_TEST_NULL.
11705
11706 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11707
11708         * mini.c: use the correct GetHashCode() for the moving collector.
11709
11710 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
11711
11712         * liveness.c: Regalloc spill cost tuning.
11713
11714 2006-03-15 Neale Ferguson <neale@sinenomine.net>
11715         
11716         * mini-s390x.h: Correct S390_LONG macro.
11717
11718         * mini-s390x.c: Cleanup unused code.
11719
11720 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
11721
11722         * jit-icalls.h: New file.
11723
11724         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
11725         icalls and include that instead of including jit-icalls.c.
11726
11727         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
11728         OP_X86 opcodes.
11729
11730 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
11731
11732         * mini.c: when checking for member accessibility, also check for
11733         friend assemblies and for explicit interface implementations.
11734
11735 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
11738
11739         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
11740
11741         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11742         common cases are done first.    
11743
11744         * mini-ops.h: Only define platform specific opcodes on the given platform.
11745
11746         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
11747         branch.
11748         
11749 2006-03-14  Martin Baulig  <martin@ximian.com>
11750
11751         Revert Paolo's change from r57348:
11752
11753         * mini.h: don't use gboolean for bitfields.
11754         * mini.c: verifier changes for fields and methods accessibility.
11755
11756 2006-03-13  Neale Ferguson <neale@sinenomine.net>
11757
11758         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
11759
11760         * mini-s390x.c: Fix conv_r_un.
11761
11762         * cpu-s390, cpu-s390x.md: Fix lengths.
11763
11764 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11765
11766         * mini.c: nested types have access to all the nesting
11767         levels, not just the enclosing types.
11768
11769 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11770
11771         * mini.c: added a few more verification checks.
11772
11773 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
11774
11775         * liveness.c: Merge optimizations from the linear-il branch.
11776
11777 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11778
11779         * mini-ia64.c (emit_call): Add a comment.
11780
11781         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
11782
11783         * tramp-ia64.c: Fix some warnings.
11784
11785 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11786
11787         * mini.h: don't use gboolean for bitfields.
11788         * mini.c: verifier changes for fields and methods accessibility.
11789
11790 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
11793         lazy icall wrapper changes.
11794
11795         * dominators.c: Replace all the dominator algorithms with faster
11796         ones from the linear-il branch.
11797
11798         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
11799         the mempool.
11800
11801         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11802         common cases are done first.
11803
11804         * mini-amd64.c: Fix some warnings.
11805
11806         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
11807         from the mempool.
11808
11809         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
11810         added code.
11811
11812         * mini.h: Add a missing prototype.
11813
11814 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
11815
11816         * mini.c: Compile icall wrappers lazily.
11817
11818         * mini-codegen.c: Use printf instead of g_print since its much faster.
11819
11820         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
11821         function.
11822
11823         * mini.c (optimize_branches): Cache the negative result from 
11824         remove_block_if_useless ().
11825
11826         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
11827         Also fix some bblock linking issues.
11828
11829         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
11830         assembly files.
11831
11832         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
11833
11834         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
11835         accessed fields first, for better cache behavior.
11836         
11837 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11838
11839         * mini.c: speedup IList<T> array accesses.
11840
11841 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
11844         inline_costs counter. Fixes #77190.
11845
11846 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
11847
11848         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
11849         trace messages. Fixes #77706.
11850
11851 2006-03-04  Martin Baulig  <martin@ximian.com>
11852
11853         * tramp-amd64.c, tramp-x86.c
11854         (mono_debugger_create_notification_function): Use
11855         mono_global_codeman_reserve() to allocate a buffer at runtime and
11856         return it.
11857
11858         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
11859
11860         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
11861         notification function at runtime and then call `initialize' in the
11862         `MONO_DEBUGGER__debugger_info' vtable.
11863
11864 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
11865
11866         * iltests.il: Fix a visibility problem.
11867
11868 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
11869
11870         * driver.c, mini.c: add hooks for the counters API.
11871
11872 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11873
11874         * driver.c: show disabled options.
11875
11876 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11877
11878         * linear-scan.c: always use cost-driven selection.
11879
11880 2006-02-28  Raja R Harinath  <rharinath@novell.com>
11881
11882         * jit-icalls.c (helper_compile_generic_method): Revert change from
11883         2006-02-24.
11884
11885 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
11886
11887         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
11888
11889 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
11890
11891         * inssel.brg: style fixes, mostly to force the updated monoburg
11892         to run for people using svn.
11893
11894 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11895
11896         * mini.c: match monoburg changes.
11897
11898 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11899
11900         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
11901         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
11902         declaration in the header file.
11903
11904 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11905
11906         * helpers.c: reduce relocations and mem usage.
11907
11908 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11909
11910         * mini.h, mini-codegen.c: disable logging features if
11911         requested by configure.
11912
11913 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
11914
11915         * mini.c: tiny verifier changes.
11916
11917 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11918
11919         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
11920         cpu-pentium.md: stack alignment changes for osx/x86,
11921         partially from Geoff Norton <gnorton@customerdna.com>.
11922
11923 2006-02-24  Raja R Harinath  <harinath@gmail.com>
11924
11925         * jit-icalls.c (helper_compile_generic_method): Update to changes
11926         in metadata/class.c.
11927
11928 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
11929         
11930         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
11931         
11932         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
11933         interface calls with large offsets.
11934
11935 2006-02-23  Raja R Harinath  <rharinath@novell.com>
11936
11937         * jit-icalls.c (helper_compile_generic_method): Document the
11938         special-case we depend on so that we can inflate the method twice
11939         with the same context with no bad side-effects.
11940
11941 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11942
11943         * mini-x86.c, mini-amd64.c: fix for case when xen support
11944         is disabled.
11945
11946 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11947
11948         * mini-x86.c, mini-amd64.c: generate code to access tls items
11949         in a faster way for Xen systems.
11950
11951 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
11952
11953         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
11954         updates and compilation fixes for the OSX/x86 port, mostly from
11955         Geoff Norton <gnorton@customerdna.com>.
11956
11957 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11958
11959         * inssel.brg: faster interface call implementation
11960         to sync with the interface_offsets MonoVTable changes.
11961
11962 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11963
11964         * mini.c: more verification checks.
11965
11966 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
11967
11968         * mini.c: added a few more verification checks.
11969
11970 2006-02-17      Neale Ferguson <neale@sinenomine.net>
11971
11972         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
11973         facility on the processor and use it if available.
11974
11975 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11976
11977         * driver.c, aot.c, mini.c: throw exception if the IL code is
11978         invalid or unverifiable.
11979
11980 2006-02-17  Raja R Harinath  <rharinath@novell.com>
11981
11982         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
11983         m.StructField.
11984
11985 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
11986
11987         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
11988
11989 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11990
11991         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
11992         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
11993         handling of instantiated generic valuetypes.
11994
11995 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
11998         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
11999         instead.
12000
12001         * generics.2.cs: Revert the nullable reftypes tests.
12002
12003 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12004
12005         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12006         using __builtin_frame_address (1) as it doesn't work in the presence
12007         of optimizations. Hopefully fixes #77273.
12008
12009         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12010         -> generics.cs change as it doesn't work with some automake versions.
12011
12012 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12013
12014         * mini.c: handle systems that sue a different way to
12015         retrieve the stack address of the current thread.
12016
12017 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12018
12019         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12020         it specially in the makefile.
12021
12022         * generics.2.cs: Add tests for nullable reference types.
12023
12024 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12025
12026         * mini.c: always handle the case when mono_jit_init()
12027         is called in a thread different from the main thread,
12028         confusing libgc (bug #77309).
12029
12030 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12031
12032         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12033
12034 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12035
12036         * mini.c: change optimize_branches () to use a single loop
12037         and introduce a new optimization to simplify some range checks.
12038
12039 2006-02-03  Martin Baulig  <martin@ximian.com>
12040
12041         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12042         and merged with debugger_thread_manager_add_thread().
12043         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12044         inform the debugger about the main thread.
12045
12046 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12047
12048         * basic.cs: Add test for div.un/rem.un constant folding.
12049
12050 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12051
12052         * cpu-s390x.md: correct int_xor_imm length
12053
12054 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12055
12056         * generics.2.cs: New test for #77442.
12057
12058         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12059         #77442.
12060
12061 2006-02-02  Martin Baulig  <martin@ximian.com>
12062
12063         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12064         <mono/metadata/mono-debug-debugger.h>   
12065
12066         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12067
12068 2006-02-02  Martin Baulig  <martin@ximian.com>
12069
12070         * debug-debugger.h: New header file for debug-debugger.c.
12071
12072         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12073         function is a separate thread anymore; add support for attaching.
12074
12075 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12076
12077         * tramp-x86.c: Fix a warning.
12078
12079 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12080
12081         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12082         on very large methods.
12083
12084         * aot.c (load_patch_info): Fix a warning.
12085
12086 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12087
12088         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12089         mini-ops.h: alu membase optimizations.
12090
12091 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12092
12093         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12094         to speedup StringBuilder.
12095
12096 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12097
12098         * dominators.c (mono_compute_natural_loops): Fix detection of
12099         loop body start blocks.
12100
12101         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12102
12103 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12104
12105         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12106         #75145.
12107
12108 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12109
12110         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12111
12112 2006-01-25  Martin Baulig  <martin@ximian.com>
12113
12114         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12115         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12116         started to cleanup this file a little bit.
12117
12118 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12119
12120         * mini.c: optimize a codepath frequently happening in generics code.
12121
12122 2006-01-23  Martin Baulig  <martin@ximian.com>
12123
12124         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12125
12126         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12127         functions directly.
12128
12129         * driver.c: debug-debugger.c is only available if
12130         `MONO_DEBUGGER_SUPPORTED' is defined.   
12131
12132 2006-01-23  Martin Baulig  <martin@ximian.com>
12133
12134         * debug-debugger.c: Only enable this on platforms where the Mono
12135         Debugger is working (x86 and x86_64).
12136
12137 2006-01-21  Martin Baulig  <martin@ximian.com>
12138
12139         The Mono Debugger is now using the normal `mono' instead of the
12140         `mono-debugger-mini-wrapper' when executing managed code.
12141
12142         * debug-debugger.c: New file; previously known as
12143         debugger/wrapper/wrapper.c.
12144
12145         * debug-mini.c (mono_init_debugger): Removed.
12146
12147         * driver.c (mono_main): Added new `--inside-mdb' command line
12148         argument which is used when running inside the debugger.
12149
12150 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12151
12152         * liveness.c (mono_analyze_liveness): Remove some unused data
12153         structures.
12154
12155 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12156
12157         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12158
12159 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12160
12161         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12162         depends on implementation details of monobitset.
12163
12164         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12165         Fixes #77271.
12166
12167 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * liveness.c: Update after monobitset changes.
12170
12171 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12174
12175 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12176
12177         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12178
12179         * mini-s390x.c: Remove warning messages.
12180
12181 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12182
12183         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12184
12185 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12186
12187         * generics.2.cs: Add ldelem/stelem_any test.
12188
12189 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12190
12191         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12192
12193 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12196         
12197 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12198
12199         * generics.2.cs: Reenable vtype tests.
12200
12201         * inssel-x86.brg: Remove an icorrect valuetype rule.
12202
12203 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12204
12205         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12206         initial support for OP_ABS.
12207
12208 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12209
12210         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12211
12212 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12213
12214         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12215         conversion and implement LADD/LSUB.
12216
12217         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12218         architectures.
12219
12220 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12221
12222         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12223
12224         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12225         architectures.
12226
12227 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12228
12229         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12230         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12231         (stack walk problem).
12232
12233 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12234
12235         * aot.c (mono_aot_load_method): Fix a warning.
12236
12237 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12238
12239         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12240
12241 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12242
12243         * iltests.il: Add test for #77148.
12244
12245         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12246         #77148.
12247
12248 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12249
12250         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12251
12252 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12253
12254         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12255         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12256
12257         * basic-long.cs: Add lconv-to-r4/r8 tests.
12258
12259 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12260
12261         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12262
12263         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12264         here as on other archs.
12265
12266 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12267
12268         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12269
12270 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12271
12272         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12273         
12274         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12275
12276         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12277         instrument_prolog; Add memory_barrier instruction.
12278
12279 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12280
12281         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12282
12283 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12286
12287         * aliasing.c inssel.brg: Fix warnings.
12288
12289         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12290         could skip initialization of some parts of memory.
12291
12292         * mini.c mini-ia64.c: Fix warnings.
12293
12294         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12295
12296 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12297
12298         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12299         a crash seen on sparc.
12300
12301         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12302         
12303         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12304
12305 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12306
12307         * mini-ops.h: Add s390_backchain instruction
12308
12309         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12310
12311         * cpu-s390.md: Add s390_backchain instruction
12312
12313         * mini-s390.c: Significant ABI changes
12314
12315         * mini-s390.h: Cater for zero length structures
12316
12317 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12318
12319         * mini-s390.c: ABI fixes
12320
12321         * inssel-s390.brg: Remove debug statements
12322
12323         * cpu-s390.md: Fix length of ATOMIC_xx operations
12324
12325 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12326
12327         * basic-float.cs: Add float<->long conversion tests.
12328
12329 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12330
12331         * mini-s390.c: Fix LOCALLOC processing.
12332
12333         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12334
12335 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12336
12337         * iltests.il: Add tests for some opcodes not covered by the other
12338         tests.
12339
12340 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12341
12342         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12343         register loading for Tail processing; Correct trace output.
12344
12345         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12346
12347         * cpu-s390.md: Correct size of jmp instruction. 
12348
12349 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12350
12351         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12352
12353 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12354
12355         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12356           Bring s390 up to current level.
12357
12358 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12359
12360         * generics.2.cs: Disable the newly added tests as they do not work yet.
12361         
12362         * generics.2.cs: Add valuetype tests.
12363
12364 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12365
12366         * basic-long.cs: Add i4->u8 test.
12367
12368         * objects.cs: Add tests for JIT intrinsic.
12369
12370         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12371         optimizations lost by a mistake.
12372
12373 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12374
12375         * basic-long.cs: Remove a test moved to objects.cs.
12376
12377         * arrays.cs: Add more array tests.
12378
12379 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12380
12381         * arrays.cs: Add new tests for multi-dimensional arrays.
12382
12383 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12384
12385         * Makefile.am (test_sources2): Add generics.2.cs.
12386         (EXTRA_DIST): Add test_sources2.
12387
12388 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12389
12390         Support for boxing and unboxing nullable types as well as the
12391         isinst operation on nullables, per the CLI ammendment.
12392
12393         * inssel.brg (CEE_ISINST): Special case for nullable
12394
12395         * mini.c (handle_unbox_nullable): new method
12396         (handle_box): Special case for nullable types
12397         (mono_method_to_ir): Call handle_unbox_nullable in correct
12398         places.
12399
12400         * generics.2.cs: New test suite
12401
12402         * Makefile.am: Support for regression tests with generics.
12403
12404 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12405
12406         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12407         allocated to registers. Fixes #76800.
12408
12409 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12410
12411         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12412
12413 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12416         of platforms.
12417
12418 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12419
12420         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12421         objects.cs.
12422
12423         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12424         
12425         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12426 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12427
12428         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12429         single precision before storing to a single precision location.
12430
12431 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12432
12433         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12434
12435 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12436
12437         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12438         correct files.
12439
12440         * basic.cs: Remove test_0_byte_compares test which was moved to
12441         objects.cs a long time ago.
12442
12443 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
12444
12445         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12446
12447 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
12448
12449         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
12450         handlers are called.
12451
12452         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
12453         throwing code.
12454
12455          * mini-ia64.c: Add support for the throw->branch exception 
12456         optimization.   
12457
12458         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
12459
12460 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12461
12462         * mini.c: Enabled "fastpath" deadce :-)
12463         
12464 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12465
12466         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
12467         alias analysis pass to support it.
12468         * mini.h: Likewise.
12469         * ssa.c: Likewise.
12470         * liveness.c: Likewise (liveness computation can use aliasing
12471         information to be more accurate).
12472         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
12473         moreover made so that "--compile-all" uses the given optimization
12474         flags and not the default ones.
12475         * aliasing.c: Alias analysis (new file).
12476         * aliasing.h: Likewise.
12477         * Makefile.am: added "aliasing.c" and "aliasing.h".
12478         
12479 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12480
12481         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
12482         OP_L opcodes.
12483
12484 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
12485
12486         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
12487         fp >= end_of_stack exit condition, as it is not needed, and it might
12488         become true for fp eliminated frames.
12489
12490 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12491
12492         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
12493         coded offsets.
12494
12495 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
12496
12497         * mini-arm.c: fixed alignment of doubles/longs to match
12498         the C ABI (bug #76635).
12499
12500 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
12501
12502         * aot.c: fix compilation with --enable-minimal=aot.
12503
12504 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
12505
12506         * mini-arm.c: fixed compatibility with the new
12507         floating point emulator package for compares.
12508
12509 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
12510
12511         * mini.c : reverted sig->pinvoke changes (r51396-51397).
12512
12513 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
12514
12515         * mini-exceptions.c (print_stack_frame): Output to stderr.
12516         (mono_handle_native_sigsegv): Ditto.
12517
12518 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12519
12520         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
12521         OP_LCONV_TO_OVF_I implementation.
12522
12523         * mini-amd64.c: Add support for the throw->branch exception 
12524         optimization.
12525
12526         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
12527         when the catch clause catches a more general exception, i.e. Object.
12528
12529 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
12530
12531         * cpu-ia64.md: Remove unused opcodes.
12532
12533         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
12534         specific defines for architectures defining USE_SIGACTION.
12535
12536         * mini-ia64.c: Fix some warnings.
12537
12538         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
12539         version seemed to skip a frame.
12540
12541 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12542
12543         * mini.c: Clean up the usage of sig->pinvoke flag. Now
12544         only calls which are made to native code use this flag.
12545
12546 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12547
12548         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
12549         varargs methods as well.
12550         
12551         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
12552         which have save_lmf set. Reorganize methods prologs a bit.
12553
12554         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
12555         debugger to the proper place.
12556
12557 2005-10-29  Martin Baulig  <martin@ximian.com>
12558
12559         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
12560         when running inside the debugger until the debugger has support
12561         for it.
12562
12563 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12564
12565         * mini.h: Fix a warning.
12566
12567 2005-10-24  Miguel de Icaza  <miguel@novell.com>
12568
12569         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
12570         we expose publicly, this returns the string.
12571
12572 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
12573
12574         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
12575         with fp elimination.
12576
12577 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
12580         native stacktrace using the glibc 'backtrace' function if available.
12581
12582 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
12583
12584         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
12585
12586         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
12587         handle SIGSEGVs received while in native code.
12588
12589         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
12590         code, call mono_handle_native_sigsegv which will abort the runtime
12591         after printing some diagnostics, instead of converting it into a
12592         confusing NullReferenceException.
12593
12594 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12595
12596         * cpu-pentium.md: Remove unused opcodes.
12597
12598 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
12599
12600         * mini-amd64.h (MonoLMF): Add rsp field.
12601
12602         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
12603         the lmf too.
12604
12605 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
12606
12607         * mini-codegen.c (get_register_spilling): Fix some warnings.
12608
12609 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
12610
12611         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
12612         elimination during exception handling. Enable fp elimination by
12613         default.
12614
12615         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
12616         elimination.
12617
12618 2005-10-16  Martin Baulig  <martin@ximian.com>
12619
12620         * mini-exceptions.c
12621         (mono_debugger_run_finally): New public method for the debugger.
12622
12623 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12624
12625         * debug-mini.c (mono_debug_init_method): Fix warning.
12626
12627         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
12628         the 'exname' parameter const to fix some warnings.
12629
12630 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
12631
12632         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
12633         introduced by the previous patch.
12634
12635 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
12636
12637         * basic-float.cs: Add test for precision of float arithmetic.
12638
12639         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
12640         when loading/storing single values from/to memory.
12641
12642         * mini.c (mono_jit_compile_method_with_opt): Create the function
12643         pointers in the correct domain.
12644
12645 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12646
12647         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
12648         introduced by previous patch.
12649         
12650         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
12651         when out_filter_idx is NULL.
12652
12653         * mini-exceptions.c: Don't run filter clauses twice during exception
12654         handling. Fixes #75755.
12655
12656 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12657
12658         * aot.c: Add support for ldflda wrappers.
12659
12660         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
12661         #75902.
12662
12663 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
12664
12665         * mini.c, mini.h: do not consider exception handlers blocks when
12666         setting up interface variables.
12667
12668 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
12669
12670         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
12671
12672 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
12675         causes a regression.
12676
12677         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
12678
12679 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
12680
12681         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
12682         of the OP_P definitions.
12683
12684         * TODO: Add a proposal for dealing with the CEE/OP mess.
12685
12686         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
12687         optimizations from the x86 port.
12688
12689         * cpu-amd64.md: Ditto.
12690
12691         * basic.cs basic-long.cs: Add tests.
12692
12693 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
12694
12695         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
12696         Patrik Torstensson's implementation of my exception-handling
12697         optimization idea, when the exception object is not used
12698         (bug #62150).
12699
12700 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
12701
12702         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
12703         of the mul_imm optimizations from the old jit.
12704
12705 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
12706
12707         * mini.c, liveness.c: patch by Patrik Torstensson and
12708         Zoltan Varga to improve performance in methods with
12709         exception clauses.
12710
12711 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * driver.c: Remove 'Globalization' entry from --version.
12714
12715 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
12718         there is a profiler interested in JIT events.
12719
12720         * aot.c: Load profile files produced by the AOT profiling module, and
12721         reorder methods based on the profiling info. Add a 'method_order' table
12722         to the AOT file to make mono_aot_find_jit_info work with the reordered
12723         methods.
12724
12725         * mini.h: Bump AOT file version info.
12726
12727 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
12728
12729         * mini-arm.h: work around what looks like a gcc bug when optimizations
12730         are enabled.
12731
12732 2005-09-28  Raja R Harinath  <rharinath@novell.com>
12733
12734         * Makefile.am (AM_CFLAGS): Don't use += to append inside
12735         conditionals.  Use ...
12736         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
12737
12738 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
12739
12740         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
12741         to determine the amount of memory to copy when passing valuetypes.
12742
12743         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
12744         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
12745
12746 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
12747
12748         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
12749         information about aot.
12750
12751 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
12752
12753         * *.c: Replace the use of {Enter,Leave}CriticalSection with
12754         macros. This will allow a deadlock debugger to easily be plugged
12755         in.
12756
12757 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
12758
12759         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
12760
12761 2005-09-27  Raja R Harinath  <rharinath@novell.com>
12762
12763         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
12764         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
12765         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
12766         ($(arch_built)) [CROSS_COMPILING]: Error out.
12767
12768 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
12769
12770         * aot.c: Add support for the no_special_static flag for classes.
12771
12772 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12773
12774         * Reapply reverted patches.
12775
12776         * *: Revert r50174 as well.
12777
12778         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
12779
12780 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12781
12782         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
12783
12784 2005-09-23  Miguel de Icaza  <miguel@novell.com>
12785
12786         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
12787         part of the SIG_HANDLER_SIGNATURE.  
12788
12789 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12790
12791         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
12792         statistics.
12793
12794         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
12795         introduced by previous patch.
12796
12797 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
12798
12799         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
12800         saved registers too.
12801
12802         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
12803         upon the information returned by get_call_info ().
12804         
12805         * mini-x86.c (add_float): Fix stack size calculation.
12806         (mono_arch_call_opcode): Rewrite this so it works based up the
12807         information returned by get_call_info ().
12808         (mono_arch_get_this_vret_args): Ditto.
12809
12810 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
12811
12812         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
12813         in cinfo to determine the registers which need to be used.
12814
12815 2005-09-20  Miguel de Icaza  <miguel@novell.com>
12816
12817         * driver.c (mono_main): Add --server and --desktop flags. 
12818
12819 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
12822         registers as global registers.
12823
12824         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
12825         longer needed with the new register allocator.
12826
12827         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
12828
12829         * cpu-ia64.md: Remove unused opcodes.
12830         
12831         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
12832         
12833 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
12834
12835         * cpu-amd64.md: Remove unused opcodes.
12836
12837         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
12838         needed with the new register allocator.
12839
12840         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
12841         reg-reg moves.
12842
12843 2005-09-16  Raja R Harinath  <rharinath@novell.com>
12844
12845         * Makefile.am (check-local): Don't invoke semdel-wrapper.
12846
12847 2005-09-16  Martin Baulig  <martin@ximian.com>
12848
12849         * exceptions-amd64.c
12850         (throw_exception): Don't call mono_debugger_throw_exception() if
12851         we're a rethrow - see the FIXME in the code.
12852
12853 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
12854
12855         * mini.c (mono_init_exceptions): This only works on some architectures.
12856         
12857 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
12858
12859         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
12860         on ia64.
12861
12862         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
12863
12864         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
12865         now in mini-exceptions.c.
12866
12867 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
12868
12869         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
12870         now in mini-exceptions.c.
12871
12872 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
12873
12874         * exceptions-x86.c: Applied patch from Patrik Torstensson 
12875         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
12876
12877         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
12878         code into mini-exceptions.c. Add some assertions to it.
12879
12880 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
12881
12882         * aot.c (emit_section_change): Applied patch from "The Software Team" 
12883         (<software@solmersa.com>). Fix as errors on windows.
12884
12885 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
12886
12887         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
12888         method info into the LMF.
12889
12890 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
12891         
12892         * mini-ia64.c: Add proper unwind info for method epilogs.
12893
12894         * exceptions-ia64.c: Add some code to help debugging.
12895         
12896         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
12897
12898         * mini-exceptions.c: Fix warning.
12899
12900 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
12901
12902         * mini.c: Really fix build.
12903
12904         * mini-x86.c mini-amd64.c: Fix build.
12905
12906 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
12907
12908         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
12909
12910         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
12911         some Interlocked methods as intrinsics.
12912
12913         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
12914         for Thread methods as well.
12915
12916         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
12917
12918         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
12919
12920         * mini-ia64.c mini-x86.c mini-amd64.c 
12921         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
12922         OP_MEMORY_BARRIER.
12923         
12924         * mini.c (mono_init_exceptions): Fix build breakage.
12925
12926 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
12927
12928         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
12929         of instructions. Use the new ia64_unw_op macros for emitting unwind
12930         info.
12931
12932         * mini.c (mono_init_exceptions): Initialize exception handling
12933         related trampolines at startup.
12934
12935 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
12936
12937         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
12938
12939 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
12940
12941         * mini.c: Handle type loading errors gracefully during compilation and
12942         throw the appropriate exception.
12943
12944 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
12945
12946         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
12947         for the mono binary.
12948
12949 2005-09-09  Martin Baulig  <martin@ximian.com>
12950
12951         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
12952         the release.
12953
12954 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
12955
12956         * mini-arm.h: use emulation for conv.r.un for the release.
12957
12958 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
12959
12960         * mini-arm.c, objects.cs: more fixes and tests for them.
12961
12962 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
12963
12964         * mini-arm.c: align structures to at least 4 bytes to be able
12965         to keep our current optimized memcpy.
12966
12967 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
12968
12969         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
12970
12971 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12972
12973         * mini.c: ignore SIGPIPE.
12974
12975 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
12976
12977         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
12978
12979         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
12980
12981 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
12982
12983         * mini.h: Add prototype for mono_allocate_stack_slots_full.
12984
12985 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
12986
12987         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
12988         exception handling support.
12989         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
12990         patch by Brian Koropoff <briank@marakicorp.com>).
12991
12992 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
12993
12994         * mini.c: revert another 'optimization' which breaks when
12995         items on the eval stack need to be saved at a basic block end
12996         (bug #75940).
12997
12998 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
12999
13000         * jit-icalls.c: for arrays, ensure we always provide
13001         lower bounds.
13002
13003 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13004
13005         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13006         
13007         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13008
13009 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13010
13011         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13012         arguments in their original register.
13013
13014 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13015
13016         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13017         memset/memcpy.
13018
13019         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13020         when ssapre is enabled.
13021
13022         * inssel-long.brg: Fix bug in previous patch.
13023
13024         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13025         multiplication by a constant.
13026
13027 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13028
13029         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13030         icc.
13031
13032         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13033         saving registers.
13034
13035 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13036
13037         * inssel-arm.brg: apply changes tested by Brian Koropoff
13038         <briank@marakicorp.com>.
13039
13040 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13041
13042         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13043         
13044 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13045
13046         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13047         to the same register if dreg is just a base register.
13048         (print_ins): Improve printing of membase opcodes.
13049
13050         * inssel-x86.brg: Add optimized ldind(reg) rules.
13051
13052         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13053
13054 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13055
13056         * mini.c: when running under valgrind, set the stack bottom for
13057         the GC at the actual approximate stack for the app (fixes running
13058         mono with valgrind).
13059
13060 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13061
13062         * mini.c: do no break at the first valuetype to init found
13063         (fixes bug #75791).
13064
13065 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13066
13067         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13068
13069 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13070
13071         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13072
13073 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13074
13075         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13076
13077 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13078
13079         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13080
13081         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13082         code.
13083
13084         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13085         code.
13086
13087         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13088         methods.
13089
13090 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13091
13092         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13093
13094 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13095
13096         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13097         in the tail recursion optimization.
13098
13099         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13100         debug info into the assembly file.
13101
13102         * iltests.il: Add test for filter regions.
13103
13104         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13105         initial stack of filter regions. Fixes #75755.
13106
13107 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13108
13109         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13110         stack requirements.
13111
13112 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13113
13114         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13115         the check for an already compiled method on non-ia64 platforms.
13116         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13117         proper domain.
13118
13119         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13120
13121         * inssel-x86.brg: Add some optimized call rules.
13122
13123 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13124
13125         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13126         method here.
13127
13128         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13129         mono_arch_patch_delegate_trampoline.
13130
13131         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13132
13133         * mini-trampolines.c: Fix build.
13134
13135         * mini-amd64.h: Add delegate trampolines.
13136
13137         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13138
13139         * inssel-amd64.brg: Add optimized call rules.
13140         
13141         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13142
13143         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13144
13145 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13146
13147         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13148         change.
13149
13150         * mini-ia64.c: Remove LMF fixmes.
13151
13152         * mini-ia64.h: Remove most fields from LMF.
13153
13154         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13155
13156         * mini-trampolines.c: Add support for IA64 function descriptors.
13157
13158         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13159         for IA64 function descriptors.
13160
13161 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13162
13163         * tramp-arm.c: patch the vtable for virtual calls. Added
13164         support code to register/unregister the LMF.
13165         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13166         more LMF work.
13167
13168 2005-08-19  Dick Porter  <dick@ximian.com>
13169
13170         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13171         bit value if needed.
13172
13173 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13174
13175         * mini.c (mini_get_method): Move handling of wrapper data here.
13176
13177         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13178
13179         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13180         virtual.
13181
13182         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13183         bblock->code does not remain empty.
13184
13185 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13186
13187         * arrays.cs: Add regression test for #75832.
13188
13189         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13190         rules. Fixes #75832.
13191
13192         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13193         instruction scheduling.
13194
13195 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13196
13197         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13198
13199 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13200
13201         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13202
13203         * mini-codegen.c: Fix VC build.
13204
13205         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13206
13207 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13208
13209         * mini.h: fix signature for mono_register_opcode_emulation.
13210
13211 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13212
13213         * mini.c: Get rid of most of the helper_sig_... constants using
13214         mono_create_icall_signature ().
13215
13216 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13217
13218         * jit-icalls.c (helper_ldstr): New helper function.
13219
13220         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13221
13222         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13223         throw, load the string using a helper call instead of creating a string object.
13224
13225         * aot.c: Update after LDSTR changes.
13226
13227         * mini.h: Bump AOT file version.
13228         
13229         * aot.c: Save class size info into the AOT file. Print more statistics during
13230         compilation.
13231
13232         * mini.h: Bump AOT file version.
13233
13234         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13235         ordering of disasm cases. Fixes #74957.
13236
13237 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13238
13239         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13240         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13241         the generic code needed for the ARM port.
13242
13243 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13244
13245         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13246         inssel-arm.brg: more ARM features and fixes.
13247
13248 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13249
13250         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13251         ARM port work in progress.
13252
13253 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13254
13255         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13256
13257         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13258
13259         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13260
13261         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13262
13263         * *-ia64.*: Ongoing IA64 work.
13264         
13265         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13266
13267 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13268
13269         * TODO: Remove out-of-data todo stuff.
13270
13271         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13272         dead code.
13273
13274         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13275
13276         * mini.h: Bump corlib version.
13277
13278 2005-07-27  Martin Baulig  <martin@ximian.com>
13279
13280         * mini-codegen.c
13281         (create_copy_ins): Added `const unsigned char *ip' argument; set
13282         `copy->cil_code' from it.
13283
13284 2005-07-27  Martin Baulig  <martin@ximian.com>
13285
13286         * mini-exceptions.c (mono_handle_exception): Don't call
13287         mono_debugger_handle_exception() for filters.
13288
13289 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13290
13291         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13292         as well.
13293
13294 2005-07-26  Martin Baulig  <martin@ximian.com>
13295
13296         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13297
13298         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13299         helper_compile_generic_method() if the method is actually virtual
13300         and non-final.
13301
13302 2005-07-26  Martin Baulig  <martin@ximian.com>
13303
13304         * mini.c
13305         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13306         public; this is now accessed directly by the debugger.
13307         (mono_generic_trampoline_code): Removed.
13308
13309         * debug-mini.c
13310         (mono_debug_init_method): Also add interncalls and wrappers.
13311
13312 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13313
13314         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13315
13316 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13317
13318         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13319
13320 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13321
13322         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13323
13324 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13325
13326         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13327         getting TLS offsets on AMD64 too.
13328
13329 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
13330
13331         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13332
13333 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13334
13335         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13336         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13337
13338 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13339
13340         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13341
13342         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13343         to mini.c.
13344
13345         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13346         mono_sparc_is_virtual_call ().
13347         
13348         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13349
13350         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13351         trampoline parameters.
13352
13353         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13354         
13355         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13356         to mono_arch_get_vcall_slot_addr.
13357
13358         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13359         trampoline code.
13360
13361         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13362
13363 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13364
13365         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13366
13367 2005-07-19  Martin Baulig  <martin@ximian.com>
13368
13369         * exceptions-amd64.c (throw_exception): Call
13370         mono_debugger_throw_exception() here like we're doing it on i386.
13371
13372 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13373
13374         * mini-ia64.c: Add optimized TLS access support.
13375
13376 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13377
13378         * mini-exceptions.c: Ongoing IA64 work.
13379
13380         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13381
13382         * mini.c: Use the default optimization set when embedding. Fixes
13383         #75194.
13384
13385 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13386
13387         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13388         of trampolines to a separate file.
13389
13390         * mini-trampolines.c: New file.
13391
13392         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13393         separate file.
13394         
13395         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13396         amd64/ia64 code.
13397
13398         * mini-codegen.c: Fix cygwin build.
13399
13400 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13401
13402         * mini.c: Add some minor changes needed by the IA64 port.
13403
13404         * *-ia64.*: Ongoing IA64 work.
13405
13406 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13407
13408         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13409         trampolines into arch-independent and arch-dependent parts.
13410
13411         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13412
13413 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13414
13415         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13416
13417         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13418         the xp-regalloc-branch for amd64.
13419
13420         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13421         xp-regalloc-branch for x86.
13422
13423 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13424
13425         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13426
13427 2005-07-06  Martin Baulig  <martin@ximian.com>
13428
13429         * mini.c
13430         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13431         (mono_jit_runtime_invoke): Likewise.
13432
13433 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13434
13435         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13436         on x86 too.
13437         
13438         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13439         without loading their metadata. Reorganize the file format so exception handling+
13440         debug info is kept separate from normal method info. Create MonoJitInfo 
13441         structures for methods lazily.
13442
13443         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
13444         loading metadata.
13445         (x86_class_init_trampoline): Patch AOT class init trampolines too.
13446
13447         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
13448
13449         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
13450         in AOT code.
13451
13452         * mini.h: Bump AOT file version.
13453
13454 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
13455
13456         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13457
13458 2005-07-01  Raja R Harinath  <rharinath@novell.com>
13459
13460         * Makefile.am (check-local): Call semdel-wrapper.
13461
13462 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
13463
13464         * mini-x86.c: Revert the last change as it seems to break the build..
13465
13466 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13467
13468         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13469         
13470         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
13471
13472 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
13473
13474         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
13475         outside of the macro, so strange stuff doesn't happen with gcc4
13476         (NEW_AOTCONST_TOKEN): Likewise.
13477
13478 2005-06-28  Martin Baulig  <martin@ximian.com>
13479
13480         * mini.c (mini_class_is_system_array): New static method; use this
13481         instead of `klass->parent == mono_defaults.array_class' everywhere
13482         since this also works for the new generic array class.
13483
13484 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13485
13486         * inssel.brg: Remove warnings.
13487
13488 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
13489
13490         * mini-ia64.c: Ongoing IA64 work.
13491
13492         * basic-float.cs: Add float->i1 conversion test.
13493
13494         * iltests.il: Add conv.u4 test.
13495
13496 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
13497
13498         * inssel-long.brg: Fix bug caused by last change.
13499
13500 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
13501
13502         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
13503         BSDs.  Allows the x86 JIT to work on OSX86
13504
13505 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
13506
13507         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
13508         u4->i8 conversion.
13509
13510         * mini-ia64.c: Ongoing IA64 work.
13511
13512 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13513
13514         * mini-ia64.c: Ongoing IA64 work.
13515
13516         * driver.c: Clean up jit_code_hash as well when using --regression.
13517
13518         * inssel-long.brg: Fix long->i4/u4 conversion rules.
13519
13520         * basic-long.cs: Add tests for long->u4 conversion.
13521
13522 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
13523
13524         * mini.c: Take mono_get_domainvar out of macros. This makes sure
13525         that we do not depend on undefined C behavior: the order stuff
13526         gets evaluated within an expression. Fixes mono when compiled on
13527         GCC 4.
13528
13529 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
13530
13531         * *-ia64.*: Ongoing IA64 work.
13532
13533         * aot.c: Lower memory usage while loading AOT methods.
13534
13535         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
13536
13537         * mini.h: Bump AOT file format version.
13538
13539 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13540
13541         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
13542
13543 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
13544
13545         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
13546         not on callee assembly). Fixed some comments.
13547
13548 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
13549
13550         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
13551         it gets proper disassembly.
13552         (emit_method_info): Remove some dead code.
13553
13554         * mini.c (mini_method_compile): Allways allocate the GOT var in
13555         mono_method_to_ir for emulating opcodes.
13556
13557 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
13558
13559         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
13560         before freeing the code memory. Fixes #74990.
13561
13562         * objects.cs: Add regression test for #74992.
13563
13564         * liveness.c: Extend live ranges of arguments to the beginning of the
13565         method. Fixes #74992.
13566
13567         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
13568         so it points into the faulting instruction.
13569
13570 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
13571
13572         * jit-icalls.c (mono_imul_ovf): Add exception handling.
13573
13574         * *-ia64.*: Ongoing IA64 work.
13575
13576         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
13577
13578 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
13579
13580         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
13581
13582         * *-ia64.*: Ongoing IA64 work.
13583
13584 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
13585
13586         * basic-long.cs: Add tests for add/sub.ovf.
13587
13588         * basic.cs: Add tests for sub.ovf.
13589
13590         * *-ia64.*: Ongoing IA64 work.
13591
13592 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
13593
13594         * *-ia64.*: Ongoing IA64 work.
13595
13596         * basic.cs: Add conv.ovf.i4.un test.
13597
13598 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
13599
13600         * mini.c: (remove_block_if_useless) Fixed bug 75061.
13601         
13602 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13603
13604         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
13605
13606 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
13607
13608         * *-ia64.*: Ongoing IA64 work.
13609
13610 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13611
13612         * trace.[ch]:
13613         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
13614
13615 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
13616
13617         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
13618
13619 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
13620
13621         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
13622
13623         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
13624         of a call is callable by a near call.
13625
13626 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
13627
13628         * mini-ia64.c: Ongoing IA64 work.
13629
13630 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
13631
13632         * genmdesc.c: Make the generated array non-static.
13633
13634         * inssel-long.brg: Fix LSHR_IMM rule.
13635
13636         * *-ia64.*: Ongoing IA64 work.
13637
13638         * *-ia64.*: Ongoing IA64 work.
13639
13640 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13641
13642         * *-ia64.*: Ongoing IA64 work.
13643
13644         * *-ia64.*: Ongoing IA64 work.
13645         
13646         * mini-ia64.c: Ongoing IA64 work.
13647
13648         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
13649
13650 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13651
13652         * objects.cs basic-calls.cs: Move some tests to objects.cs.
13653         
13654         * objects.cs basic-long.cs: Move some tests to objects.cs.
13655
13656 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
13657
13658         * *-ia64.*: Ongoing IA64 work.
13659
13660         * iltests.il: Add a new test.
13661
13662         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
13663         newobj. Fixes #75042.
13664
13665 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
13666
13667         * *-ia64.*: Ongoing IA64 work.
13668         
13669         * *-ia64.*: Ongoing IA64 work.
13670         
13671         * *-ia64.*: Ongoing IA64 work.
13672
13673         * basic.cs objects.cs: Move tests accessing static variables as well.
13674
13675         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
13676
13677 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
13678
13679         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
13680
13681         * driver.c: Always print failed tests.
13682
13683         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
13684         frame pointer.
13685
13686         * *ia64*: Ongoing IA64 work.
13687
13688 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
13689
13690         * basic.cs: Add tests for add.ovf. Fix warnings.
13691
13692 2005-05-18  Miguel de Icaza  <miguel@novell.com>
13693
13694         * driver.c (mono_main): Avoid crash if no argument is passed to
13695         --break;  Do not use g_error, but f_printf.   And fix all other
13696         ocurrences of the same crash.
13697
13698 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
13699
13700         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
13701         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
13702         Fixes #74742.
13703
13704 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
13705
13706         * *-ia64.*: Add beginnings of IA64 backend.
13707
13708         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
13709
13710 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
13711
13712         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
13713         Fixes #74925.
13714
13715         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
13716
13717         * mini-amd64.c: Fix a warning.
13718
13719 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
13720
13721         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
13722         in float_neg. Fixes #74897.
13723
13724         * mini-amd64.c (emit_call): Fix another near call bug.
13725
13726 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
13727
13728         * declsec.c: Keep the appdomain information in the structure. Added a 
13729         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
13730         value gets overwritten).
13731         * declsec.h: Set the default MonoArray for the the stack to 6. Added
13732         an MonoAppDomain member to MonoSecurityFrame.
13733         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
13734         used in the stack walk. Now use a MonoArray which grow (double) when
13735         it gets full.
13736
13737 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
13738
13739         * mini.c: Re-enabled runtime cleanup, since running threads should
13740         now properly stop when exiting.
13741
13742 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
13743
13744         * mini-codegen.c: New file contaning the arch-independent local
13745         register allocator. Not used by any architectures yet.
13746
13747         * mini.h linear-scan.c: Merge some changes from the 
13748         mini-xp-local-regalloc branch.
13749
13750 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
13751
13752         * mini-amd64.c (emit_call): Fix calls to native functions when the
13753         runtime is compiled as a shared library. Fixes #74756.
13754
13755         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
13756         on a literal field. Fixes #74751.
13757
13758 2005-04-25  Raja R Harinath  <rharinath@novell.com>
13759
13760         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
13761
13762 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
13763
13764         * objects.cs: Add missing null casting test.
13765
13766 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
13767
13768         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
13769         in wrapper methods. Also rename 'address' variable to 'offset'.
13770
13771 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
13772
13773         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
13774         warnings.
13775         
13776         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
13777
13778         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
13779         work on windows.
13780
13781 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13782
13783         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
13784
13785 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13786
13787         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
13788         just the last bytes.
13789
13790 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13791
13792         * aot.c (mono_compile_assembly): Fix warning.
13793
13794         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
13795         by the _MSC_VER stuff.
13796
13797 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
13798
13799         * inssel-long.brg: Fix #74588.
13800
13801         * cpu-amd64.md: Fix #74591.
13802
13803         * iltests.il: Add new regression tests.
13804
13805 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
13806
13807         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
13808         valuetype.
13809
13810 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
13811
13812         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
13813
13814         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
13815         from Bill Middleton <flashdict@gmail.com>.
13816
13817 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
13818
13819         * arrays.cs: Add new regression test. Fix warnings.
13820
13821 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
13822
13823         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
13824         and leakage in CKFINITE.
13825
13826         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
13827         this to a null op since it is called on amd64 too.
13828
13829         * exceptions-amd64.c (get_throw_trampoline): Align stack.
13830
13831         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
13832         body since this is not used on amd64.
13833         
13834         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
13835
13836         * mini-amd64.c: Remove obsolete fixmes.
13837
13838         * mini.c (print_method_from_ip): Fix debugging support.
13839
13840 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
13841
13842         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
13843         so that expressions that don't give much gain are not reduced.
13844         * ssapre.h: Likewise.
13845
13846 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
13847
13848         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
13849
13850         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
13851
13852         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
13853
13854 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
13855
13856         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
13857
13858         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
13859
13860 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
13861
13862         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
13863         stack touching.
13864
13865         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
13866
13867         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
13868
13869         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
13870
13871         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
13872         MONO_ARCH_USE_SIGACTION. Fixes #74252.
13873
13874         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
13875
13876         * mini-x86.c: Fix up stack overflow handling.   
13877
13878         * exceptions.cs: Add new regression test.
13879
13880 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
13881
13882         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
13883         mono_jit_thread_attach.
13884
13885         * mini.c (mono_method_to_ir): Verify called method is not abstract.
13886
13887 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
13888
13889         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
13890         avoid calling constructors using callvirt.
13891
13892         * inssel.brg: Fix #74073.
13893
13894 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
13895
13896         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
13897         compilation with non-GCC compilers.
13898         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
13899         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
13900
13901 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
13902
13903         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
13904         klass->interface_offsets (will likely fix bug#74073).
13905
13906 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
13907
13908         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
13909
13910 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
13911
13912         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
13913         to amd64_div_reg_size ().
13914         
13915         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
13916
13917 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
13918
13919         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
13920
13921 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
13922
13923         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
13924
13925 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
13926
13927         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
13928         
13929         * mini.c (mono_precompile_assembly): Load and precompile referenced
13930         assemblies as well. Fixes #74015.
13931
13932 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
13933
13934         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
13935
13936 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
13937
13938         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
13939         a lot of checks and (anyway) permissions cannot work until corlib is 
13940         loaded.
13941
13942 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
13943
13944         * mini-ppc.c: fixed ABI issue on sysv/ppc.
13945
13946 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
13947
13948         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
13949         calls (fixes bug#72824).
13950
13951 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13952
13953         * mini.c: fix tail recursion elimination (see test in bug#73936).
13954
13955 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
13956
13957         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
13958         some fp functions in sse2 mode.
13959
13960 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
13961
13962         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
13963
13964 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
13965
13966         * mini.h mini.c: Add mono_get_jit_tls_key ().
13967
13968         * mini-x86.c: Enable fast TLS support on windows.
13969
13970 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
13971
13972         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
13973         * mini.c: Check for p/invoke method when generating code. If a
13974         p/invoke method, or it's class, isn't decorated with [Suppress
13975         UnmanagedCodeSecurity] then generate code to call System.Security.
13976         UnmanagedDemand (only if the security manager is active).
13977
13978 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
13979
13980         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
13981         last change as it seems to cause strange crashes.
13982         
13983 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
13984
13985         * *.c: handle unsafe function pointers where needed.
13986
13987 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
13988
13989         * mini.c (mono_jit_free_method): Remove the fixme too.
13990
13991 2005-03-15  Miguel de Icaza  <miguel@novell.com>
13992
13993         * mini.c: As discussed, make the code actually free the delegate
13994         thunk now, to enable the debugging of delegate problems, use
13995         MONO_DEBUG=1 when running Mono. 
13996
13997         This takes also care of parts of the leaks as seen by Joe.
13998
13999 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14000
14001         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14002         thread_tls_offset calculation.
14003
14004 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14005
14006         * declsec.c: Reworked linkdemand checks for icall. The previous code
14007         was using the declaration code (untrusted) and didn't work as expected
14008         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14009         specific case.
14010
14011 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14012
14013         * iltests.il: Add new localloc test.
14014
14015         * mini-amd64.c: Handle large stack allocations the same way as on
14016         windows if stack overflow handling is working.
14017         
14018         * mini-amd64.c: Allocate the signal stack using mmap.
14019
14020         * mini.c (sigsegv_signal_handler): Fix reading of context.
14021
14022         * mini-exceptions.c: Fix up stack overflow handling.
14023
14024         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14025
14026         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14027
14028         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14029
14030         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14031
14032         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14033         tramp_init functions as they are no longer needed.
14034
14035 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14036
14037         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14038         
14039         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14040
14041         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14042         
14043         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14044         support that now.
14045
14046         * mini-ops.h: Add OP_LMUL_IMM.
14047
14048         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14049         long mul/div opcodes as intrinsic.
14050
14051         * mini-amd64.c (emit_call): Handle the case when the callee might be
14052         an AOT method.
14053
14054 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14055
14056         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14057         extra safe.
14058         
14059         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14060
14061         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14062
14063 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14064
14065         * mini.c (mono_codegen): Don't leak here, to help people running
14066         monogrind.
14067
14068 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14069
14070         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14071         conversions in sse2 mode.
14072
14073         * basic-float.cs: Add regression test.
14074         
14075         * mini-amd64.c: Reenable sse2.
14076
14077 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14078
14079         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14080
14081 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14082
14083         * driver.c: Copyright text should include 2005.
14084         
14085 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14086
14087         * cpu-amd64.md (load_membase): Fix more max lengths.
14088
14089 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14090
14091         * cpu-amd64.md (load_membase): Fix max length.
14092
14093         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14094
14095         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14096
14097         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14098         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14099
14100         * basic-float.cs: Add rounding regression test.
14101
14102         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14103
14104 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14105
14106         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14107         structures in registers for pinvoke wrappers.
14108
14109 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14110
14111         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14112
14113 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14114
14115         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14116         wrapper to mono_jit_thread_attach.
14117
14118         * mini.c (mini_jit_thread_attach): New jit icall.
14119
14120         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14121         native->managed wrappers.
14122
14123         * exceptions.cs: Add new regression test.
14124
14125         * mini.c (optimize_branches): Check regions in the cbranch to throw
14126         block case as well. Fixes #73242.
14127
14128 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14129
14130         * mini.c: thread safety fixes.
14131
14132 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14133
14134         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14135         patching stuff, since delegates use jump trampolines so there is
14136         no caller.
14137
14138         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14139         jump trampolines.
14140         
14141         * tramp-amd64.c: Fix build.
14142
14143         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14144         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14145
14146         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14147         Rename this to mono_arch....
14148         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14149
14150         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14151
14152         * mini-amd64.c (emit_call): If both the caller and the callee is
14153         guaranteed to have 32 bit addresses, emit a normal call.
14154
14155         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14156
14157         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14158         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14159         method_ptr inside delegates.
14160
14161 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14162
14163         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14164         invalidated. Fixes #73001.
14165
14166         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14167
14168         * mini-x86.c: Only use stdcall for pinvokes on windows.
14169
14170 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14171
14172         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14173         * mini-x86.c: remove unreliable __thread var offset detection,
14174         use the correct accessors and enable by default.
14175
14176 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14177
14178         * mini.c (mono_jit_free_method): Fix memory leak.
14179
14180 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14181
14182         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14183
14184 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14185
14186         * cpu-amd64.md: Fix lengths of atomic opcodes.
14187
14188 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14189
14190         * driver.c: try to not imply using ICU is any good.
14191
14192 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14193
14194         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14195         functions as inline ops.
14196
14197         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14198         some Interlocked functions as inline ops.
14199
14200         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14201
14202         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14203
14204         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14205
14206         * mini.c: Add support for OP_NOT_TAKEN.
14207
14208         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14209         structures in registers for pinvoke wrappers.
14210
14211         * mini-amd64.c: Fix warnings.
14212
14213 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14214
14215         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14216
14217         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14218
14219         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14220         address instead of loading the address from it.
14221
14222         * mini-x86.c: Add support for returning small structs in registers
14223         on Win32. Fixes part of #70864.
14224         
14225 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14226
14227         * trace.c (get_token): Improve error checking.
14228
14229 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14230
14231         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14232
14233 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14234  
14235         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14236         it can be reused for MonoClass.
14237         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14238         _LINKDEMAND.
14239
14240 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14241
14242         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14243         instead of a MonoReflectionMethod. The method information wasn't used
14244         when displaying SecurityException details (but will be now).
14245
14246 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14247
14248         * Makefile.am : windows build fix.
14249
14250 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14251
14252         * iltests.il: Add new regression test.
14253
14254         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14255         #72522.
14256
14257 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14258  
14259         * mini.c: Moved linkdemand check into helper function check_linkdemand
14260         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14261         LDFTN, LDVIRTFTN).
14262
14263 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14264
14265         * declsec.c: Added statistics counter for different kinds of 
14266         LinkDemands.
14267         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14268         (and commented) declaration.
14269         * mini.c: Added statistics counter for security Demand code 
14270         generation. Added display of security statistics.
14271
14272 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14273
14274         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14275         Fix compilation errors under gcc-2.95.
14276
14277 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14278
14279         * mini.c, driver.c: Use the new jit trampoline hashtable
14280
14281 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14282
14283         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14284
14285 2005-02-11  Martin Baulig  <martin@ximian.com>
14286
14287         * debug-mini.c (mono_debug_close_method): Free the line number array.
14288
14289 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14290
14291         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14292         icalls.
14293
14294         * mini.h: Bump AOT file format version. 
14295
14296 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14297
14298         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14299         APTC and P/Invoke.
14300         * declsec.h: Added macros to get/set lazyly initialized security 
14301         informations about assemblies. Added new enum for different type of
14302         possible LinkDemand violation. Added function to check LinkDemands.
14303         * mini.h: Added a field to MonoCompile to hold any security violation
14304         detected when JITting a method (so it can be thrown later).
14305         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14306         and CEE_CALLVIRT. Added code to throw exception at the end of
14307         mini_method_compile (note: the exception is unhandled right now).
14308
14309 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14310
14311         * mini.c, jit-icalls.c: use the managed implementation of
14312         memset for initobj and memset, to avoid managed <-> unmanaged
14313         transitions.
14314
14315 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14316
14317         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14318         optimization if it would need a GOT var.
14319
14320         * basic.cs: Add tests for constant propagation and switch statements.
14321
14322         * ssa.c: Fix out-of-range constant propagation and switch statements.
14323
14324 2005-02-09    <vargaz@freemail.hu>
14325
14326         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14327
14328 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14329
14330         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14331
14332 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14333
14334         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14335
14336 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14337
14338         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14339         arithmetic operations.
14340
14341 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14342
14343         * mini-ppc.c: add a workaround for broken user code that
14344         DllImports vararg functions with non-vararg signatures.
14345
14346 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14347
14348         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14349         meaningfull error message for assemblies written in Managed C++.
14350
14351         * tramp-amd64.c mini-amd64.h: Add support for 
14352         create_trampoline_from_token ().
14353
14354         * aot.c mini-x86.c abcremoval.c: Applied patch from
14355         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14356
14357 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14358
14359         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14360         which takes a MonoImage/token as parameter instead of a MonoMethod.
14361
14362         * aot.c: Use the new trampoline for initializing vtables.
14363
14364         * aot.c: Add support for ldfld/stfld_remote wrappers.
14365
14366         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14367         rules for compare <MEM>, IMM.
14368
14369         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14370
14371         * aot.c: Handle inherited finalizers correctly.
14372
14373 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14374
14375         * inssel.brg (stmt): Add a missing _setup_... ().
14376
14377         * aot.c: Save some parts of the class state to the AOT file and use it
14378         to recompute that state when a class is initialized.
14379
14380         * mini.c: Install AOT hooks into the runtime.
14381
14382         * mini.h: Bump AOT file format version.
14383         
14384         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14385         Fixes #72148.
14386
14387         * iltests.il: Add new test.
14388
14389 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14390
14391         * mini.c: fix typo.
14392
14393 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14394
14395         * mini.c: setup the statistical profiler in the thread attach
14396         callback to cope with the new single thread code.
14397
14398 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14399
14400         * mini-ppc.c: ensure we have enough room for the profiler
14401         calls (fixed bug#72084).
14402
14403 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14404
14405         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14406         it.
14407
14408 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14409
14410         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14411
14412 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14413
14414         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14415         to succesfully execute parrotbench).
14416         * ssapre.h: Likewise.
14417
14418 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14419
14420         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14421         variable for stores to method arguments (fixes a SSAPRE issue).
14422
14423 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14424
14425         * mini.c: handle value types in dup, fixes gen-112.cs.
14426
14427 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14428
14429         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14430         sequence for calls in dynamic methods to avoid thunks.
14431
14432 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14433
14434         * mini.c: correctly remove dynamic methods from the hashtable.
14435
14436 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14437
14438         * driver.c: Disabled SSAPRE until fix the bug that appears
14439         in IronPython's parrotbench.
14440
14441 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14442
14443         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
14444
14445         * mini.c (mono_method_to_ir): Revert the previous change.
14446         
14447         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
14448         when AOT compiling.
14449
14450         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
14451         mono_jit_info_table_find () etc. when running under valgrind.
14452
14453         * inssel.brg: Fix warnings.
14454
14455         * mini-exceptions.c: Fix warnings.
14456
14457 2005-01-31  Martin Baulig  <martin@ximian.com>
14458
14459         * driver.c (compile_all_methods_thread_main): Don't try to compile
14460         generic methods or anything which has type parameters.
14461
14462 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14463
14464         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
14465
14466         * TestDriver.cs: Add --verbose flags.
14467
14468         * graph.c ssa.c: Fix 64 bit warnings.
14469         
14470         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
14471         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
14472         Fix 64 bit warnings.
14473
14474         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
14475         variable not spotted by gcc.
14476         
14477         * mini-amd64.c inssel-amd64.brg: Applied patch from  
14478         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
14479         X86_COMPARE_MEMBASE opcodes.
14480
14481         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
14482
14483 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14484
14485         * *: MonoMethod->signature might be NULL now. You *MUST* use
14486         mono_method_signature.
14487
14488 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14489
14490         * driver.c (compile_all_methods_thread_main): Compile the methods
14491         without invoking cctors.
14492
14493 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14494
14495         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
14496         * basic-calls.cs: test for the above.
14497
14498 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14499
14500         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
14501         MonoJitInfo changes.
14502
14503 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
14504
14505         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
14506         eagerly if it contains dynamic methods.
14507         
14508         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
14509
14510         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
14511         trace, it is now computed by an icall from trace_ips.
14512         
14513         * mini-exceptions.c: Fix a warning.
14514
14515 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14516
14517         * mini-exceptions.c: don't bother getting stack trace info if
14518         it's not going to be used.
14519
14520 2005-01-27  Raja R Harinath  <rharinath@novell.com>
14521
14522         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
14523         ssapre-mini-ops.h.
14524
14525 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
14526
14527         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
14528
14529         * aot.c: Avoid calling mono_method_get_header () if not needed.
14530
14531         * mini.h: Bump AOT file format version.
14532         
14533         * mini.c (mono_emit_native_call): Allocate a GOT var here.
14534
14535         * mini.c (mono_print_tree): Print more info for calls.
14536
14537 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14538
14539         * declsec.h: Remove warning by adding missing include for marshal.h
14540
14541 2005-01-26  Martin Baulig  <martin@ximian.com>
14542
14543         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
14544         `ip' twice.
14545
14546 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
14547
14548         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
14549         flags.
14550
14551         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
14552
14553         * aot.c (mono_compile_assembly): Fix a warning.
14554
14555 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14556
14557         * declsec.c: Look for security attributes on the original MonoMethod 
14558         (and not the wrapped one). This fix permissions on icalls.
14559
14560 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14561
14562         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14563
14564         * mini.c (mono_allocate_stack_slots): Add a fixme.
14565
14566         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14567
14568 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14569
14570         * inssel.brg: optimize casts of sealed types (more
14571         optimizations waiting for fixes in remoting).
14572
14573 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14574
14575         * inssel.brg (stmt): Add another dummy rule.
14576
14577         * driver.c: Fix warnings.
14578
14579         * driver.c (mono_main): If running under valgrind, instruct glib to use
14580         the system allocation functions so valgrind can track the memory
14581         allocated by the g_... functions.
14582
14583         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
14584
14585         * mini-ops.h: Add OP_DUMMY_STORE opcode.
14586
14587         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
14588
14589         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
14590         variables in try regions.
14591
14592         * mini.c (mini_method_compile): Don't disable optimizations on large
14593         methods when AOT compiling.
14594
14595         * mini.c (mono_allocate_stack_slots): New arch independent method to 
14596         allocate stack slots. Not yet used.
14597
14598 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
14599
14600         * debug-mini.c (mono_debug_close_method): Plug some leaks.
14601
14602 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
14603
14604         * mini-ppc.c: make the branch info relative as the code
14605         buffer can be reallocated.
14606
14607 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
14608
14609         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
14610         * driver.c: Removed the AOT/security restriction. Now initialize the
14611         security manager (in metadata) if --security is used.
14612         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
14613         rather than the pointer to declarative security, when AOT is used.
14614
14615 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
14616
14617         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
14618         basic blocks, reduced intrinsic exception throwing code size.
14619
14620 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
14621
14622         * driver.c (mini_usage): Reorder the usage screen.
14623
14624 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
14625
14626         * mini.c (mono_resolve_patch_target): Fix warning.
14627
14628 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
14629
14630         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
14631         previous patch.
14632
14633         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14634
14635         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
14636         breaks the amd64 build.
14637
14638         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
14639         register allocation. Fixes #71454.
14640
14641         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14642
14643         * arrays.cs: Add new regression test.   
14644
14645 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14646
14647         * ssapre.c: Turned usage of snprintf to GString.
14648         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
14649         (I left it on by mistake in my previous commit).
14650
14651 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
14652
14653         * mini.c, cfold.c, basic-calls.cs: preserve side effects
14654         on cond branch optimization (fixes bug# 71515).
14655
14656 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14657
14658         * abcremoval.c: Fixed bug 71062.
14659         * abcremoval.h: Likewise.
14660
14661 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14662
14663         * mini.c: Added a new functionality to optimize_branches, the removal
14664         of useless basic blocks, and fixed some problem in the removal of
14665         critical edges; some utility functions added for both purposes.
14666         * ssapre.c: Added complex expression support, and fixed bug 70637.
14667         * ssapre.h: Likewise.
14668         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
14669         enabled in SSAPRE.
14670         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
14671         * driver.c: Re-enabled SSAPRE.
14672
14673 2005-01-19  Martin Baulig  <martin@ximian.com>
14674
14675         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
14676         the result of mono_get_method_constrained().
14677
14678 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
14679
14680         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
14681         manager.
14682
14683 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
14684
14685         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
14686         be detected.  Fixes #59296.
14687
14688 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14689
14690         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
14691         which can happen. Fixes #71361.
14692
14693 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14694
14695         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
14696         manager.
14697
14698 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14699
14700         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
14701         appdomain-unload.exe to fail.
14702         
14703         * mini.c: Fix some memory leaks.
14704
14705 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
14706
14707         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
14708         Fixed bug and sped up some codepaths.
14709
14710 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14711
14712         * mini.c: Fix some memory leaks.
14713
14714         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
14715         conversion.
14716
14717         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
14718
14719         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
14720         #71320.
14721
14722         * iltests.il: Add regression test for #71320.
14723
14724 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
14725
14726         * mini.c (mono_codegen): Fix installation of profiler hooks.
14727
14728         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
14729
14730 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini.h, mini.c, cfold.c: optimize access to enum
14733         readonly fields, too. Eval conditional branches if possible
14734         to perform unreachable code removal in more cases.
14735
14736 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
14737
14738         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
14739
14740         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
14741         code manager.
14742
14743         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
14744         WinXP DEP. Fixes #71244.
14745
14746 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
14747
14748         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
14749
14750 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
14751
14752         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
14753
14754 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14755
14756         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
14757         changes.
14758
14759         * mini.h: Bump AOT version.
14760
14761         * mini.h (MonoCompile): Change exvar to a hash table.
14762
14763         * mini.c: Allocate a separate exvar for each handler block.
14764
14765         * mini.c: Get rid of the computation of filter_lengths, its not needed.
14766
14767         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
14768         ex var with the pending exception and only throw if the two are equal.
14769         Fixes #68552.
14770         
14771         * exceptions.cs: Add tests for rethrow and nested catch clauses.
14772
14773         * mini-x86.c: Fix warnings.
14774
14775         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
14776         used by all the ports now.
14777
14778         * aot.c: Add write-symbols and save-temps options.
14779
14780 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
14781
14782         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
14783
14784 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
14785
14786         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
14787         operations.
14788
14789         * tramp-s390.c: Check vtable slot belongs to the domain.
14790
14791         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
14792         as per other platforms.
14793
14794         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
14795
14796 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
14797
14798         * driver.c: we don't run the Main() code in a subthread anymore.
14799
14800 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
14801
14802         * mini.c: added experimental rtc support in the statistical
14803         profiler: if the user has the permission, more accurate statistics
14804         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
14805         The MONO_RTC value must be restricted to what the linux rtc allows:
14806         power of two from 64 to 8192 Hz.
14807
14808 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
14809
14810         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
14811
14812 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
14813
14814         * mini-ppc.c: better icache flush for smp.
14815
14816 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
14817
14818         * mini-amd64.c (emit_move_return_value): Fix memory leak.
14819
14820         * mini-x86.c (get_call_info): Add the get_call_info () code from the
14821         amd64 port, not yet used.
14822
14823 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14824
14825         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
14826         a struct type.
14827
14828 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14829
14830         * driver.c: Added --security option to activate the security manager.
14831         Right now this will allow code generation for declarative demands and
14832         is disabled when AOT is specified.
14833         * mini.c: Add code generation for declarative security demands.
14834         * mini.h: Add mono_use_security_manager as an extern gboolean.
14835
14836 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14837
14838         * aot.c (mono_compile_assembly): Speed up compilation a bit by
14839         emitting more dense assembly code.
14840
14841         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
14842         exception throwing stuff.
14843
14844 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
14845
14846         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
14847         dead code.
14848
14849         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
14850         left in by mistake.
14851
14852         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
14853         fixed.
14854
14855         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
14856
14857         * tramp-*.c: Only patch vtable slots if the object is in the current
14858         domain. Fixes appdomain-unload.exe.
14859
14860         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
14861         
14862         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
14863         x86 branch.
14864
14865 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14866
14867         * mini.c (reverse_branch_op): New helper function.
14868
14869         * mini.c (optimize_branches): Run the new optimization only on 
14870         platforms which support it. Also reverse all kinds of branches.
14871
14872         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
14873
14874         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
14875         a throw statement.
14876
14877         * mini.c (optimize_branches): Reverse not-equals branches if the false
14878         bblock is a throw. This happens a lot of time with argument checking in
14879         corlib.
14880
14881         * mini.c (mono_codegen): Add support for placing basic blocks after
14882         the function epilogue.
14883
14884         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
14885         function epilogue.
14886         
14887 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
14888
14889         * mini.c (setup_stat_profiler): Only set this up if the platform
14890         supports ITIMER_PROF.
14891
14892 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14893
14894         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
14895         previous patch.
14896
14897         * inssel.brg: Fix a warning.
14898
14899 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
14900
14901         * mini.c: added support for statistical profiler 
14902         (run with: --profile=default:stat).
14903
14904 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
14905
14906         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
14907
14908         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
14909
14910         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
14911         related to global registers from the amd64 port.
14912
14913 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
14914
14915         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
14916
14917         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
14918         with global registers.
14919         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
14920
14921         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
14922
14923 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
14924
14925         * debug-mini.c (encode_value): Fix off-by-one.
14926
14927         * aot.c (encode_value): Likewise.
14928
14929         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
14930
14931 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
14932
14933         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
14934         AOT.
14935
14936         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
14937         
14938         * aot.c (emit_method_info): Increase size of temp buffer.
14939
14940         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
14941         the AOT case.
14942
14943 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
14944
14945         * aot.c (emit_method_info): Fix build.
14946         
14947         * aot.c: Further rework of the AOT file format to reduce the size of
14948         the method info data.
14949
14950         * mini.h: Bump AOT file format version.
14951
14952 2004-12-27  Martin Baulig  <martin@ximian.com>
14953
14954         * mini.c (mini_get_method): New static method; call
14955         mono_get_method_full() and mono_get_inflated_method().
14956         (mono_method_to_ir): Use mini_get_method() instead of
14957         mono_get_method_full(). 
14958
14959 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
14960
14961         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
14962
14963 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
14964
14965         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
14966
14967         * inssel-amd64.brg: Add some optimization rules.
14968
14969 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
14970
14971         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
14972         standard not GC'd stuff is fine.
14973
14974 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
14975
14976         * aot.c: Rework the AOT file format to get rid of most of the global
14977         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
14978
14979         * mini.h: Bump AOT file format version.
14980         
14981 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
14982
14983         * mini.h: Bump AOT file format version.
14984
14985         * aot.c (mono_aot_is_got_entry): New function to determine if an 
14986         address is inside a GOT.
14987
14988         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
14989
14990         * cpu-pentium.md: Increase the maximum size of some instructions which
14991         might involve a got access.
14992         
14993         * mini.c (get_method_from_ip): Another debug helper function.
14994
14995         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
14996         when got var accesses are created during the decompose phase.
14997
14998         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
14999
15000         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15001         argument mini_compile_method and to MonoCompile, and use this to
15002         determine whenever a given method is compiled for AOT. This allows the
15003         other methods compiled during AOT compilation to be free of AOT stuff,
15004         so the backends does not need to add special support for them by
15005         creating a fake GOT etc.
15006
15007         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15008         longer needed.
15009
15010 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15011
15012         * mini.c (mono_method_to_ir): It turns out that some of the
15013         x-appdomain wrappers are lax with types, so just ignore this for
15014         all wrappers.
15015
15016         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15017         at the vtable->klass. If it is non-shared code we can just use the
15018         vtable.
15019
15020 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15021
15022         * mini-ppc.c: access MonoDomain from tls, too.
15023
15024 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15025
15026         * declsec.c: Removed unused variable (and related warning ;-)
15027
15028 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15029
15030         * iltests.il: New test for LDELEMA on an array of ref types.
15031
15032         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15033         all ldelema's on reftypes.
15034         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15035         it was the wrong place to put it.
15036
15037         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15038         register to pop to make this cleaner, at the request of Paolo.
15039
15040 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15041
15042         * mini-ops.h (OP_GETHASHCODE): New op.
15043
15044         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15045
15046         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15047         operation.
15048
15049         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15050         by 25%.
15051         
15052         * mini-x86.c (mono_arch_output_basic_block): Rather than
15053
15054         add ebp, 4
15055
15056         Emit
15057
15058         pop edx
15059
15060         The first is 3 bytes while the second is 1. This saves 36 kb on
15061         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15062         see a small boost because of icache locality.
15063
15064         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15065
15066 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15067
15068         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15069         started code sharing with the generic code.
15070
15071 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15072
15073         * mini-ppc.c, cpu-g4.md: added code for direct access to
15074         tls data slots.
15075
15076 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15077
15078         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15079          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15080         to OP_TLS_GET.
15081
15082 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15083
15084         * declsec.c|h: Added functions to cache the declarative stack modifiers
15085         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15086         structure.
15087         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15088         created. Register internal calls for System.Security.SecurityFrame::
15089         _GetSecurityFrame and _GetSecurityStack.
15090         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15091         the definitions for the new stack walk/callback mechanism.
15092         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15093         first security frame for LinkDemands and InheritanceDemands) and
15094         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15095         from lupus.
15096         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15097         walk initialization (lupus).
15098
15099 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15100
15101         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15102         idiom.
15103         (handle_loaded_temps): Do not create a temporary variable for
15104         things that we know are temps. They will never be modified.
15105         (mono_spill_call): Set MONO_INST_IS_TEMP
15106         (mono_emulate_opcode): ditto
15107         (emit_tree): ditto
15108         (mono_method_to_ir.CEE_DUP): ditto
15109
15110 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15111
15112         * mini.c (type_to_eval_stack_type): Make this handle the void type
15113         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15114         (emit_tree): use ip_in_bb to special case some common idioms
15115         Update all callers to pass in the IP.
15116         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15117
15118         This gives us a nice 2% speedup in mcs bootstrap.
15119
15120         * mini-x86.c (peephole_pass): Peephole pass to make
15121         mov  [foo], eax
15122         push [foo]
15123
15124         into
15125
15126         mov [foo], eax
15127         push eax
15128
15129         * mini.c (ip_in_bb): new method.
15130         (mono_method_to_ir): use this method rather than doing the hash
15131         lookup ourselves.
15132
15133         * linear-scan.c (mono_linear_scan): When expiring actives, you
15134         don't need to keep around variables that expire on this
15135         instruction. This makes it so that:
15136              a = b + 1
15137         will turn into:
15138              store (ebx add (ebx, 1))
15139         which will become
15140              add ebx, 1
15141
15142 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15143
15144         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15145         combination to avoid doing two copies. Fix up problems with previous
15146         patch.
15147
15148         * mini.c: Fix 64 bit warnings.
15149
15150         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15151
15152 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15153
15154         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15155         changes from the x86 code.
15156
15157         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15158
15159 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15160
15161         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15162         throwing code to reduce its size, unify the AOT and non-aot code and 
15163         get rid of relocations in the AOT case.
15164
15165         * mini-x86.h mini.c exceptions-x86.c 
15166         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15167         raise corlib exceptions which doesn't require relocations in the 
15168         caller.
15169
15170         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15171
15172 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15173
15174         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15175         needed.
15176
15177         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15178         in the AOT case.
15179
15180 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15181
15182         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15183         with add function when used from Inc/dec atomic 
15184         functions. Re-enabled optimization on x86.
15185         * mini-ops.h: renamed atomic_add functions to
15186         allow _add to match the Interlocked::Add and
15187         _add_next to match Interlocked::Inc/Dec.
15188
15189 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15190
15191         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15192         linking of BBs to the end BB, and enabled SSAPRE also with
15193         consprop and copyprop (which was prevented by that bug).
15194
15195 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15196
15197         * mini-x86.c: disabling the Interlocked optimizing code. 
15198
15199 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15200
15201         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15202         file version check.
15203         
15204 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15205
15206         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15207         interlocked optimization due lack of support on x86, rewrote 
15208         exchange to take into account that base may be in eax.
15209         
15210         xsp works again; activated Interlocked optimizing code.
15211         
15212 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15213
15214         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15215
15216 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15217
15218         * mini-ops.h: Add new opcodes.
15219
15220         * mini.h: Add new patch types. Add got_var to MonoCompile.
15221
15222         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15223         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15224         make it work with all kinds of patchable code.
15225
15226         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15227         address of the GOT, and referencing entries in the GOT.
15228
15229         * mini.c: Add code to load the GOT address if needed by an opcode.
15230
15231         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15232         independent AOT code on the x86 using an elf-style Global Offset Table.
15233
15234 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15235
15236         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15237
15238 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15239
15240         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15241         when running xsp.
15242
15243 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15244
15245         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15246         of Interlocked:Increment/Decrement/Add as inline ops.
15247         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15248
15249 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15250
15251         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15252         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15253
15254 2004-12-12  Duncan Mak  <duncan@ximian.com>
15255
15256         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15257         again. `patch_info->table_size' is no longer valid after Zoltan's
15258         commit #37636.
15259
15260 2004-12-12  Martin Baulig  <martin@ximian.com>
15261
15262         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15263         if we are the "real" method, ie. not an inlined method inside it.
15264
15265 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15266
15267         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15268         before we look in the special fields table. This fixes
15269         ../tests/thread-static-init.cs.
15270
15271 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15272
15273         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15274         for Array get_Rank and get_Length. Fixes bug #70465.
15275
15276 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15277
15278         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15279         separate structure to reduce the size of MonoJumpInfo.
15280
15281 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15282
15283         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15284
15285 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15286
15287         * mini.c (mini_get_inst_for_method): Changed to allow ports
15288         to return a MonoInst instead of opcode 
15289         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15290         
15291         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15292         Allow ports to return a created MonoInst instead of op-code, will enable
15293         new optimizations.
15294         (renamed mini_get_opcode_for_method to better reflected the functionality)
15295
15296 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15297
15298         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15299
15300 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15301
15302         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15303         Fixes #69985.
15304
15305 2004-12-08  Martin Baulig  <martin@ximian.com>
15306
15307         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15308         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15309
15310 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15311
15312         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15313         correctly.
15314
15315         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15316         arithmetic.
15317
15318 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15319
15320         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15321
15322 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15323
15324         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15325         bug introduced by the previous patch.
15326
15327 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15328
15329         * mini-ppc.c, objectc.cs: handle large structs passed by value
15330         (fixes bug #69972).
15331
15332 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15333
15334         * mini-ppc.c: OP_ARGLIST implementation from
15335         Geoff Norton  <gnorton@customerdna.com>.
15336
15337 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15338
15339         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15340         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15341
15342 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15343
15344         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15345
15346 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15347
15348         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15349         support.
15350
15351 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15352
15353         * mini-sparc.c: Zero out localled-ed memory.
15354
15355         * iltests.il: Add tests for zeroing out localloc-ed memory.
15356
15357 2004-12-04  Martin Baulig  <martin@ximian.com>
15358
15359         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15360         mono_method_get_signature_full().       
15361
15362 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15363
15364         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15365         and some utility functions (always for SSAPRE), integrated SSAPRE.
15366         * mini.h: Likewise.
15367         * driver.c: Added ssapre option.
15368         * ssa.c: Small fix on OP_ARG handling.
15369         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15370         * Makefile.am: Likewise.
15371
15372 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15373
15374         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15375         now in the xp code.
15376
15377         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15378         icall.
15379
15380 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15381
15382         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15383         
15384         * cpu-s390.md : Increase instruction length of oparglist.
15385
15386         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15387
15388 2004-11-30  Martin Baulig  <martin@ximian.com>
15389
15390         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15391         virtual generic methods.  We call a special helper_compile_generic_method()
15392         icall to retrieve the method from the vtable, inflate and compile
15393         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15394
15395         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15396
15397 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15398
15399         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15400
15401 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15402
15403         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15404         Fixes #69929.
15405
15406 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15407
15408         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15409         platforms with PIC aot.
15410
15411 2004-11-28  Martin Baulig  <martin@ximian.com>
15412
15413         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15414         Fixes gen-112.cs.
15415
15416 2004-11-28  Martin Baulig  <martin@ximian.com>
15417
15418         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15419         the result of mono_type_get_underlying_type() to check whether
15420         we're byref.
15421
15422 2004-11-26  Martin Baulig  <martin@ximian.com>
15423
15424         * mini.c
15425         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15426         in the g_assert().
15427
15428 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15429
15430         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15431         the same way as the other arguments so they won't get clobbered.
15432
15433         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15434         calls through R11 since it is clobbered by the trampoline code.
15435
15436 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15437
15438         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15439         pick up in-tree mscorlib.dll.
15440
15441 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15442
15443         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
15444
15445         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
15446         runtime data/code are now stored in a table similar to the GOT in ELF. 
15447         This allows the code itself to be position independent.
15448
15449         * aot.c: Fix loading of referenced assemblies after the lazy assembly
15450         loading changes.
15451
15452         * aot.c: Attach ELF type (object/function) directives to all global
15453         symbols.
15454
15455         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
15456
15457         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
15458
15459         * mini-amd64.h: Turn on PIC AOT code.
15460
15461         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
15462         returning the offset within an OP_AOTCONST instruction where the GOT
15463         offset needs to be added.
15464
15465         * mini.h: Bump AOT file format version.
15466
15467 2004-11-25  Martin Baulig  <martin@ximian.com>
15468
15469         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
15470         uninflated generic methods.
15471
15472 2004-11-25  Martin Baulig  <martin@ximian.com>
15473
15474         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
15475
15476 2004-11-24  Martin Baulig  <martin@ximian.com>
15477
15478         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
15479         original klass (this only applies for generic instances).
15480
15481 2004-11-24  Martin Baulig  <martin@ximian.com>
15482
15483         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
15484         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
15485         that array).
15486
15487 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15488
15489         * mini.c (mono_method_to_ir): Disable inlining for methods containing
15490         localloc. Fixes #69678.
15491
15492         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
15493         
15494 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
15495
15496         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
15497         used SSE registers on pinvoke calls. Fixes #69774.
15498
15499 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
15500
15501         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
15502         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
15503
15504 2004-11-23  Raja R Harinath  <rharinath@novell.com>
15505
15506         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
15507         Refer directly to the mcs/ tree.
15508
15509 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15510
15511         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
15512         Check if a trampoline for a synchronized method is required. 
15513
15514 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
15515
15516         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
15517         with localloc if needed. Throe arithmetric exception in
15518         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
15519         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
15520
15521 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
15522
15523         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
15524         types before switching on type.  Fixes #69622.
15525
15526 2004-11-19  Raja R Harinath  <rharinath@novell.com>
15527
15528         * Makefile.am (check-local): New.  Integrate into 'make check'.
15529         (MCS,RUNTIME): Define using in-tree mono and mcs.
15530         (ILASM): New.
15531         (%.exe): Use $(ILASM).
15532
15533 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
15534
15535         * mini-ppc.c: adjust initial prolog size (bug #69691).
15536
15537 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
15538
15539         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
15540         #69664.
15541
15542 2004-11-17  Raja R Harinath  <rharinath@novell.com>
15543
15544         * Makefile.am (clean-local): Rename from 'clean'.
15545
15546 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15547
15548         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
15549         to mono_arch_is_int_overflow. 
15550         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
15551         SIGFPE events.
15552
15553 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15554
15555         * declsec.c|h: New files to support declarative security attributes.
15556         Added function to check if a method has (applicable) security.
15557         * mini.c|h: Add check for declarative security attributes in
15558         mono_method_check_inlining.
15559         * Makefile.am: Added declsec.c and declsec.h to the build.
15560
15561 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15562
15563         * mini.c, mini.h: update to keep dynamic code info per-domain.
15564
15565 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15566
15567         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
15568         (mini_init): Get rid of it from here too.
15569
15570 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
15571
15572         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
15573         implemented OP_RETHROW (patch by Geoff Norton
15574         <gnorton@customerdna.com>).
15575
15576 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
15577
15578         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
15579         between appdomains.  Fixes appdomain-unload on PPC.
15580
15581 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
15582
15583         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15584         mini-exceptions.c: handle the new wrapper types.
15585         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
15586         token value as a MonoClass* when compiling a wrapper.
15587         mono_jit_create_remoting_trampoline now takes an additional
15588         MonoRemotingTarget parameter.
15589         
15590 2004-11-10  Martin Baulig  <martin@localhost>
15591
15592         * mini.c (mono_method_to_ir): Use `generic_container->context'
15593         rather than creating a new one.
15594
15595 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15596
15597         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
15598
15599         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
15600
15601 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
15602
15603         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
15604         the experimental aot cache stuff.
15605
15606 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15607
15608         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15609         mini-exceptions.c: update to exception clause structure changes.
15610
15611 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15612
15613         * exceptions-x86.c (throw_exception): Fix warnings.
15614
15615         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
15616         for OP_RETHROW.
15617
15618 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15619
15620         * exceptions-sparc.c (get_throw_exception): Really fix this.
15621
15622 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15623
15624         * tramp-*.c: we no longer support icalls without wrappers, so
15625         a bit of code can be removed here
15626
15627 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
15628
15629         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
15630         patch.
15631
15632         * cpu-sparc.md: Add op_rethrow.
15633
15634         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
15635
15636         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
15637
15638         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
15639         * mini-ops.h: Add OP_RETHROW.
15640
15641         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
15642
15643         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
15644
15645 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15646         
15647         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
15648         Makes the output much easier to read
15649
15650 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
15651
15652         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
15653         prevents another huge leak when compiling with ssa. Secondly, the
15654         performance of doing this rather than freeing the lists is much
15655         better. GList does a lock every time you allocate a list link,
15656         so that it can use a memory pool. So, it is better to just use
15657         a memory pool of our own.
15658         
15659         * ssa.c, linear-scan.c: replace g_list_remove_link with
15660         g_list_delete.  The remove one does not free the GList, so we were
15661         leaking memory. On -O=all --compile-all with corlib, this cut down
15662         3 MB of allocations.
15663
15664 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15665
15666         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
15667
15668         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
15669
15670         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
15671         into a new function mono_create_jit_trampoline ().
15672
15673 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15674
15675         * trace.c (get_spec): Allow tracing of classes without a namespace.
15676
15677 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
15678
15679         * mini.c: Fix pointer overwrite in mini_method_compile.
15680
15681 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
15682
15683         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
15684         The darwin ABI needs some special handling for 1 and 2 byte structs
15685         Lets use lbz/lhz instead of lwz everywhere.
15686         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
15687         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
15688         Use stb/sth for the former, and put the latter always on stack instead of in
15689         argument registers.
15690
15691 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
15692
15693         * trace.c (is_filenamechar): Add '_'.
15694
15695 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
15696
15697         * mini-s390.c: Fix prolog length to allow for large trace requirements.
15698
15699         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
15700
15701 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
15702
15703         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
15704         depends on libmonogc. Fixes #68805.
15705
15706 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
15707
15708         * mini.c (mono_jit_free_method): Provide extra information for
15709         this error.  Currently this leaks, but will be turned into a
15710         developer option in the future.
15711
15712 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
15713
15714         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
15715
15716 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15717
15718         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
15719         boundary. Fixes reading of PATCH_INFO_R4 and R8.
15720         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
15721
15722 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
15723
15724         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
15725         trampolines for AOT code.
15726
15727 2004-10-22    <vargaz@freemail.hu>
15728
15729         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
15730         constructed types. Fixes #68136.
15731
15732 2004-10-21  Martin Baulig  <martin@ximian.com>
15733
15734         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
15735         if it returns true, unwind the stack to the call instruction.
15736
15737 2004-10-21    <vargaz@freemail.hu>
15738
15739         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
15740
15741         * mini.h: Bump AOT version number.
15742
15743         * objects.cs: Add another test for unbox trampolines.
15744
15745         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
15746         valuetype methods.
15747
15748 2004-10-20    <vargaz@freemail.hu>
15749
15750         * driver.c: Add SHARED to the set of optimizations tested.
15751
15752         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
15753
15754         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
15755         used by CEE_NEWARR.
15756
15757         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
15758
15759 2004-10-20  Martin Baulig  <martin@ximian.com>
15760
15761         * mini-exceptions.c (mono_handle_exception): Call
15762         mono_debugger_handle_exception() to tell the debugger about
15763         catch/finally clauses.
15764
15765 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15766
15767         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
15768
15769         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
15770         #68447.
15771
15772 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
15773
15774         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
15775         methods as their native size, fixed bug #57543, #57545.
15776         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
15777         This saves a temporary register and mullw call down into 1 (minor perf
15778         increase for cases like sum = sum * 5;  This use to translate into:
15779             li r11,5
15780             mullw r28,r28,r11
15781         It now translates to
15782             mulli r28,r28,5
15783
15784 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
15785
15786         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
15787         #68388.
15788
15789 2004-10-11  Martin Baulig  <martin@ximian.com>
15790
15791         * mini.c (mono_method_to_ir): If we're a generic method, get the
15792         MonoGenericContainer from our MonoMethodNormal and create a
15793         MonoGenericContext from it.
15794
15795 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
15796
15797         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
15798
15799         * basic-long.cs: Add test for checked i8->i2 cast.
15800
15801 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15802
15803         * inssel-ppc.brg: added a couple of speedup rules.
15804
15805 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
15806
15807         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
15808         to speed up rebuilds.
15809
15810 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15811
15812         * mini-s390.c: Minor fix to OP_OR_IMM.
15813
15814 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
15815
15816         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
15817         better. Fixes appdomain-unload.exe on sparc.
15818
15819 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
15820
15821         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
15822         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
15823         see bug 67324.
15824
15825 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
15826
15827         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
15828
15829 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
15830
15831         * mini.c: Always generate a field read/write wrapper for members
15832         of the class MarshalByRefObject since the actual instance could
15833         be a CBO.
15834
15835 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15836
15837         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
15838
15839 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15840
15841         * driver.c mini.h trace.c: Move the setting of the main assembly into
15842         a separate function called mono_trace_set_assembly () and call it after
15843         actually loading the main assembly. Fixes #66872.
15844
15845 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
15846
15847         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
15848         using the code manager.
15849
15850 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
15851
15852         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
15853
15854 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15855
15856         * cpu-amd64.md: Fix bug in previous patch.
15857         
15858         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
15859         #66650.
15860
15861 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
15862
15863         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15864         mini-exceptions.c: updates for changed stack walk interface.
15865
15866 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15867
15868         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
15869
15870 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15871
15872         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
15873
15874 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15875
15876         * driver.c (mini_regression_list): Do not call mono_assembly_close 
15877         since assemblies can't be unloaded.
15878         
15879 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15880
15881         * cpu-amd64.md: Fix more instruction lengths.
15882
15883         * cpu-amd64.md: Fix lengths of some instructions.
15884
15885 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
15886
15887         * inssel.brg: Make the array ldelema check aot friendly.
15888
15889 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15890
15891         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
15892
15893         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
15894
15895 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15896
15897         * mini-x86.c: Fix build.
15898
15899         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
15900         mono_type_get_underlying_type () helper function to simplify code.
15901         
15902 2004-09-09  Martin Baulig  <martin@ximian.com>
15903
15904         * mini-amd64.c: Don't access `type->data.klass' directly, call
15905         mono_class_from_mono_type() instead since the type may be a
15906         generic instance.
15907
15908 2004-09-09  Martin Baulig  <martin@ximian.com>
15909
15910         * mini-amd64.c (get_call_info): Fix support for generic instances.
15911         (add_valuetype): Use mono_class_from_mono_type() to get the class
15912         since we can be a generic instance.
15913
15914 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
15915
15916         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
15917
15918 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15919
15920         * liveness.c: reset spill costs on each scan: bug 62107
15921
15922 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
15923
15924         * exceptions-sparc.c (mono_arch_find_jit_info): remove
15925         unnecessary line that doesn't compile
15926
15927 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15928
15929         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
15930         trampolines, make them call an error function so people can fix their
15931         code.
15932
15933 2004-09-06  Martin Baulig  <martin@ximian.com>
15934
15935         * mini.c (mono_method_to_ir): When initializing locals, handle a
15936         generic instances like a valuetype if it's a valuetype and like a
15937         class if it's a class.
15938
15939 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
15942         stack. Fixes #64674.
15943
15944         * exceptions.cs: Add test for unwinding of call arguments.
15945
15946 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
15947
15948         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
15949         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
15950         set the carry/borrow flag). The sparc and s390 implementations
15951         can now use optimized versions (and simplify the code). ppc bugfixes.
15952
15953 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15954
15955         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
15956
15957 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
15958
15959         * inssel-amd64.brg: Remove leftover 32 bit rule.
15960
15961         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
15962
15963 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
15964
15965         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
15966         mono_arch_find_jit_info functions into a new function. Fix a memory
15967         leak.
15968
15969         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
15970         refactored code.
15971         
15972 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15973
15974         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
15975         as well.
15976         
15977         * exceptions.cs: Add array size tests.
15978
15979         * mini.c: Allocate a separate icall wrapper for each arity of 
15980         mono_array_new_va. Fixes #59509.
15981
15982         * exceptions.cs: Add testcase for 64578.
15983
15984         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
15985
15986         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
15987         
15988 2004-09-02  Martin Baulig  <martin@ximian.com>
15989
15990         * mini.c (mono_method_to_ir): When initializing the locals, call
15991         handle_initobj() on the generic instance itself, not its
15992         underlying type.
15993
15994 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15995
15996         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
15997         MonoJitInfo for dynamic methods.
15998
15999         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16000
16001         * mini.c: Add support for freeing JIT data for dynamic methods.
16002         
16003 2004-09-01  Martin Baulig  <martin@ximian.com>
16004
16005         * mini-x86.c (is_regsize_var): Added support for generic
16006         instances.
16007         (mono_arch_emit_prolog): Make this compile again, use
16008         `x86_push_imm_template (code)'.
16009
16010 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16011
16012         * mini-x86.c: make all push_imm instructions that get
16013         patched always emit the long form
16014
16015 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16016
16017         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16018         in a per-domain hash.
16019
16020         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16021         types.
16022
16023 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16024
16025         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16026         work.
16027         
16028         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16029         work.
16030
16031         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16032         Beginnings of SSE2 support.
16033
16034         * exceptions.cs: Add more tests for checked int<->uint casts.
16035
16036 2004-08-28  Martin Baulig  <martin@ximian.com>
16037
16038         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16039         generic instances.
16040
16041         * mini.c
16042         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16043         Handle generic instances recursively.
16044
16045 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16046
16047         * iltests.il: test for conv.u8 on a constant
16048
16049 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16050
16051         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16052         LCONV_x4 (shrun_32 (membase)).
16053
16054 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16055
16056         * inssel-x86.brg: c&p rules for push/setret of long
16057
16058 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16059
16060         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16061         compare (regvar, base)
16062
16063         * inssel-x86.brg: more burg love
16064
16065         * inssel.brg: more cleanup
16066
16067         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16068
16069 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16070
16071         * basic-long.cs, basic-calls.cs: new tests for optimization.
16072
16073 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16076         patch.
16077
16078 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16079
16080         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16081         
16082 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16083
16084         * inssel.brg (mini_emit_memcpy): use 
16085         NO_UNALIGNED_ACCESS to disable memcpy optimization
16086
16087 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16088
16089         * mini-amd64.c: Handle generic types in various places.
16090
16091         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16092
16093 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16094
16095         * mini.c (handle_box): Fix warning.
16096
16097         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16098
16099         * mini-amd64.h: Enable the emit_state optimization.
16100
16101         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16102
16103         * mini-amd64.c: Add some new 64 bit peephole opts.
16104
16105         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16106
16107         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16108
16109         * mini-amd64.c: Register allocator fixes.
16110
16111         * mini.c: Add an optimization to emit_state to avoid allocation of new
16112         registers on some platforms.
16113
16114 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16115
16116         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16117
16118         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16119         allocation. Fixes #63085.
16120
16121         * basic-long.cs: Add new regression test.
16122
16123         * mini-amd64.c: Register allocator improvements.
16124
16125 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16126
16127         * mini-amd64.c (read_tls_offset_from_method): Add another code
16128         sequence.
16129
16130         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16131         instruction sequence for nullifying class init trampolines.
16132
16133         * objects.cs: Add new regalloc test.
16134
16135         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16136
16137 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16138
16139         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16140         
16141         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16142         arguments.
16143
16144         * driver.c: Fix profiling after TLS changes.
16145         
16146         * driver.c (mono_main): Set mono_stats.enabled if needed.
16147
16148         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16149         CEE_BOX.
16150
16151 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16152
16153         * mini-x86.c: use a 1 op rather than a 2 op tls access
16154         instruction -> faster.
16155
16156 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16157
16158         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16159         x86 backend.
16160
16161 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16162
16163         * exceptions-sparc.c (throw_exception): fix typo
16164
16165 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16166
16167         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16168         set tree->dreg correctly with tls. Allow any
16169         register to be used.
16170
16171         * mini-x86.c (read_tls_offset_from_method): add new code
16172         generation pattern seen with GCC.
16173
16174
16175 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16176
16177         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16178         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16179         exceptions-sparc.c: fix some performance issues in exception
16180         handling and setting of the stack trace for exceptions that were
16181         already thrown.
16182
16183 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16184
16185         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16186         x86 backend.
16187         
16188         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16189         registers.
16190
16191 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16192
16193         This patch inlines tls access, when possible.
16194         
16195         * mini.h: new arch functions for TLS intrinsics.
16196         All platforms updated with a stub.
16197
16198         * mini.c: use the new intrinsics
16199
16200         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16201         arch specific intrinsic for tls variables
16202
16203 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16204
16205         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16206         under windows.
16207
16208 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16209
16210         * mini.c: thread local allocation
16211
16212 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16213
16214         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16215
16216         * Makefile.am: Link against the static version of libmonogc.
16217         
16218         * Makefile.am: Link the static versions of the convenience libraries
16219         into the mono executable.
16220
16221         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16222
16223 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16224
16225         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16226         on integer overflow.
16227
16228         * mini-amd64.c: Reorganize function call code.
16229
16230         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16231
16232 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16233
16234         * inssel-x86.brg: use xor eax,eax.
16235         
16236         * basic.cs: new tests
16237
16238 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16239
16240         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16241         in exception throwing code.
16242         
16243 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16244
16245         * inssel-x86.brg: use xor esi,esi.
16246
16247 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16248
16249         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16250         can trace methods compiled during mini_init () too.
16251
16252         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16253         CEE_CONV_U4.
16254
16255 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16256
16257         * Makefile.am: static link on x86 (r=zoltan)
16258
16259 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16260
16261         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16262         code since it causes some programs to fail.
16263
16264 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16265
16266         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16267
16268 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16269
16270         * mini.c: ovfops_op_map - add STACK_OBJ case for
16271         CONV_I 
16272         * basic.cs: add test_0_pin_string as test
16273         case for above.
16274
16275 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16276
16277         * Makefile.am: build C# if srcdir != builddir
16278
16279 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16280
16281         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16282         fall-through blocks.
16283
16284 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16285
16286         * driver.c: enable loop by default again and include abcrem in -O=all.
16287
16288 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16289
16290         * iltests.il: Add some localloc tests.
16291
16292         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16293
16294         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16295         Fixes #62574.
16296
16297         * inssel-amd64.brg: Add some optimizations.
16298
16299         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16300         for gcc-3.4.
16301
16302         * Makefile.am: Statically link mono against libmono on AMD64.
16303         
16304         * mini-amd64.c inssel-amd64.brg: Optimizations.
16305
16306 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16307
16308         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16309
16310         * tramp-amd64.c: Patch calling code in trampolines.
16311
16312 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16313
16314         * mini-amd64.c: pinvoke struct passing fixes.
16315
16316 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16317
16318         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16319         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16320
16321 2004-08-05  Duncan Mak  <duncan@ximian.com>
16322
16323         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16324         CEE_LDELEM_ANY.
16325
16326 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16327
16328         * mini-amd64.c (emit_move_return_value): Move return value for normal
16329         calls too.
16330
16331 2004-08-05  Martin Baulig  <martin@ximian.com>
16332
16333         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16334         `type->type'; just modify `type' itself when dealing with enums
16335         and generic instances.
16336         (check_call_signature): Make `simple_type' a `MonoType *'.
16337
16338 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16339
16340         * mini.c: Use OP_PADD to add offsets to addresses.
16341
16342         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16343
16344 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16345
16346         * mini-sparc.c (mono_arch_emit_epilog): fix check
16347         for folding last op into restore instruction
16348
16349 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16350
16351         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16352         helper methods using the code manager.
16353         
16354         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16355
16356         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16357
16358 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16359         
16360         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16361           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16362
16363         * mini-s390.c: fix tail processing
16364
16365 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16366
16367         * mini-ppc.c: mul.ovf.un exception name fix.
16368
16369 2004-08-03  Martin Baulig  <martin@ximian.com>
16370
16371         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16372         instances; before jumping to `handle_enum', also modify `ptype'.
16373
16374 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16375
16376         * cpu-sparc.md: fcall maximal length too small.
16377
16378 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16379
16380         * mini-amd64.c mini.h: Add initial support for passing/returning 
16381         structures to/from pinvoked methods.
16382
16383 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16384
16385         * mini-ppc.c: reg allocator fix.
16386
16387 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16388
16389         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16390
16391         * inssel.brg: Optimize memset on 64 bit machines.
16392
16393         * mini-amd64.c: Fix some vararg cases.
16394
16395 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16396
16397         * mini-s390.c: Corrected macro in emit_float_to_int
16398
16399         * s390-abi.cs: Tests to exercise the s390 ABI
16400
16401 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16402
16403         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16404         caller saved regs.
16405
16406         * basic.cs: Add a test for add.ovf.un.
16407
16408 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16409
16410         * mini-sparc.c: add case for OP_IDIV_UN
16411
16412 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16413
16414         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16415         
16416         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16417
16418 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16419
16420         * basic.cs: regression tests.
16421
16422         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16423         regressions.
16424
16425 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16426
16427         * basic.cs: Add a new test.
16428
16429         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16430         and AOT. Various fixes and optimizations.
16431
16432         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16433
16434 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16435
16436         * mini-ppc.c: make sure temp regs are not used for global reg
16437         allocation.
16438
16439 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16440
16441         * cpu-sparc.md: conv_i8 fix for 64bits
16442
16443         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
16444
16445 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
16446         
16447         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
16448         add opcode for cmp BYTE PTR [eax], imm.
16449
16450         * inssel.brg: Make memcpy and memset takes bases.
16451
16452 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16453
16454         * *-amd64.*: More AMD64 work.
16455         
16456 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16457
16458         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
16459         add a compare-not-equal opcode.
16460         
16461 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16462
16463         * mini.c: Use mono_init_from_assembly instead of mono_init.
16464         
16465 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16466
16467         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
16468
16469         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
16470
16471         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
16472
16473         * inssel.brg: 64 bit fixes.
16474
16475         * mini.h (MonoCallInst): Add some AMD64 specific data.
16476
16477         * mini.h: Add some OP_P opcodes.
16478
16479 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16480
16481         * basic.cs: tests for 61797 and 61740
16482
16483 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16484
16485         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
16486         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
16487
16488 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
16489
16490         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
16491
16492         * *-amd64*.*: Ongoing AMD64 work.
16493
16494 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
16495
16496         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
16497
16498         * *-amd64*: Ongoing AMD64 work.
16499
16500         * mini-arch.h: Add AMD64 support.
16501
16502         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
16503
16504         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
16505
16506         * mini-ops.h: Add new opcodes.
16507
16508         * Makefile.am: Add AMD64 support.
16509
16510         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
16511         rules into the inssel-long*.brg files.
16512
16513         * *-amd64.*: Add beginnings of AMD64 backend.
16514
16515 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
16516
16517         * mini.c (print_dfn): commenting out the code that prints
16518         the cil. With -O=deadce, this makes -v -v crash.
16519         
16520         * cpu-pentium.md: make checkthis have a length of 2
16521
16522 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
16523
16524         * mini-sparc.h: fix implementations of __builtin
16525         functions for Sun compiler for V9.
16526
16527 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16528
16529         * mini.c: use the new stelem.ref wrapper
16530         * exceptions.cs, arrays.cs: new stelem.ref tests
16531
16532 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16533
16534         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
16535         new XSP should work with these changes).
16536
16537 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
16538         
16539         * inssel-{long32,x86,}.brg: trivial optimizations.
16540         
16541 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16542
16543         * mini.c: load value when emitting box operation in
16544         constrained calls.
16545
16546 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
16547
16548         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
16549         is one byte shorter than cmp DWORD PTR [eax], 0.
16550
16551 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16552
16553         * inssel-ppc.brg: arguments on the stack are always
16554         relative to the stack pointer (spotted by Neale Ferguson).
16555
16556 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16557
16558         * exceptions-x86.c: delay appending the method name to the trace until
16559         after mono_jit_info_table_find is called, as this gets the real
16560         MonoMethod.
16561
16562 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16563
16564         * aot.c: register roots
16565
16566 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16567
16568         * aot.c : I could just use PLATFORM_WIN32 flag.
16569
16570 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16571
16572         * aot.c : Reverting the previous fix. This time it broke linux build.
16573
16574 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16575
16576         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
16577
16578 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16579
16580         * mini.c (handle_stack_args): Remove some more debugging code.
16581         
16582         * mini.c (handle_stack_args): Remove debug output left in by mistake.
16583
16584         * driver.c mini.h aot.c: Allow additional options to be specified with
16585         --aot and pass them to mono_compile_assembly.
16586
16587         * aot.c: Add experimental code to AOT compile all loaded assemblies
16588         on demand and save the code into a cache in the filesystem.
16589
16590         * aot.c: Add support for more wrapper methods.
16591         
16592         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
16593         58863.
16594
16595         * cpu-*.md: Remove removed opcodes.
16596
16597         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
16598         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
16599         related icalls to marshal.c.
16600
16601 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
16602
16603         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
16604
16605         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
16606
16607         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
16608
16609 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16610         * liveness.c: If liveness is recomputated we need to reset the information
16611         for each variable. This way, if the liveness range has been narrowed
16612         by optimizations that happened after the last computation, we can return
16613         a smaller range.
16614         
16615         For example, if you have
16616         
16617         {
16618                 int i = 0;
16619                 
16620                 // Tons of code that does not affect i
16621                 
16622                 i = foo ();
16623                 ...
16624         }
16625         
16626         i = 0 is dead code and will be removed by SSA. However, when
16627         linear scan gets to the code, i will still appear to be live
16628         throughout the entire block. This prevents good register allocation.
16629
16630 2004-07-06  Martin Baulig  <martin@ximian.com>
16631
16632         * debug-mini.c (mono_debug_init_method): Allow
16633         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
16634         (mono_debug_add_icall_wrapper): New method.
16635
16636         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
16637
16638 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16639
16640         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
16641         optimization.
16642
16643 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16644
16645         * aot.c (mono_aot_load_method): Fix loading of debug info.
16646
16647 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16648
16649         * aot.c: Add logging support.
16650
16651 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16652
16653         * mini.h: Add prototype for mono_print_method_from_ip.
16654
16655         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
16656
16657         * inssel.brg: 64 bit fixes.
16658
16659         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
16660         inssel-long32.brg.
16661
16662         * Makefile.am: Add SPARC64 support.
16663
16664 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16665
16666         * aot.c: Fix alignment problems on 32 bit platforms.
16667
16668 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16669
16670         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
16671         SPARC64.
16672
16673         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
16674         problems.
16675
16676         * mini.h: Bump AOT file version. Some 64 bit fixes.
16677
16678 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16679
16680         * inssel-sparc.brg: Add new rule to avoid register moves.
16681
16682         * inssel.brg: Add ldind_to_load_membase helper function.
16683
16684 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16685
16686         * mini.c: OffsetToStringData intrinsic.
16687         
16688 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16689
16690         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
16691
16692         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
16693         regression tests.
16694
16695         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
16696 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
16697
16698         * mini.c: reinstated mono_compile_get_interface_var()
16699         on x86, too, since the change breaks the Gtk# build there as well.
16700
16701 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16702
16703         * driver.c: remove loop from the default optimizations: it seems to
16704         interact badly with some of the other options (see bug #60613).
16705
16706 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
16707
16708         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
16709         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
16710
16711 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
16712
16713         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
16714         vararg-using methods.
16715
16716 2004-06-21  Martin Baulig  <martin@ximian.com>
16717
16718         * mini/mini-exceptions.c
16719         (mono_handle_exception): Added `gpointer original_ip' argument.
16720         After calling mono_unhandled_exception(), call
16721         mono_debugger_unhandled_exception() and if that returns true,
16722         restore the context and return.
16723
16724 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16725
16726         * mini-ppc.c: prefer the use of relative branches so
16727         they won't need to be patched in aot code (patch from Patrick Beard).
16728
16729 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
16730
16731         * aot.c: patch from Patrick Beard to make the output assembly
16732         more correct for the MacOSX assembler. Small tweak to
16733         generate sane images on Linux/PPC, too.
16734
16735 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16736
16737         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
16738         case until bug #59509 is fixed (shows up in #60332).
16739
16740 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16741
16742         * mini.c: make sure the needed wrappers are compiled, too, with
16743         precomp.
16744
16745 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
16746
16747         * driver.c: remove NPTL reference in --version output.
16748
16749 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16750
16751         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
16752         generate valid assembly for the Mach-O assembler.
16753
16754 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
16755
16756         * driver.c: don't include abcrem in the all optimization specifier
16757         since it slows down jit compilation too much for now.
16758
16759 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
16760
16761         * mini.c: use BIGMUL only if both operands have the same signage.
16762         * iltests.il: Test for bug 60056. (errors related to signage in
16763         BIGMUL).
16764
16765         r=lupus.
16766
16767 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
16768
16769         * mini.c, aot.c: memory leak fixes.
16770
16771 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16772
16773         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
16774
16775 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
16776
16777         * Makefile.am: remove the -static hack completely, it links in
16778         statically glib as well.
16779
16780 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
16781
16782         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
16783         * exceptions.cs: make it compile with new mcs/csc.
16784
16785 2004-06-03 Massimiliano Mantione <massi@ximian.com>
16786         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
16787         and added relevant test case.
16788
16789 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
16790
16791         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
16792         regressions in gtk-sharp.
16793
16794 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
16795
16796         * exceptions.cs: New regression tests.
16797
16798         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
16799
16800 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
16801
16802         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
16803
16804 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
16805
16806         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
16807
16808         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
16809
16810 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
16811
16812         * mini.c (mono_jit_runtime_invoke): Init class in this
16813         method instead of trusting mono_jit_compile_method to
16814         do the work (because wrappers can be in object class)
16815
16816 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
16817
16818         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
16819
16820         * basic-long.cs: New regression test.
16821
16822 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
16823
16824         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
16825         and div/rem checks.
16826
16827 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
16828
16829         * Makefile.am: fix miguel's change to build mono statically against
16830         libmono (track build dependencies).
16831
16832 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16833
16834         * cfold.c: Some glib versions do not have G_MININT32.
16835
16836 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
16837
16838         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
16839         with precision of tan, atan, sin and cos, and implemented related
16840         regressions tests (fixes bug 54467, but one new problem appeared and
16841         is not fixed yet).
16842
16843 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16844
16845         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
16846
16847         * exceptions.cs: Add test for constant folding && division by zero.
16848
16849         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
16850         since driver.c is in libmono too, so the optimization was useless.
16851
16852         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
16853         variable to driver.c so the compiler can emit more efficient code to
16854         access them.
16855
16856 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16857
16858         * Makefile.am: don't distribute generated inssel.[ch] files.
16859
16860 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16861
16862         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
16863         into the default appdomain. Fixes #58707.
16864
16865         * jit-icalls.c: Remove the broken approximation for truncl, doing
16866         no conversion is better.
16867
16868         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
16869         Fixes #58863.
16870
16871 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
16872
16873         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
16874         of the mcrxr instruction which is not available on some processors
16875         even if it's documented to be. Implement add and sub overflow correctly
16876         (still not complete for long unsigned). Speed up icalls a bit.
16877
16878 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
16879
16880         * mini.c (mono_jit_compile_method_with_opt): Make sure that
16881         we run .cctor in the current domain instead of target_domain.
16882         
16883         Fixes bug #58558, .cctor not being called in -O=shared.
16884
16885 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16886
16887         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
16888
16889 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
16890
16891         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
16892         which can be done with an imm8, do it that way.
16893         (mono_arch_output_basic_block): ditto for a jmp
16894         (mono_arch_emit_prolog): Computate maximum offset of a label.
16895
16896 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
16897
16898         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
16899         now tries to allocate prefered physical reg's for virtual
16900         regs. This reduces the number of emited spills/loads with
16901         20-30% on our core assemblies.
16902
16903 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16904
16905         * jit-icalls.c: truncl() is not needed and trunc() is
16906         the correct thing to do anyway (bug #58287).
16907
16908 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
16909
16910         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
16911         if available.
16912
16913 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16914
16915         * driver.c: enable loop optimizations by default.
16916
16917 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
16918
16919         * mini-x86.c: fix calc of max loop size when aligning loops start.
16920
16921 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
16922
16923         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
16924         the stack.
16925
16926 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
16927
16928         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
16929         should set carry.
16930
16931         * basic-long.cs: Add tests for add/subtract of immediates with carry.
16932
16933         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
16934         
16935         * mini.c (inline_method): Allways inline some wrappers even if the cost
16936         is too large. Fixes #58785.
16937
16938         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
16939         
16940 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
16941
16942         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
16943         (crichton@gimp.org). Beginning of support for sparc/linux.
16944
16945         * mini-sparc.c: Optimize retrieval of LMF address.
16946
16947 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
16948
16949         * exceptions-ppc.c:  handle alloca in methods with clauses.
16950
16951 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
16952
16953         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
16954
16955 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
16956
16957         * mini.c: Delegate most of the abort signal work to 
16958           mono_thread_request_interruption, which also handles Stop and Suspend
16959           states.
16960
16961 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
16962
16963         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
16964         supports the save/restore lmf opcodes.
16965
16966 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
16967
16968         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
16969         by gcc-3.4 as well.
16970
16971         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
16972
16973 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16974
16975         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
16976         methods which contain array accesses.
16977
16978         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
16979         boundaries. Fixes #58537.
16980
16981         * iltests.il: Add regression test for #58537.
16982
16983 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
16984
16985         * mini-x86.c (mono_arch_local_regalloc): Last part of
16986         fix for bug #58633 (releasing register to early).
16987
16988 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
16989
16990         * basic-long.cs: Add new regression test.
16991
16992 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
16993
16994         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
16995         register too early on the chain.
16996
16997 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16998
16999         * mini.c (create_helper_signature): Use a helper function to reduce
17000         the code which needs to be written. Also set the calling convention of
17001         icalls on windows. Fixes #57840.
17002
17003 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17004
17005         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17006         exceptions-ppc.c: added helper function to get the instruction address
17007         from a signal handler context.
17008
17009 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17010
17011         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17012         from gonzalo.
17013
17014 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17015
17016         * helpers.c: Add new env variable to pass args to objdump.
17017         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17018
17019 2004-05-17  Radek Doulik  <rodo@ximian.com>
17020
17021         * Makefile.am (common_sources): added abcremoval.h so it get
17022         disted and daily mono packages on go-mono.com will build again
17023
17024 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17025
17026         * abcremoval.c: Fixed coding style, added copyright header.
17027
17028         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17029
17030         * mini.h: Added prototype for abc removal main function.
17031
17032         * build_relations_propagation_table.pl: Added copyright header.
17033
17034 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17035
17036         * basic-long.cs: reg test for complex ceq_long bug.
17037
17038 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17039
17040         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17041         reg in long and clob case (bug #58343). Fixed/added comments.
17042
17043 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17044
17045         * mini.c (mono_jit_runtime_invoke): Follow new convention
17046         of calling the invoke method with an function pointer.
17047
17048 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17049
17050         * ChangeLog: Fix author of memory leak patch.
17051
17052 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17053
17054         * Makefile.am: fix make dist as well...
17055
17056
17057 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17058
17059         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17060         on archs where pointers are 4 bytes long.
17061
17062         * Makefile.am: Added abcremoval.c source file.
17063
17064         * abcremoval.c: Added abcremoval.c.
17065
17066         * abcremoval.h: Added abcremoval.h.
17067
17068         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17069
17070         * inssel.brg: Enabled bounds check removal.
17071
17072         * mini.c: Added support for abcrem optimization.
17073
17074         * mini.h: Added abcrem optimization label.
17075
17076         * driver.c: Added support for abcrem optimization.
17077
17078         * propagated_relations_table.def: Added propagated_relations_table.def.
17079
17080 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17081
17082         * mini.c, cfold.c: fix style.
17083
17084 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17085
17086         * mini.c: handle issue with the low-level implementation of
17087         some long opcodes (bug #54209).
17088
17089 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17090
17091         * basic.cs: test for my new cmov stuff.
17092
17093 2004-05-13      Patrik Torstensson
17094
17095         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17096         opt and added peephole documentation.
17097
17098 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17099
17100         * tramp-ppc.c: rewrote the generic trampoline code.
17101
17102 2004-05-11      Patrik Torstensson
17103
17104         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17105
17106 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17107
17108         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17109
17110         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17111         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17112
17113         * mini.c: Add new icalls for AsAny marshalling.
17114
17115 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17116
17117         * tramp-ppc.c, mini-ppc.c: more cleanups.
17118
17119 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17120
17121         * mini.c: no warnings.
17122
17123 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17124
17125         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17126
17127 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17128
17129         * mini.c: In the thread abort signal handler, if the thread is in the
17130         process of being stoped, don't throw the Abort exception, just stop the
17131         thread.
17132
17133 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17134
17135         * tramp-ppc.c: removed old code.
17136
17137 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17138
17139         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17140         do some simple speed optimizations on ppc.
17141
17142 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17143
17144         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17145         and large offsets in load/store.
17146
17147 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17148
17149         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17150         it causes regressions.
17151
17152 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17153
17154         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17155         support.
17156
17157 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17158
17159         * jit-icalls.c: remove warnings.
17160         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17161         speedups for unsafe code.
17162
17163 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17164
17165         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17166
17167 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17168
17169         * basic-calls.cs: Add new regression test.
17170
17171         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17172         more portable.
17173
17174         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17175
17176         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17177         is no longer used.
17178
17179 2004-05-06      Patrik Torstensson
17180
17181         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17182         long reg allocation in any reg (not only eax:edx) and implemented 
17183         long shl/shr ops in asm instead of helpers.
17184
17185 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17186
17187         * mini-sparc.h: Fix warnings.
17188
17189         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17190         stack.
17191
17192         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17193         separate statement for clarity.
17194
17195         * mini-sparc.c: Update status.
17196
17197 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17198
17199         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17200         here.
17201
17202 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17203
17204         * inssel-ppc.brg: another small pre-release workaround:
17205         we don't do overflow detection for long_sub_un.
17206
17207 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17208
17209         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17210         (also works around a weird ppc bug: 57957).
17211
17212 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17213
17214         * tramp-ppc.c: trampoline fixes.
17215
17216 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17217
17218         * mini-ppc.c: fixed typos.
17219
17220 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17221
17222         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17223         at the top of the stack. Fixed typos. Use a frame registers
17224         for all the methods with exception clauses.
17225
17226 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17227
17228         * exceptions-ppc.c: restore fp registers.
17229
17230 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17231
17232         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17233         order from the stack top (moved the stack room to save the
17234         return value for trace after the param area). Fixed corruption
17235         in restoring registers on unwind.
17236
17237 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17238
17239         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17240
17241 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17242
17243         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17244         and prolog/epilog for methods that use it. Allow
17245         enough param area room for varargs methods. Fix miguel's
17246         breakage in exception handling.
17247
17248 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17249
17250         * Makefile.am: run genmdesc only on current arch.
17251
17252 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17253
17254         * exceptions-x86.c:
17255         * mini-x86.h: fix the build on windows.
17256
17257 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17258
17259         * 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.
17260
17261         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17262
17263         * mini-exceptions.c: New file.
17264         
17265         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17266         Move some parts of the x86 exception handling code to an 
17267         arch-independent file so it can be shared with other ports.
17268
17269 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17270
17271         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17272
17273 2004-04-26  David Waite  <mass@akuma.org>
17274
17275         * driver.c: remove comma from end of enumeration declaration
17276
17277 2004-04-26  Jackson Harper  <jackson@ximian.com>
17278
17279         * driver.c: parse config file before loading first assembly. This
17280         allows the user gac to be enabled/disabled. 
17281         
17282 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17283
17284         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17285         simpler mechanism: we do not care what is encoded initially
17286         (branch absolute or relative), we care about the code and its
17287         target.  I kept the old code for reference for now.
17288
17289         The new code tries first to determine if the jump is anywhere in
17290         the -/+32 absolute meg range, if it succeeds, it encodes using the
17291         absolute branch;  If not, it tried to find something in the
17292         relative range, if not, it uses the handle_thunk code. 
17293
17294 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17295
17296         * exceptions-ppc.c: use the correct ip register on macosx.
17297
17298 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17299
17300         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17301
17302 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17303
17304         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17305         Raise exception on integer divide by zero by hand since the hw
17306         doesn't support it. Handle NaNs in FP compares.
17307
17308 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17309
17310         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17311         code reducing duplication between the platforms and enabled
17312         signal exception handling (on linux for now).
17313
17314 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17315
17316         * exceptions-ppc.c: more macosx support.
17317
17318 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17319
17320         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17321
17322 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17323
17324         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17325
17326 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17327
17328         * iltests.il: more tests.
17329
17330 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17331
17332         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17333         vars as well.
17334
17335 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17336
17337         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17338
17339 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17340
17341         * liveness.c: Mark variables as volatile in all basic blocks reachable
17342         from exception clauses.
17343
17344 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17345
17346         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17347         inlining.
17348
17349 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17350
17351         * iltests.il, basic.cs: more tests for regalloc.
17352
17353 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17354
17355         * iltests.il: Some tests for register allocation modifications
17356         I have locally.
17357
17358 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17359
17360         * exceptions.cs: Add regression test for bug #56782.
17361
17362         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17363         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17364         the beauty of fixing the same thing in 5 different files...
17365
17366 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17367
17368         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17369         methods.
17370
17371 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17372
17373         * mini.c: Add support for STRWLPARRAY marshalling convention.
17374
17375 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17376
17377         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17378         to init the context to setup the regs pointer).
17379
17380 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17381
17382         * exceptions-ppc.c: more exceptions work.
17383
17384 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17385
17386         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17387         not allowed.
17388
17389 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17390
17391         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17392         can use the memory directly.
17393
17394         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17395
17396         add x86_add_membase, x86_sub_membase, x86_mul_membase
17397
17398 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17399
17400         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17401         GENERAL_REGS they were also hardcoded for all PPC ports.
17402
17403         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17404
17405         Remove hard-coded limit for floating point registers, use
17406         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17407
17408         Notice that in MacOS X calling conventions you can fit a lot more
17409         floating point values in registers, so I should update the PInvoke
17410         test to excercise the passing of floating point values on the
17411         stack (currently broken).
17412         
17413 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17414
17415         * tramp-ppc.c (create_trampoline_code): Added
17416         JUMP_TRAMPOLINE_SIZE. 
17417         (ppc_magic_trampoline): Follow the pattern from
17418         x86_magic_trampoline: if code is set to zero, return. 
17419         (create_trampoline_code): Always pass MonoMethod to the jump
17420         trampoline, before it was passing a null.
17421         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17422         share the code with mono_arch_create_jit_trampoline. 
17423
17424         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17425         implemented.
17426         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17427         implemented.  
17428
17429         * cpu-g4.md: Added length for jmp instruction, the worst case
17430         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17431         for save_lmf).
17432
17433 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17434
17435         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17436
17437 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17438
17439         * mini.c: Only set bblock->real_offset when adding a new bblock, and
17440         before each IL instruction.
17441
17442         * mini.c (CEE_BOX): Fix warnings.
17443
17444 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17445
17446         * mini.c: removed a few unused vars and extra whitespace.
17447
17448 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
17449
17450         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
17451         checks.
17452         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
17453         index.
17454         (OP_GETCHR): use the above
17455         (CEE_LDELEMA): use the above.
17456
17457         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
17458         version of the generic impl.
17459         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
17460         (CEE_LDELEMA): use the above.
17461
17462 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17463
17464         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
17465         Fixes #56317.
17466
17467         * iltests.il: Added new regression test for #56317.
17468
17469 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17470
17471         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
17472         under NetBSD. Fixes #56450.
17473
17474         * liveness.c (update_gen_kill_set): Fix previous patch.
17475
17476 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17477
17478         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
17479
17480 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17481
17482         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
17483         ldsfld and ldsflda.
17484
17485         * inssel-sparc.brg: Add more optimizations.
17486
17487         * mini-sparc.c: Replace multiply/divide with shifts if possible.
17488
17489 2004-04-01  Martin Baulig  <martin@ximian.com>
17490
17491         * mini.c (handle_box): New static function; moved the
17492         implementation of CEE_BOX here.
17493         (mono_method_to_ir): Added `constrained_call' variable.
17494         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
17495         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
17496         mono_method_get_constrained() to get the method.
17497
17498 2004-04-01  Martin Baulig  <martin@ximian.com>
17499
17500         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
17501         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
17502         (mono_method_to_ir): We don't need these macros anymore since
17503         mono_class_get_full() already takes care of it. 
17504
17505 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17506
17507         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
17508         use @function (as doesn't accept #function here) and check the return
17509         value of system and stop if fails.
17510
17511 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17512
17513         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
17514
17515 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
17516
17517         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
17518
17519         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
17520
17521         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
17522         #56223.
17523
17524         * basic-long.cs: Add test for negation of Int64.MinValue.
17525
17526 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
17527
17528         * mini-sparc.c: Update status.
17529
17530         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
17531
17532         * exceptions-sparc.c: Fix return value in filters.
17533
17534         * inssel-sparc.brg: Fix register allocation in some rules.
17535
17536 2004-03-28  Martin Baulig  <martin@ximian.com>
17537
17538         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
17539         if neccessary.  
17540
17541 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17542
17543         * mini-x86.c (mono_arch_patch_code): Fix warnings.
17544         
17545         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
17546         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
17547         remove unused conv_u4 opcode.
17548
17549         * mini-x86.c: Remove valgrind workaround since it slows down things
17550         even when mono is not run under valgrind.
17551
17552 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
17553
17554         * mini-sparc.c: Update status.
17555
17556         * inssel-sparc.brg: Add some optimizations.
17557
17558         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
17559         future delay slot filling. Add support for varargs, tail calls and JMP.
17560
17561         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
17562         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
17563
17564         * inssel.brg: Fix register allocation in OP_ARGLIST.
17565
17566         * inssel.brg: Fix warnings.
17567
17568 2004-03-25  Martin Baulig  <martin@ximian.com>
17569
17570         * mini.c (inflate_generic_field): Removed.
17571         (mini_get_method): Removed, use mono_get_method_full(),
17572         (mini_get_class): Removed, use mono_class_get_full().
17573         (mono_method_to_ir): Pass our generic context to
17574         mono_field_from_token().        
17575
17576 2004-03-25  Martin Baulig  <martin@ximian.com>
17577
17578         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
17579         of a `MonoMethod *'.
17580         (mini_get_method): Take a `MonoGenericContext *' instead
17581         of a `MonoMethod *'.
17582         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
17583         a new local variable called `generic_context' which holds the
17584         current `MonoGenericContext *'; use it to lookup things.
17585
17586 2004-03-24  Martin Baulig  <martin@ximian.com>
17587
17588         * mini.c (mini_get_class): New static method; if we're inside a
17589         generic instance, inflate the class if neccessary.
17590         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
17591
17592 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17593
17594         * iltests.il: New regression test for #55976.
17595
17596         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
17597         #55976.
17598
17599 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17600
17601         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
17602         output.
17603
17604 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17605
17606         * liveness.c: Consider SSA stores as well as loads when making vars
17607         volatile.
17608
17609         * exceptions.cs: New regression tests for register allocation.
17610         
17611 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17612
17613         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
17614         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
17615           domain lock only to protect puntual access to data structures.
17616           Added access lock for sighash, jit_icall_hash_name, 
17617           jit_icall_hash_addr and domain->code_mp.
17618
17619 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
17620
17621         * driver.c: Print SIGSEGV handling method.
17622
17623         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
17624
17625         * mini.c (setup_jit_tls_data): Handle case when this is called
17626         multiple times for a thread.
17627
17628         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
17629         is different from fbxx_un. Fixes #54303. Also use constants instead of
17630         magic numbers in a lot of places.
17631
17632 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
17633
17634         * exceptions.cs: Fix cctor test when --regression is used.
17635
17636 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
17637
17638         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
17639         for Linux/ppc.
17640
17641 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17642
17643         * inssel-ppc.brg: fixed register assignments for some rules.
17644
17645 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17646
17647         * exceptions.cs: Add test for exceptions in static constructors.
17648
17649         * mini.c (mono_jit_compile_method_with_out): Move the calling of
17650         static constructors outside the domain lock. Fixes #55720.
17651
17652 2004-03-17  Martin Baulig  <martin@ximian.com>
17653
17654         * mini.c (get_generic_field_inst): Removed, this'll never happen.
17655         (inflate_generic_field): Take the `MonoMethod *' instead of the
17656         `MonoClass *' and added support for generic method.
17657         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
17658         have a `field->parent->gen_params', only inflate the field if it's
17659         an open constructed type.
17660
17661 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
17664         exception object instead of the preconstructed ones.
17665
17666 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17667
17668         * mini.c: reverted changed to sigsegv_signal_handler commited
17669         accidentally in the previous patch.
17670
17671 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17672
17673         * mini.c:
17674         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
17675         running --aot with an old assembly.
17676
17677 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17678
17679         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
17680         point values.
17681
17682         * mini-sparc.c: Add support for v9 branches with prediction.
17683
17684 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
17685
17686         * mini.c (mini_init): #warning is GNUC only
17687
17688         * mini-sparc.h: implement __builtin_frame_address
17689         and __builtin_return_address for Sun C compiler
17690
17691 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
17692
17693         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
17694
17695 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17696
17697         * basic-calls.cs: Add test for unaligned byref long argument passing.
17698
17699         * mini-ops.h: Add sparcv9 compare and branch instructions.
17700
17701         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
17702         v9 instructions if we have a v9 cpu.
17703
17704         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
17705         registers for global allocation.
17706
17707         * exceptions-sparc.c: Fixes.
17708         
17709 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
17710
17711         * liveness.c (mono_analyze_liveness): Optimized version.
17712
17713         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
17714
17715         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
17716         sparc work.
17717
17718         * basic-float.cs basic-calls.cs: New regression tests.
17719
17720 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
17721
17722         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
17723         sigaltstack implementation.
17724
17725         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
17726         
17727         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
17728         stuff if SIGSEGV_ON_ALTSTACK is not defined.
17729
17730 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17731
17732         * mini.c: Fix warnings.
17733         
17734         * mini.c (mono_resolve_patch_target): New function which contains the
17735         arch independent part of the patching process.
17736
17737         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
17738         patching code to a separate function.
17739
17740 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
17741
17742         * mini.c (add_signal_handler): ifdef out on Windows
17743
17744 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
17745
17746         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
17747         cpu-sparc.md: Add exception handling support + other fixes.
17748
17749         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
17750         typed GC detection in --version.
17751
17752         * basic.cs exceptions.cs: New regression tests.
17753
17754         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
17755         the arch specific code can store data during a compilation.
17756
17757         * mini-ops.h: Add OP_SETFRET.
17758
17759         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
17760         function, register a separate icall for each arity, so the icalls can
17761         get a wrapper.
17762         
17763         * mini.c (mono_print_tree): Print negative offsets in a more readable
17764         form.
17765         
17766         * mini.c: Make signal handling work on sparc.
17767         
17768         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
17769
17770         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
17771
17772         * jit-icalls.c: Emulate truncl by aintl on solaris.
17773
17774         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
17775
17776 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
17777
17778         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
17779
17780 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
17781
17782         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
17783         a MarshalByRef type, inline a method that performs the check, taking into
17784         account that the object can be a proxy. Also implemented tow new opcodes:
17785         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17786         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
17787         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17788
17789 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
17790
17791         * mini-ppc.c: if a relative branch displacement is too big
17792         but it points to and area reachable with an absolute branch, 
17793         avoid the thunks.
17794
17795 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
17796
17797         * mini.c: optimize small copies in cpblk.
17798
17799 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
17800
17801         * basic-calls.cs basic-float.cs: New regression tests.
17802
17803         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
17804         negative offsets from %fp. Implement localloc. Fix local register 
17805         allocation. Fix the case when the this argument needs to be saved to
17806         the stack. Implement some missing opcodes.
17807
17808 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
17809
17810         * mini.c (mini_method_compile): Reenable global regalloc in methods
17811         with exception handlers.
17812
17813         * linear-scan.c (mono_varlist_sort): Fix warning.
17814
17815         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
17816
17817         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
17818         regalloc costs.
17819
17820         * liveness.c: Make all variables uses in exception clauses volatile, to
17821         prevent them from being allocated to registers. Fixes #42136.
17822
17823 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
17824
17825         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
17826         causes regressions.
17827
17828         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
17829         argument to mono_arch_regalloc_cost.
17830
17831         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
17832         precisely.
17833
17834 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
17835
17836         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
17837         Make the cost of allocating a variable to a register arch dependent.
17838
17839         * basic-calls.cs: Fix compilation of tests.
17840         
17841         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
17842         helper function to cut back on the number of #ifdefs needed.
17843
17844         * mini-ppc.c: Fix compilation.
17845
17846         * basic-calls.cs: New regression tests.
17847
17848         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
17849
17850         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
17851         of l0 since that is callee saved.
17852
17853         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
17854         to virtual calls.
17855
17856         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
17857         of delay instruction.
17858
17859         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
17860
17861         * mini.h (MonoCallInst): Add 'virtual' flag.
17862
17863         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
17864
17865 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
17866
17867         * *.cs: New regression tests.
17868
17869         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
17870         work.
17871
17872         * mini.c (mono_runtime_install_handlers): Fix build.
17873
17874         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
17875         'signal_stack_size' members.
17876
17877         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
17878         alternate signal stack.
17879
17880         * exceptions-x86.c: Add stack overflow handling.
17881
17882         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
17883         functions to arch independent code.
17884
17885         * mini.c (mono_print_tree): Print more detailed info for load_membase
17886         opcodes.
17887         
17888 2004-02-23  Martin Baulig  <martin@ximian.com>
17889
17890         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
17891
17892 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17893
17894         * mini-x86.c: fixed reg allocation for div/rem.
17895
17896 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
17897
17898         * driver.c (mono_main): Report some configuratio options on --version.
17899
17900 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
17901
17902         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
17903         low in the address space. Correctly flush memory in thunks where we
17904         output native code.
17905
17906 2004-02-20  Martin Baulig  <martin@ximian.com>
17907
17908         * mini.c (mini_get_method): New static method; inflate all generic
17909         methods and methods in open generic instances.
17910         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
17911         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
17912
17913 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
17914
17915         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
17916
17917         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
17918
17919 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
17920
17921         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
17922
17923         * mini-sparc.c (flushi mono_arch_output_basic_block): make
17924         it compile using Sun's compiler.
17925
17926 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * 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.
17929
17930         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
17931
17932 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17933
17934         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
17935         code.
17936         * mini-ppc.c: handle calls outside of the allowed range with thunks
17937         allocated using the code manager.
17938         * tramp-ppc.c: use the code manager to hold generated native code.
17939         Fixed the magic trampoline to just patch vtable entries.
17940
17941 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
17942
17943         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
17944         independent file.
17945
17946 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
17947
17948         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
17949         PPC.
17950
17951         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
17952         if we have a working __thread implementation.
17953
17954         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
17955         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
17956
17957 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
17958
17959         * mini-x86.c: Fix compilation under gcc 2.
17960         
17961 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
17962
17963         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
17964         contains a call to the wrapped function.
17965
17966         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
17967         OP_<CALL>_IMM opcodes, and use them under X86.
17968         
17969         * mini.c (mono_jit_find_compiled_method): Fix warning.
17970
17971         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
17972
17973         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
17974
17975         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
17976         functionality to mini.c.
17977
17978         * mini.c (mono_create_jump_trampoline): New function to create a jump
17979         trampoline. Return a compiled method instead of a trampoline if it
17980         exists. Add a cache for jump trampolines.
17981
17982         * mini.c (mono_jit_find_compiled_method): New function to return a
17983         compiled method if it exists.
17984
17985         * mini-x86.c: Call mono_create_jump_trampoline instead of 
17986         mono_arch_create_jit_trampoline.
17987
17988         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
17989         a jump trampoline. Fixes #52092.
17990         
17991 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
17992
17993         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
17994         which is not up-to-date. Add check_corlib_version () instead.
17995
17996         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
17997         have to call it.
17998         
17999         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18000         since newer valgrind versions do not need it.
18001
18002         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18003         compile a method with a given set of optimizations.
18004
18005         * mini.c: Compile icall wrappers on-demand instead of at startup.
18006
18007         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18008         wrapper for an icall.
18009
18010 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18011
18012         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18013         #54063.
18014
18015         * iltests.il: Add test for non-empty stack before switch instruction.
18016
18017 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18018
18019         * mini.c: Add support for new stringbuilder marshalling conventions.
18020
18021         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18022
18023 2004-02-01  Martin Baulig  <martin@ximian.com>
18024
18025         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18026         in `ginst->mtype_argv'.
18027
18028 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18029
18030         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18031         facilitate grepping.
18032
18033 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18034
18035         * mini.c: fixed buglet in initobj generic implementation for references.
18036
18037 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18038
18039         * Makefile.am: make the version script conditional.
18040         * jit-icalls.c: handle missing truncl().
18041
18042 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * exceptions.cs: Add more tests for double->int conversion.
18045
18046         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18047         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18048
18049 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18050
18051         * driver.c: make --verbose --version emit an error
18052         if the loaded corlib doesn't match the runtime version.
18053
18054 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18055
18056         * mini-ppc.h: export ppc_patch().
18057         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18058         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18059         on par or better than on MacOSX.
18060
18061 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18062
18063         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18064         mono_lookup_pinvoke_call.
18065
18066         * mini-x86.c: Under windows, the default pinvoke calling convention is
18067         stdcall. Fixes #52834.
18068
18069         * mini.c (optimize_branches): Add an upper bound to the number of
18070         iterations to prevent infinite loops on strange loops. Fixes #53003.
18071
18072 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18073
18074         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18075         and ISINST. Fixes #52093.
18076
18077         * objects.cs (test_0_vector_array_cast): New tests.
18078         
18079 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18082         checking in Array.Set ().
18083
18084         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18085         #52590.
18086
18087         * object.cs (test_0_multi_array_cast): New regression test.
18088
18089 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18090
18091         * exceptions-ppc.c: fix build on Linux/PPC.
18092
18093 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18094
18095         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18096         running under valgrind.
18097         (x86_magic_trampoline): Fix build bustage.
18098
18099         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18100         negative values as well. This is needed for the encoding of the line number
18101         info, since sometimes the line numbers are not in increasing order.
18102
18103 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18104
18105         * cpu-pentium.md (localloc): Increase the size of the localloc 
18106         instruction since it is a loop under Win32.
18107
18108         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18109         allocation.
18110
18111 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18112
18113         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18114         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18115         Max Horn (max@quendi.de). Fix file names in comments.
18116
18117 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18120         avoid stack overflow.
18121         (replace_usage): Avoid uninitialized variable warnings.
18122
18123         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18124         and taking the address of valuetype variables.
18125
18126 2004-01-03  Patrik Torstensson
18127
18128         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18129         for other purposes than FP later on.
18130
18131 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18132
18133         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18134         of tail calls.
18135
18136 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18137
18138         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18139
18140 2003-12-30  Patrik Torstensson <p@rxc.se>
18141
18142         * mini-x86.h: Decreased number of availiable fp regs.
18143         Solves corner cases with FP spilling.
18144
18145 2003-12-23  Patrik Torstensson <p@rxc.se>
18146
18147         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18148         for floating point stack tracking / spilling on x86. 
18149         Fixes bug #49012.
18150         
18151         * basic-float.cs: added float mul overflow test.
18152
18153 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18154
18155         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18156
18157 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18158
18159         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18160         supports for cond branches that overflow the immediate
18161         overflow offset. mcs can compile simple programs.
18162
18163 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18164
18165         * exceptions-ppc.c: exception handling support wip:
18166         finally handlers get run on exception.
18167
18168 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18169
18170         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18171         profiling.
18172
18173 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18174
18175         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18176         initial support for stack walking and unwinding.
18177
18178 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18179
18180         * driver.c (mono_main): Make corlib-out-of-sync message more 
18181         descriptive. Also remove verify_corlib call.
18182
18183 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18184
18185         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18186         not overlap with other call's arguments, too.
18187
18188 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18189
18190         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18191         move to arch-specific code the choice of arch-specific
18192         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18193         * mini.c: ensure emulation calls will not interleave
18194         with other calls.
18195
18196 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18197
18198         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18199         the magic trampoline stack frame is dropped before executing
18200         the new method.
18201
18202 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18203
18204         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18205         and integer to fp conversions. Added support for overflowing
18206         arguments on the stack. Reserve a couple more registers as temps.
18207         Added support for aot compilation (as output still needs to be
18208         tweaked, though).
18209
18210 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18211
18212         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18213         Don't overwrite return register in some corner cases.
18214
18215 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18216
18217         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18218         static constructors when AOT compiling.
18219
18220         * driver.c (mono_main): Call mono_check_corlib_version.
18221
18222 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18223
18224         * cpu-g4.md, basic.cs: fixed div target register.
18225
18226 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18227
18228         * mini-ppc.c, basic.cs: shl_imm fix with test.
18229
18230 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18231
18232         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18233         structures by value. Misc fixes.
18234         * objects.cs: more tests.
18235
18236 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18237
18238         * mini-ppc.c: lconv.ovf.i implemented.
18239
18240 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18241
18242         * mini.c:
18243         (mini_init): don't error out if someone already called g_thread_init.
18244
18245 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18246
18247         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18248         to be any type per the spec. Fix abnormal memory usage when
18249         the same object is repeatedly thrown.
18250
18251 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18252
18253         * mini.c: check for overruns in IL code.
18254
18255 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18256
18257         * TODO: Add/remove some todo entries.
18258
18259 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18260
18261         * driver.c (mono_main): Call mono_verify_corlib.
18262
18263 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18264
18265         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18266         This has been moved to mini.c
18267         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18268         type being casted is marshalbyref it could be a proxy, so instead of
18269         emitting the type check code, emit a call to a runtime method that will
18270         perform the check by calling CanCastTo if needed.
18271
18272 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18273
18274         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18275         methods with large stack frames under Win32.
18276
18277 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * Makefile.am: Distribute regression tests.
18280
18281         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18282         at the end instead of inserting each variable into the sorted list.
18283
18284         * linear-scan.c (mono_varlist_sort): New helper function.
18285         
18286 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18287
18288         * mini.c: ensure arguments and locals are within bounds.
18289
18290 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18291
18292         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18293         related fixes.
18294
18295 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18296
18297         * mini.c (mono_cprop_copy_values): Fix crash.
18298
18299         * aot.c: Set verbosity back to 0.
18300         
18301 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18302
18303         * regalloc.c: complete memory leak fix by Laurent Morichetti
18304         (l_m@pacbell.net).
18305
18306 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18307
18308         * driver.c (main_thread_handler): Revert the previous patch.
18309
18310         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18311         under valgrind.
18312
18313         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18314         memory from the memory pool.
18315
18316         * driver.c (main_thread_handler): Turn on all optimizations when
18317         --aot is used.
18318
18319         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18320         an array for better performance.
18321
18322         * regalloc.c (mono_regstate_assign): Fix memory leak.
18323
18324         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18325         serialize the debug info.
18326
18327         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18328         debug info from the serialized representation.
18329
18330         * aot.c: Save debug info into the generated file and load it when 
18331         loading a method.
18332
18333         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18334
18335 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18336
18337         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18338         More FP-related fixes.
18339
18340 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18341
18342         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18343         and register allocation buglet. Hello world now runs.
18344
18345 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18346
18347         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18348         * tramp-ppc.c: fixed class init trampoline.
18349         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18350
18351 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18352
18353         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18354         mini.c: more ppc changes/fixes.
18355
18356 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18357
18358         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18359         Also optimize the case when the arguments are the same in the caller 
18360         and in the callee.
18361
18362         * iltests.il: Add tests for tail calls with valuetype arguments.
18363
18364 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18365
18366         * mini-ppc.c: fixes for struct return type.
18367
18368 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18369
18370         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18371         mono_spillvar_offset() to arch-specific code.
18372
18373 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18374
18375         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18376
18377 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * exceptions-x86.c: Fix stack space leaks.
18380         
18381         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18382         registers from the lmf if the method has save_lmf set.
18383
18384 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18385
18386         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18387         of icall wrappers into InvokeInDomain, since these are now per-domain.
18388
18389 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18390
18391         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18392         make some opcode emulation and intrinsic ops enabled/disabled 
18393         according to the architecture. More fixes.
18394
18395 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18396
18397         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18398
18399 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18400
18401         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18402         arch-specific handling for 'this' and struct return type to
18403         arch-specific code.
18404
18405 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18406
18407         * aot.c: prevent divide by zero error when reporting (it happened with
18408         Accessibility.dll).
18409
18410 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18411
18412         * mini.h (inst_switch): Remove unused macro.
18413
18414 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18415
18416         * aot.c:
18417         (load_aot_module): free 'info->methods' and 'info' properly. No more
18418         "free(): invalid pointer blah" messages when you have an old aot
18419         compiled assembly.
18420
18421 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18422
18423         * jit-icalls.c, mini.c: Added support for context static fields.
18424
18425 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18426
18427         * mini.c (mono_method_blittable): Methods which set LastError are not 
18428         blittable either. Fixes #51108.
18429         
18430 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18431
18432         * mini.c: flush icache.
18433         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18434
18435 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18436
18437         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18438
18439 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18440
18441         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
18442         safe on IA32.
18443
18444         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
18445         vararg calls.
18446
18447         * inssel.brg (CEE_MKREFANY): Fix AOT case.
18448
18449 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18450
18451         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
18452         instruction when the result is discarded.
18453
18454         * iltests.il (test_0_div_regalloc): New regression test.
18455
18456         * arrays.cs: Fix compilation error.
18457
18458 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
18459
18460         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
18461         float rules to inssel-x86.brg: sane architectures with FP registers
18462         don't need to implement these rules.
18463
18464 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18465
18466         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
18467
18468 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18469
18470         * mini.h, inssel-long32.brg: fixed endianess issues in int64
18471         implementation of 32 bit systems.
18472
18473 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18474
18475         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
18476         (Jeroen Zwartepoorte).
18477
18478 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
18481         the caller and the callee matches.
18482         
18483         * mini.c (mono_method_to_ir): Add comment.
18484
18485         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
18486         signbit is missing on some platforms.
18487
18488 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18489
18490         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
18491
18492         * mini.c (setup_jit_tls_data): Call the new function.
18493         
18494         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
18495
18496         * mini-x86.c: Add experimental support for fast access to the lmf
18497         structure under NPTL/Linux 2.6.x.
18498
18499 2003-11-06  Martin Baulig  <martin@ximian.com>
18500
18501         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
18502         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
18503         the debugger.
18504
18505 2003-11-02  Martin Baulig  <martin@ximian.com>
18506
18507         * mini.c (inflate_generic_field): New static method.
18508         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
18509         generic instance and the field is declared in a generic type, call
18510         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
18511
18512 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18513
18514         * mini.h mini.c (mono_method_same_domain): New function to return
18515         whenever the caller and the callee are in the same domain.
18516
18517         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
18518
18519 2003-10-30  Martin Baulig  <martin@ximian.com>
18520
18521         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
18522         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
18523         method parameters.
18524         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
18525         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
18526
18527 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
18528
18529         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
18530         propagation.
18531
18532         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
18533         object here, so it is in the correct appdomain etc.
18534
18535 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18536
18537         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
18538         already done.
18539         (mono_method_to_ir): Avoid freeing the type created returned from
18540         mono_type_create_from_typespec, since it is put into an internal cache
18541         by the function. Fixes pointer.exe.
18542
18543         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
18544         trampolines for icalls and pinvokes as well. Fixes #33569.
18545
18546 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18547
18548         * mini.c: Update after appdomain changes.
18549
18550         * mini.c (mono_jit_compile_method_inner): Allways compile native
18551         method wrappers in the root domain, since there can only be one
18552         instance of them, whose address is stored in method->info.
18553
18554 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18555
18556         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
18557         environment variable. Instead detect automatically whenever running
18558         under valgrind using the magic macro RUNNING_ON_VALGRIND from
18559         valgrind.h.
18560
18561 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
18562
18563         * trace.c, trace.h: New files that implement the new trace option
18564         parsing. 
18565
18566         * driver.c: Document new --trace options.
18567
18568         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
18569         mini-x86.c: Apply:
18570
18571         -       if (mono_jit_trace_calls)
18572         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
18573
18574         * mini.h: prototypes.
18575         
18576 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18577
18578         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
18579
18580         * mini.c inssel.brg: Implement typedefbyref opcodes.
18581
18582         * mini.c (mono_jit_compile_method): Remove unused local variable.
18583
18584         * mini.c (mono_jit_compile_method_inner): Ditto.
18585         
18586 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
18587
18588         * tramp-x86.c (x86_class_init_trampoline): Fix build.
18589         
18590         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
18591
18592 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18593
18594         * mini.c (mono_no_aot): Remove unused global variable.
18595
18596         * mini.c: Thread safety fixes.
18597
18598 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18599
18600         * mini.c (mono_create_class_init_trampoline): Add a lock around
18601         class_init_hash_addr.
18602
18603         * arrays.cs (test_0_newarr_emulation): Add new regression test for
18604         #30073.
18605
18606         * mini.c: Decompose the NEWARR instruction before decomposing its
18607         arguments. Fixes #30073.
18608
18609 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
18610
18611         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
18612         convention.
18613
18614 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
18615
18616         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
18617
18618         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
18619
18620         * driver.c: Add support for compiling icall wrappers to --compile.
18621
18622 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
18623
18624         * inssel.brg: The empty value in class->interface_offsets is -1, not
18625         0. Fixes #49287.
18626
18627 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * objects.cs: New test for 'is' operator on an array of interfaces.
18630
18631 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18632
18633         * tramp-ppc.c: update trampoline code to support jumps
18634         and class initialization.
18635
18636 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
18637
18638         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
18639
18640         * inssel.brg (OP_UNBOXCAST): Fix #46027.
18641
18642         * inssel.brg (OP_UNBOX): Remove unused rule.
18643
18644         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
18645         region instead of one for each method. Fixes #47813.
18646
18647 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
18648
18649         * exceptions.cs (test_0_nested_finally): New regression test for
18650         nested exception handlers.
18651
18652         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
18653
18654         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
18655
18656         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
18657         inlining.
18658
18659         * mini.c (mono_method_check_inlining): Make the inlining limit 
18660         configurable by an environment variable.
18661         
18662         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
18663
18664         * mini.h: Bump AOT file version.
18665
18666         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
18667         token, store the image along with the token, since the token might not 
18668         refer to the same image as the method containing the relocation, 
18669         because of inlining.
18670
18671 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
18672
18673         * mini.c (mono_precompile_assemblies): New function to compile
18674         all methods in all loaded assemblies.
18675
18676         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
18677
18678         * regalloc.h regalloc.c (MonoRegState): Change the type of 
18679         iassign and fassign to int*, since they can contain large negative
18680         values if the register is spilled. Also added some comments. Fixes
18681         #45817.
18682
18683         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
18684         under Win32. Fixes #42964.
18685
18686 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
18687
18688         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
18689
18690         * aot.c: Added support for AOT compiling methods which contain calls
18691         to wrappers. Currently, only remoting-invoke-with-check wrappers are
18692         handled.
18693         
18694         * driver.c (compile_all_methods): Run the compilation in a thread
18695         managed by mono. Fixes #44023.
18696
18697         * mini.c (mono_codegen): Print full method name in verbose output.
18698
18699         * mini-x86.c (mono_arch_patch_code): Fix warning.
18700         
18701         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
18702         jumps, since the method we are jumping to might be domain-specific.
18703
18704         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
18705
18706 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18707
18708         * inssel.brg: string chars are unsigned.
18709
18710 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
18711
18712         * TODO: New todo item.
18713
18714         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
18715         which calls mono_runtime_class_init and patches the call site to
18716         avoid further calls.
18717         (mono_arch_create_class_init_trampoline): New arch specific function 
18718         to create a class init trampoline.
18719         (create_trampoline_code): Generalized so it can create
18720         class init trampolines as well.
18721
18722         * mini.c (helper_sig_class_init_trampoline): New helper variable.
18723         (mono_create_class_init_trampoline): New function to create and cache
18724         class init trampolines.
18725         (mono_find_class_init_trampoline_by_addr): New function to lookup the
18726         vtable given the address of a class init trampoline. Used by the
18727         patching process.
18728         (mono_codegen): Generate a call to a trampoline instead of
18729         mono_runtime_class_init in LDSFLD[A].
18730         (mono_codegen): Add relocations for the new trampoline.
18731         
18732         * mini.h mini-x86.c aot.c: Added a new relocation type: 
18733         MONO_PATCH_INFO_CLASS_INIT.
18734
18735         * mini.h: Bump AOT version number.
18736
18737         * aot.c: Create a copy of the loaded code instead of using the original
18738         so methods which call each other will be close in memory, improving
18739         cache behaviour.
18740         
18741         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
18742         patch since it breaks the regression tests.
18743         
18744         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
18745         for the register saving instruction sequence since the 
18746         frame_state_for function in glibc 2.3.2 don't seem to detect it.
18747
18748 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
18749
18750         * TODO: Fix todo item && remove another.
18751
18752 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
18755         previous checkin.
18756
18757         * aot.c: Moved the check for MONO_LASTAOT into the initialization
18758         function of the module.
18759
18760         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
18761         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
18762         --no-aot command line option.
18763
18764 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
18765
18766         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
18767         by Bernie Solomon (bernard@ugsolutions.com).
18768
18769         * inssel.brg: Refactor the interface offset table related code into
18770         its separate functions and add support for the AOT case.
18771
18772 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
18773
18774         * aot.c (mono_aot_get_method_inner): Fix memory leak.
18775         
18776         * aot.c: Added mono_aot_verbose variable and made all debugging
18777         output depend on the value of this variable.
18778
18779         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
18780         method_label and info_label.
18781
18782         * mini.h mini-x86.c aot.c: Added a new relocation type 
18783         MONO_PATCH_INFO_IID for klass->interface_id.
18784
18785         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
18786         the MonoJitInfo structure.
18787
18788         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
18789         a non-root appdomain in shared mode.
18790
18791 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
18792
18793         * aot.c: make aot loader less verbose. Remove free of unused variable.
18794
18795 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
18796
18797         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
18798
18799         * .cvsignore: Added *.dll.
18800
18801         * mini.c (mono_print_tree_nl): New function callable while debugging.
18802
18803         * mini.c (mono_print_code): Export this.
18804
18805         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
18806         patched code.
18807
18808 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
18809
18810         * mini.h (MonoCompile): Added 'jit_info' field.
18811
18812         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
18813         the cfg structure, since it is needed by the AOT compiler.
18814
18815         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18816
18817         * aot.c: A major rewrite. Changes include:
18818         - save exception tables for methods which have them.
18819         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
18820         to g_module_symbol.
18821         - reworked the file format so it is now much smaller and needs
18822         fewer relocation entries.
18823         
18824 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
18825
18826         * aot.c (load_aot_module): Fix build bustage on platforms without
18827         Boehm GC.
18828
18829 2003-09-04  Martin Baulig  <martin@ximian.com>
18830
18831         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
18832
18833 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * TODO: Some new optimization ideas.
18836
18837         * aot.c: Move AOT module loading logic here from mono_assembly_open.
18838
18839         * aot.c: Save the optimization flags used to compile the code into
18840         the AOT module.
18841
18842         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
18843         support emitting domain specific code.
18844         
18845         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
18846         no longer domain neutral. It can be made domain neutral by compiling 
18847         with --optimize=shared.
18848
18849         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
18850         between appdomains.
18851
18852         * driver.c mini.h mini.c: New --no-aot debugging option which disables
18853         loading of AOT code.
18854
18855         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
18856         
18857         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
18858         if there is no domain neutrality information.
18859
18860 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
18861
18862         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
18863         format version into the generated library.
18864
18865         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
18866         callee method into the caller since one of them could be shared.
18867
18868         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
18869         system exceptions from AOT code now works.
18870
18871         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
18872         method if it is domain neutral and the callee is not.
18873
18874         * graph.c (cfg_emit_one_loop_level): Fix warning.
18875
18876 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
18877
18878         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
18879         last checkin.
18880
18881 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
18882
18883         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
18884         is needed  by code which is executed before mono_runtime_init ().
18885         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
18886         
18887         * mini.c (mono_thread_abort): Fix warning.
18888         (mono_jit_compile_method): Call static constructor in the AOT case too.
18889
18890         * aot.c (mono_compile_assembly): Fix warning.
18891
18892 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18893
18894         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
18895
18896 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
18897
18898         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
18899
18900         * cpu-pentium.md: Fix the length of call opcodes so they include the
18901         ESP restoring instruction. Fixes #47968.
18902
18903 2003-08-28  Martin Baulig  <martin@ximian.com>
18904
18905         * mini-x86.c (mono_arch_call_opcode): Added support for
18906         MONO_TYPE_GENERICINST.
18907
18908         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
18909
18910 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
18911
18912         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
18913         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
18914
18915         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
18916         metadata_section.
18917
18918 2003-08-26  Martin Baulig  <martin@ximian.com>
18919
18920         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
18921         when reporting an error, set this to the actual error location.
18922         (mono_method_to_ir): Report the correct error location if
18923         get_basic_blocks() returned an error.
18924
18925 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
18926
18927         * mini.c (mono_type_blittable): OBJECT is not blittable.
18928         (mono_method_blittable): Methods which have marshalling descriptors
18929         are not blittable either. Fixes #47842.
18930
18931 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
18932
18933         * driver.c mini.c: Use an environment variable instead of a global 
18934         variable. Also fix the build.
18935
18936         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
18937         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
18938         reporting this. 
18939
18940         * driver.c mini.c: Added --with-valgrind option to turn off some
18941         code which prevents mono from running under valgrind.
18942
18943         * mini.c (mono_emit_call_args): Fixed warning.
18944
18945         * mini.c (mono_emulate_opcode): Fixed warning.
18946
18947 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18948
18949         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
18950         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
18951         regalloc.c, regalloc.h: specify available registers in arch-specific
18952         code and support floats in the regallocator (patch by Laurent Morichetti 
18953         <l_m@pacbell.net>)
18954
18955 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
18956
18957         * mini.c: mono_thread_current() can be called only after
18958         mono_runtime_init(): rearrange code to not call it early on.
18959
18960 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
18961
18962         * mini.c: allocate jump tables in the code mempools.
18963
18964 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
18965
18966         * mini.c, mini.h: make sure per-thread data allocated by the jit is
18967         freed.
18968
18969 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
18970
18971         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
18972         12 to 16.  This fixes bug #47453.
18973
18974
18975 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
18976
18977         * mini-ppc.c: fixed indexed load and unsigned compares.
18978
18979 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
18980
18981         * mini.c: reenabled installation of handler for
18982           thread abort signal.
18983
18984 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18985
18986         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
18987         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
18988         until it's fixed and actually useful.
18989
18990 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
18991
18992         * inssel-long32.brg: couple more opcodes implemented.
18993
18994 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
18995         
18996         * mini-sparc.c: Even more opcodes implemeted.
18997
18998 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
18999
19000         * mini-sparc.c: More opcodes implemented.
19001
19002 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19003
19004         * mini-sparc.c: More opcodes implemented.
19005
19006 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19007
19008         * inssel-sparc.brg: Add some needed rules.  Direct
19009         copy from PPC.
19010         * Makefile.am: Use inssel-sparc.brg
19011         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19012         an assert happy for now.
19013
19014 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19015
19016         * mini-sparc.c: Fixed compile errors.
19017         * exceptions-sparc.c: Same.  We now produce a mono binary 
19018         on sparc-linux.  Yea.
19019
19020 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19021
19022         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19023         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19024         They compile, but do not work.
19025
19026 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19027
19028         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19029         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19030         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19031         (ct@gentoo.org).
19032
19033 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19034
19035         * mini.c: more opcodes implemented and better support for generics.
19036
19037 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19038
19039         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19040         * mini.c, mini.h: first cut at generics support: some new instructions 
19041         added and changed the behaviour of some of the existing ones.
19042
19043 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19044
19045         * mini.c: Removed definition of metadata_shared mutex here.
19046
19047 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19048
19049         * mini-x86.c: make vararg calls work for instance methods.
19050
19051 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19052
19053         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19054         returns the arguments in a separte list, now.
19055
19056 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19057
19058         * aot.c, mini.c: updates for array type representation changes.
19059
19060 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19061
19062         * mini.c: register function to perform jit shutdown.
19063
19064 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19065
19066         * mini.c: use a faster allocator if possible.
19067
19068 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19069
19070         * aot.c: some cleanups and portability changes.
19071
19072 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19073
19074         * mini.c: use faster allocation for CEE_BOX if possible.
19075
19076 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19077
19078         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19079         Moved inlined mempcy code to its own function so that is can be
19080         reused. Added an inline memset function as well (optimized initobj).
19081         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19082
19083 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19084
19085         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19086
19087 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19088
19089         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19090         arch code can setup the cpu for CLR execution, if needed.
19091         We use it on x86 to set the precision of FP operations.
19092
19093 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19094
19095         * mini.c: disable some optimizations if we can guess they'll cost too
19096         much for a given method.
19097
19098 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19099
19100         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19101         
19102 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19103         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19104         info collection support.
19105
19106 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19107
19108         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19109         is now implemented in the profiling API. Get rid of a couple of
19110         unnecessary global variables.
19111
19112 2003-06-15  Nick Drochak <ndrochak@gol.com>
19113
19114         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19115         * cpu-g4.md: add op_bigmul and op_bigmul_un
19116         * cpu_pentium.md: add op_bigmul_un
19117         * inssel-long32.brg: add rule for unsigned bigmul
19118         * mini-ops.h: define OP_BIGMUL_UN
19119         * mini-x86.c: THE BUG: handle (un)signed properly
19120         * mini.c: choose unsigned opcode if needed.
19121         This set of patches fixes bug #44291
19122
19123 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19124
19125         * mini.c (optimize_branches): improved to handle all kinds of
19126         conditional branches.
19127
19128 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19129
19130         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19131         don't raise exceptions.
19132
19133 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19134
19135         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19136         to arch-specific files.
19137
19138 2003-06-09  Martin Baulig  <martin@ximian.com>
19139
19140         * Makefile.am (libs): Added $(LIBGC_LIBS).
19141
19142 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19143
19144         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19145         and OP_ATAN (fixes bug#44293).
19146
19147 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19148
19149         * Makefile.am, mini-x86.c: rename cpu description array to
19150         pentium_desc, since some compilers define the 'pentium' preprocessor
19151         symbol.
19152
19153 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19154
19155         * mini.c (mini_select_instructions): add explicit branch if the
19156         following block is not the false target of a conditional branch -
19157         we need this with any optimization that reorder or remove bblocks
19158
19159         * mini.c (optimize_branches): bug fixes
19160
19161 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19162
19163         * mini.c (mono_method_to_ir): inline static readonly fields
19164
19165         * ssa.c (fold_tree): start cfold support for long (very simple
19166         cases only)
19167
19168         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19169
19170 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19171
19172         * inssel.brg: fixed memcpy (bug #44219).
19173
19174 2003-06-05  Dick Porter  <dick@ximian.com>
19175
19176         * driver.c: Set the glib log levels to not abort if g_message
19177         recurses.
19178
19179         g_set_prgname() has to happen before mini_init() so that the
19180         process handle gets the info.
19181         
19182 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19183
19184         * driver.c: add intrins to the default optimizations to get wider
19185         exposure.
19186
19187 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19188
19189         * mini.h: some large basic blocks will overflow a 16-bit
19190         integers for symbolic registers.
19191
19192 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19193
19194         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19195         (mono_arch_output_basic_block): fix bug 43499 
19196
19197 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19198
19199         * mini.c: kill duplicated definition of mono_debug_format.
19200
19201 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19202
19203         * mini-x86.c, arrays.cs: fixed register allocation bug.
19204
19205 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19206
19207         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19208
19209         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19210
19211 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19212
19213         * mini.c:
19214         (print_method_from_ip): also print source location information if
19215         available.
19216
19217 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19218
19219         * mini.c (mono_find_block_region): bug fix in region code
19220         (mini_method_compile): enable removing unreachable code again, but
19221         only in methods without exception clauses.
19222
19223 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19224
19225         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19226         Implemented arglist opcode and handling of TypedReference type.
19227         Fixed x86 call convention when a structure is returned.
19228         Minimal support for calling static vararg methods.
19229
19230 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19231
19232         * mini.c (mini_method_compile):  always remove unreachable code,
19233         because the code in them may be inconsistent  (access to dead
19234         variables for example).
19235
19236 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19237
19238         * driver.c, debug-mini.c: warning fixes.
19239
19240 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19241
19242         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19243
19244 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19245
19246         * mini.c: thread-static fields are registered in mono_class_vtable(),
19247         so ensure the function is called before checking for them.
19248
19249 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19250
19251         * mini.c (optimize_branches): fix for bug 43586
19252
19253         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19254         overflow (fixes Bug #43639)
19255
19256 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19257
19258         * mini.c, objects.cs: allow the use of stobj for primitive types.
19259
19260 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19261
19262         * mini.c: be less strict about argument checking until we support
19263         running the verifier.
19264
19265 2003-05-27  Nick Drochak <ndrochak@gol.com>
19266
19267         * basic-long.cs: tests for (ulong)int * (ulong)int also
19268         * mini.c: use the same trick for (ulong)int * (ulong)int
19269
19270 2003-05-27  Nick Drochak <ndrochak@gol.com>
19271
19272         * basic-long.cs: add regression test for (long)int * (long)int
19273         * cpu-pentium.md: add op_bigmul specification
19274         * inssel-long32.brg: add OP_BIGMUL rule
19275         * mini-ops.h: add OP_BIGMUL
19276         * mini-x86.c: register allocator: handle case where src1 needs to be
19277         in EAX.
19278         * mini.c: substitute special BIGMUL opcode in the tree for 
19279         (long)int * (long)int
19280
19281 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19282
19283         * jit-icalls.c: call the type ctor on field access if needed.
19284
19285 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19286
19287         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19288         to a method (including results of ldelema, bug#43207).
19289
19290 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19291
19292         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19293         colors to show exception handler blocks.
19294
19295         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19296         (fix for pinvoke7.cs).
19297
19298 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19299
19300         * mini.h, mini.c: ensure correct initialization order for types that
19301         require it. Prepare for lazy compilation of jit icall wrappers.
19302         Provide a name for opcode emulation to reduce unneeded mallocing.
19303
19304 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19305
19306         * mini-x86.c: better register restoring code and profiling
19307         support for tail calls.
19308
19309 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19310
19311         * mini.h, driver.c: prepare for leaf methods optimization.
19312
19313 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19314
19315         * mini.c: get targets of branches before converting a method.
19316
19317 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19318
19319         * mini.c (optimize_branches): added some experimental code (disbaled) 
19320
19321 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19322
19323         * mini.c (optimize_branches): fix branch to branch optimization 
19324
19325         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19326
19327         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19328
19329         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19330
19331         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19332         if needed.
19333
19334 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19335
19336         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19337         enable use of interface variables again.
19338
19339         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19340         I1 to registers because there is no simply way to sign extend 8bit
19341         quantities in caller saved registers on x86.
19342
19343         * inssel-float.brg: set costs of some rules to 2 so
19344         that monobure always select the arch. specific ones if supplied,
19345         regardless of the order we pass the files to monoburg.
19346
19347 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19348
19349         * mini.c, mini-x86.c: since the magic trampoline for jumps
19350         can't patch the code directly, we do it as soon as the
19351         method gets compiled.
19352
19353 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19354
19355         * mini-x86.c, mini.h: introduce a new patching method
19356         to support CEE_JMP and tail calls.
19357         * mini.c: obey tail.call. Don't precompile methods target
19358         of CEE_JMP.
19359         * tramp-x86.c: new trampoline code to handle methods
19360         reached through a jump.
19361
19362 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19363
19364         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19365         bit values to registers
19366
19367 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19368
19369         * mini.c (mono_compile_get_interface_var): share interface
19370         variables if possible.
19371
19372 2003-05-16  Martin Baulig  <martin@ximian.com>
19373
19374         * debug-mini.c (mono_init_debugger): New function to initialize
19375         the debugger.  This is not in the debugger since it needs to
19376         access some of mini's internals.
19377
19378 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19379
19380         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19381
19382 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19383
19384         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19385         for value type handling.
19386
19387 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19388
19389         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19390         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19391
19392 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19393
19394         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19395           the constructor through a proxy.
19396
19397 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19398
19399         * jit-icalls.c, inssel.brg: fixes to array element address
19400         calculations.
19401
19402 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19403
19404         * mini-x86.c (is_regsize_var): allocate pointer to registers
19405
19406 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19407
19408         * driver.c: fixed typo, added intrins to the set of optimizations
19409         tested with regressions.
19410
19411 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19412
19413         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19414         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19415         test case.
19416
19417 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19418
19419         * inssel.brg: remove some common pop instructions without side effects
19420
19421 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19422
19423         * inssel-x86.brg: fixed thinko in int to double conversions.
19424
19425 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19426
19427         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19428
19429 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19430
19431         * inssel-long32.brg: two more missing instructions.
19432
19433 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19434
19435         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19436         if not already set.
19437
19438 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19439
19440         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
19441         correctly.
19442
19443         * basic-float.cs: Added tests for negative zero.
19444
19445 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19446
19447         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
19448         a couple of missing operations for long casts, with test cases.
19449
19450 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19451
19452         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
19453
19454 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
19455
19456         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
19457         code size estimation.
19458
19459 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19460
19461         * mini.c (mono_jit_create_remoting_trampoline): make it work with
19462         abstract methods (fix bug 42542)
19463
19464         * aot.c: add ability to handle array types
19465         
19466 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
19467
19468         * mini.c: Call the _specific versions of the object allocation
19469         functions if possible.
19470
19471 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19472
19473         * driver.c: call setlocale ().
19474
19475 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19476
19477         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
19478         windows build.
19479
19480 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19481
19482         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
19483
19484         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
19485         wrappers (fix bug 42122)
19486
19487 2003-05-04  Martin Baulig  <martin@ximian.com>
19488
19489         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
19490
19491         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
19492         s/mini_set_defaults/mono_set_defaults/g.
19493
19494 2003-05-04  Martin Baulig  <martin@ximian.com>
19495
19496         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
19497
19498 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19499
19500         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
19501         (reported by Don Roberts).
19502
19503 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19504
19505         * mini.c: temporarily work around two bugs for this release.
19506
19507 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19508
19509         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
19510         that contains -export-dynamic and it makes using the ld script
19511         useless.
19512         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
19513
19514 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19515
19516         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
19517         specific cpu.
19518
19519 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19520
19521         * mini.c: make sure leave calls all the needed finally blocks,
19522         even when the target jumps out of multiple exception clauses.
19523
19524 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19525
19526         * ldscript, Makefile.am: add linker script to reduce the number of
19527         exported symbols (should also fix the issues with libwine defining
19528         some of the same symbols in io-layer).
19529
19530 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
19531
19532         * driver.c (mini_main): Avoid assertion when no file name is given on 
19533         the command line.
19534
19535 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
19536
19537         * driver.c: added --version/-V command line option.
19538         Added the inline optimization in the regression tests.
19539
19540 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19541
19542         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
19543         to the type in the method signature (fixes bug#42134).
19544
19545 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
19546
19547         * mini.c: when inlining, check this is not null only when needed (bug #42135).
19548
19549 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
19550
19551         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
19552
19553 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19554
19555         * driver.c: fixed bug #42100.
19556
19557 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19558
19559         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
19560
19561 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19562
19563         * mini.c: moved most of the code required to do inlining to its own
19564         function so it can be reused. Inline also ctors if appropriate.
19565
19566 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19567
19568         * Makefile.am: Link with -export-dynamic so shared libs loaded by
19569         the runtime can call mono API functions.
19570
19571 2003-04-27  Martin Baulig  <martin@ximian.com>
19572
19573         * debug-mini.c (mono_debug_init_method): Added
19574         `guint32 breakpoint_id' argument; if the method has a breakpoint,
19575         send a notification to the debugger.
19576
19577         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
19578         running in the Mono Debugger, just pass the breakpoint number to
19579         mono_debug_init_method().
19580
19581         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
19582
19583 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
19584
19585         * mini.c: allow some more unsafe compares.
19586
19587 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19588
19589         * mini-x86.c, Makefile.am: make distcheck works (partially from
19590         a patch by Richard Lee <r.h.lee@attbi.com>).
19591         * regset.c, regset.h: removed, they are unused.
19592
19593 2003-04-25  Dick Porter  <dick@ximian.com>
19594
19595         * driver.c: Usage reports the name as 'mono' not 'mini'
19596         * exceptions-x86.c: Build and run on freebsd
19597
19598 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19599
19600         * Makefile.am: install the program with the 'mono' name and
19601         the library as libmono instead of mini and libmini.
19602
19603 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19604
19605         * driver.c: provide the APIs for the embedding interface of the old jit.
19606
19607 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
19608
19609         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
19610
19611 2003-04-23  Martin Baulig  <martin@ximian.com>
19612
19613         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
19614
19615         * driver.c: Added `--debug' command line argument to enable
19616         debugging support.
19617
19618 2003-04-23  Martin Baulig  <martin@ximian.com>
19619
19620         * debug.[ch]: Removed.  The code is now in
19621         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
19622
19623         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
19624         last six months.
19625
19626 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
19627
19628         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
19629
19630 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19631
19632         * mini.c:
19633         (mini_cleanup): moved mono_runtime_cleanup call after the call to
19634         mono_domain_finalize.
19635         (mini_method_compile): use mono_method_profile* if the the option is
19636         enabled.
19637
19638 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
19639
19640         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19641         methods with their wrapper.
19642
19643         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19644         methods with their wrapper.
19645
19646         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
19647         their wrapper.
19648
19649         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
19650         wrapper.
19651
19652         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
19653         methods.
19654
19655 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
19656
19657         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
19658
19659 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
19660
19661         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
19662         of the mempool. This is slightly faster and uses less memory
19663
19664 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19665
19666         * mini.c: avoid O(n) allocation for variables.
19667
19668 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19669
19670         * mini.c: handle items on the stack after inlining methods.
19671
19672 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19673
19674         * mini.c: make the method->opcode optimization dependent
19675         on MONO_OPT_INSTRINS and do it lazily.
19676
19677 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19678
19679         * driver.c: print overall results at the end of regression run.
19680
19681 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19682
19683         * inssel.brg: don't overwrite symbolic registers.
19684
19685 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19686
19687         * inssel-x86.brg: fix conversion from long to float.
19688
19689 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
19690
19691         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
19692
19693 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
19694
19695         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
19696
19697         * driver.c: Added --print-vtable option as in the old JIT.
19698
19699 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19700
19701         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
19702
19703 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19704
19705         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
19706
19707 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
19708
19709         * mini.c regalloc.c regalloc.h: Fix memory leak.
19710
19711 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
19712
19713         * aot.c (mono_aot_get_method): register all used strings
19714
19715 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19716
19717         * mini.c: always intern strings references with ldstr at compile time.
19718
19719 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19720
19721         * Makefile.am: add BUILT_SOURCES.
19722
19723 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19724
19725         * driver.c: give a better error message when the assembly to execute
19726         doesn't have an entry point.
19727
19728 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
19729
19730         * Makefile.am: added hack for automake
19731
19732         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
19733         correct sematics.
19734
19735         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
19736
19737 22003-04-07  Martin Baulig  <martin@ximian.com>
19738
19739         * Makefile.am: Added Makefile.am.
19740
19741         * debugger-main.c: Removed, this is now in the debugger where it
19742         belongs.
19743
19744         * mini.pc.in: Call this package `mini' for the moment.
19745
19746
19747
19748
19749
19750
19751
19752
19753
19754
19755
19756
19757
19758
19759