2009-03-10 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4
5         * dwarfwriter.c (emit_line_number_info): The line number info for
6         IL code was off by one. Fix that.
7
8         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
9         stack.
10
11 2009-03-09  Mark Probst  <mark.probst@gmail.com>
12
13         Contributed under the terms of the MIT/X11 license by Steven
14         Munroe <munroesj@us.ibm.com>.
15
16         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
17         Fixes #483462.
18
19 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
20
21         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
22         as well.
23
24 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
25
26         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
27         the delegate ctor handling code. Fixes #482638.
28         
29         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
30         #481458.
31
32         * iltests.il.in: Add a test.
33         
34         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
35         mini-posix.c.
36
37 2009-03-05  Mark Probst  <mark.probst@gmail.com>
38
39         * mini-trampolines.c (mono_create_jump_trampoline): If the method
40         is shared generic code, return the trampoline, even if the method
41         has already been compiled.  Fixes #479763.
42
43         * mini.c, mini.h: New function
44         mono_jit_find_compiled_method_with_jit_info() which is the same as
45         mono_jit_find_compiled_method() but also returns the jit info.
46
47 2009-03-05  Mark Probst  <mark.probst@gmail.com>
48
49         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
50         for methods which actually have one.  For all other methods, make
51         sure the this argument var is live the whole method.
52
53         * mini.c (mini_method_compile): Every shared method has a
54         this/vtable/mrgctx info.  Fixes #480807.
55
56 2009-03-05  Mark Probst  <mark.probst@gmail.com>
57
58         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
59         generic/imt thunks where some entries branch through the vtable,
60         while other entries branch directly.
61
62 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
63
64         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
65
66         * mini-windows.c: Ditto.
67         
68         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
69         ctors.
70
71 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
72
73         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
74         down an assert.
75
76 2009-03-04  Mark Probst  <mark.probst@gmail.com>
77
78         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
79         #481403.
80
81 2009-03-04  Mark Probst  <mark.probst@gmail.com>
82
83         * exceptions-x86.c: Include debug-mini.h - fixes build.
84
85 2009-03-04  Martin Baulig  <martin@ximian.com>
86
87         * debug-mini.c: Clean up the exception API and add documentation.
88         (mono_debugger_handle_exception): New public method; this is
89         called when throwing an exception or encountering an unhandled one.
90         (mono_debugger_call_exception_handler): Formerly known as
91         mono_debugger_handle_exception(); this is used to tell the
92         debugger that we're about to invoke an exception handler.
93
94 2009-03-04  Martin Baulig  <martin@ximian.com>
95
96         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
97         ../metadata/mono-debug-debugger.c; save and reset exception state.
98
99 2009-03-02  Martin Baulig  <martin@ximian.com>
100
101         * debug-mini.c: Moved the debugger exception handling here from
102         ../metadata/mono-debug-debugger.c.
103
104         * debug-mini.h
105         (MonoDebuggerExceptionAction): New exception typedef.
106
107         * debug-mini.c
108         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
109
110         * exceptions-amd64.c
111         (mono_amd64_throw_exception): Use the new debugger exception
112         handling code.
113
114         * mini-exceptions.c
115         (mono_handle_exception_internal): Don't call
116         mono_debugger_unhandled_exception() here.
117
118 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
119
120         * mini.c aot-compiler.c: Update after the changes to 
121         mono_marshal_get_runtime_invoke ().
122
123         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
124         Virtual generic methods might not have method->slot set, work around
125         that.
126
127         * generics.cs: Add a test.
128
129 2009-03-02  Geoff Norton  <gnorton@novell.com>
130
131         * mini.c:
132         * driver.c: Allow signal chaining of SIGFPE as well.
133
134 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
135
136         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
137         this since it now receives the method not its generic context in the
138         IMT reg.
139
140         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
141         generic/imt thunks where some entries branch through the vtable, while
142         other entries branch directly.
143
144         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
145
146         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
147         support for interface methods as well.
148
149         * mini-trampolines.c: Add support for virtual generic methods in interfaces
150         using the normal IMT thunks.
151
152         generics.cs: Add new tests.
153         
154         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
155         the generic inst to the generic imt thunks. This fixes AOT support, 
156         improves consistency with the normal IMT thunks, and makes it easier to
157         add support for interface generic virtual methods later.
158
159         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
160         
161 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
162
163         * driver.c (mono_set_signal_chaining): New public API function to enable
164         signal chaining on POSIX platforms.
165
166         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
167         (si@lindenlab.com) to implement signal chaining. The original patch was
168         contributed under the MIT X/11 license:
169         https://bugzilla.novell.com/show_bug.cgi?id=318894
170
171 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
172
173         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
174         too until it can be made to run on amd64.
175
176 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
177
178         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
179         to  get_generic_context_from_code () + get_call_info () if possible.
180
181 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
182
183         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
184         suspend-on-sigsegv functionality.
185
186         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
187         to suspend when a native SIGSEGV is received. This is useful for debugging
188         crashes which don't happen under gdb, since a live process contains more
189         information than a core file.
190
191         * mini-exceptions.c (mono_print_thread_dump): Use 
192         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
193
194         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
195
196         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
197         
198         * basic-float.cs: Disable the tests which currently fail on amd64.
199
200         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
201         value to mono_arch_patch_callsite () to fix crashes.
202         
203         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
204
205 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
206
207         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
208         nop code by patching the call address to point to the nullified class init
209         trampoline, as the former does not seem to be safe on SMP machines.
210
211 2009-02-23  Mark Probst  <mark.probst@gmail.com>
212
213         * mini-ops.h: Fix the argument types for a few x86 opcodes where
214         they were wrong.
215
216 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
217
218         * basic-float.cs basic-calls.cs: Fix warnings.
219
220 2009-02-22  Mark Probst  <mark.probst@gmail.com>
221
222         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
223         correct frame pointer in the LMF.  Should fix #478394.
224
225 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
226
227         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
228
229         * image-writer.c: Make the binary writer less verbose.
230
231 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
232
233         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
234         are called from runtime invoke wrappers.
235
236 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
237
238         * cpu-ppc.md (store_memindex): Increase the size of this.
239
240 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
241
242         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
243
244         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
245
246         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
247         OP_LCONV_TO_R_UN.
248
249         Last fix for of #467201.
250
251
252 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
253
254         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
255
256         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
257         and long_conv_to_r8_2:
258
259         Fixed part of #467201.
260
261 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
262
263         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
264
265         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
266         conversion to 32 bits.
267
268         * cpu-x86.md: Increase the size of int_conv_to_r4.
269
270         * basic-float.cs: Add a test for this.
271
272         Fixed part of #467201.
273
274 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
275
276         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
277
278         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
279         conversion to 64 bits.
280
281         * basic-float.cs: Add a test for this.
282
283         Fixed part of #467201.
284
285 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
286
287         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
288
289         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
290         This behavior is compatible with MS.
291
292         * iltest.il.in: Add a test for this.
293
294         Fixed part of #467201.
295
296 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
297
298         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
299
300         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
301         change the precision of the value.
302
303         * cpu-x86.md: Define len for float_conv_to_r4.
304
305         * basic-float.cs: Add a test for this.
306
307         Fixed part of #467201.
308
309 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
310
311         * mini.c: Adjust locking order to the new semantics where the loader lock
312         comes first.
313
314 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
315
316         * aot-runtime.c:
317         * mini-amd64.c:
318         * mini-arm.c:
319         * mini-ia64.c:
320         * mini-mips.c:
321         * mini-ppc.c:
322         * mini-sparc.c:
323         * mini-trampolines.c:
324         * mini-x86.c:
325         * mini.c:
326         * tramp-alpha.c:
327         * tramp-amd64.c:
328         * tramp-arm.c:
329         * tramp-hppa.c:
330         * tramp-ia64.c:
331         * tramp-mips.c:
332         * tramp-ppc.c:
333         * tramp-s390.c:
334         * tramp-s390x.c:
335         * tramp-sparc.c:
336         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
337
338 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
339
340         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
341         as it is incorrect.
342
343 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
344
345         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
346         for cctors if needed.
347
348 2009-02-17  Mark Probst  <mark.probst@gmail.com>
349
350         * mini-ppc.c: Fix build on Darwin.
351
352 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
353
354         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
355         version instead of 3 as valgrind doesn't like version 3.
356
357         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
358
359         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
360         usable for hashing methods.
361         (emit_extra_methods): Use the new hash to avoid putting every method in the
362         same hash bucket.
363
364         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
365
366         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
367         whenever a method ref could match a method.
368         
369         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
370         test to fail.
371         
372         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
373         methods refs.
374
375         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
376
377         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
378         the encoding buffer.
379
380         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
381         mono_method_get_header () on inflated methods as an optimization.
382
383 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
384
385         * ssa.c (fold_ins): Fix another crash if the instruction following the
386         switch was optimized away.
387
388 2009-02-16  Mark Probst  <mark.probst@gmail.com>
389
390         Contributed under the terms of the MIT/X11 license by Steven
391         Munroe <munroesj@us.ibm.com>.
392
393         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
394
395 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
396
397         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
398         around the mono_domain_alloc calls, it is now done by the functions
399         themselves.
400
401         * aot-compiler.c (compile_method): Only add wrappers referenced by
402         the method if compiling with full AOT.
403         (mono_compile_assembly): Error out if --aot=full is specified on
404         a platform where it is not supported.
405
406         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
407         on ARM too.
408
409         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
410         AOT support.
411
412         * aot-runtime.c (load_named_code): Handle 
413         mono_arm_throw_exception_by_token.
414
415         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
416
417         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
418         unaligned.
419
420         * Makefile.am (fullaotcheck): Exit if a test fails.
421
422         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
423         on ARM.
424         (mono_compile_assembly): Handle the assembler failing.
425
426         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
427         accepting subsections of .bss.
428
429         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
430         was optimized away.
431
432         * aot-compiler.c: Remove some unused includes.
433         
434         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
435         now in MonoImageWriter.
436
437         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
438         code sequence which matches a non-virtual call. Fixes #472654.
439
440 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
441
442         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
443         xdebug code.
444         
445         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
446         use the image/dwarf writers directly.
447
448         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
449         field.
450
451         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
452         MonoDwarfWriter.
453
454         * image-writer.h: Fix some typos.
455
456         * dwarfwriter.h dwarfwriter.c: New files.
457         
458         * aot-compiler.c: Extract the DWARF info writing functionality into a 
459         separate module.
460
461         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
462         argument to return unwind info.
463
464         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
465
466         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
467         
468         * aot-runtime.c (decode_method_ref): Add a case for 
469         MONO_AOT_METHODREF_WRAPPER_NAME.
470
471         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
472         for AOT.
473
474         * aot-compiler.c (encode_method_ref): Use the new constants.
475
476         * aot-runtime.c (decode_method_ref): Ditto.
477
478         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
479         be compiled, not the icall itself.
480
481 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
482
483         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
484         using decode_method_ref ().
485
486         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
487         convert it to an in32. Fixes #475859.
488
489         * arrays.cs: Add a test.
490
491 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
492
493         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
494         OP_LCONV_TO_U2.
495
496         * basic-long.cs: Add a test.
497
498 2009-02-12  Mark Probst  <mark.probst@gmail.com>
499
500         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
501         remove the frame pointer in leaf methods which don't receive any
502         arguments, don't throw exceptions and don't do dynamic stack
503         allocations.
504
505 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
506
507         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
508         the fail_tramp changes. Hopefully fixes #475132.
509
510 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
511
512         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
513         instead of mono_metadata_signature_dup_full.
514
515 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
516
517         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
518         for processing jump tables. Fixes #473787.
519
520 2009-02-11  Mark Probst  <mark.probst@gmail.com>
521
522         * mini-generic-sharing.c: mini_method_get_context() just calls
523         mono_method_get_context_general() now.
524
525         * mini.c, mini.h: Moved get_object_generic_inst(),
526         construct_object_context_for_method() and
527         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
528
529 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
530
531         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
532         basic block fell through to its successor bblock without a branch. Fixes
533         #474718.
534
535         * iltests.il.in: Add a test.
536         
537         * aot-compiler.c (encode_method_ref): Encode methods of array types.
538         (can_encode_patch): We can now handle arrays of generic parameters and
539         array methods.
540
541         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
542
543         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
544         the AOT file to avoid some #ifdefs in aot-runtime.c
545
546         * mini.h: Bump AOT file format version.
547
548 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
549
550         * Makefile.am (fullaotcheck): Make this run the tests.
551
552         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
553
554 2009-02-10  Mark Probst  <mark.probst@gmail.com>
555
556         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
557         individually.  Fixes #473482.
558
559 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
560
561         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
562
563 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
564
565         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
566         (mono_compile_assembly): Hush compile warnings about
567         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
568         code path.
569
570 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
571
572         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
573
574         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
575
576         * aot-compiler.c: Fix arm support.
577
578         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
579         img_writer_emit_unset_mode () function.
580
581         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
582         (mono_unwind_get_dwarf_pc_reg): Ditto.
583
584         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
585         Move almost all platform specific code to a set of arch_ functions, 
586         and document them to ease porting.
587         
588         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
589
590         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
591
592         * aot-compiler.c: Extract the image writing functionality into a separate
593         module to reduce the size of this file.
594
595 2009-02-09  Geoff Norton  <gnorton@novell.com>
596
597         * mini-s390.c: Fix the signature of emit_sig_cookie.
598
599 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
600
601         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
602
603         * aot-runtime.c (is_shared_got_patch): Ditto.
604
605         * aot-runtime.c (load_named_code): Cope with the fact that 
606         decode_got_entry () won't decode the patch fully if its corresponding got
607         entry is already filled.
608         
609         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
610         Initialize *ji.
611         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
612
613         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
614         as the moving pointer instead of 'buf' for consistency with the rest of the
615         codebase.
616         (mono_arch_create_monitor_exit_trampoline): Ditto.
617
618         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
619         generic_class_init trampolines.
620         (add_generic_class): Extract some code from add_generic_instances () into a
621         separate function so it can be called from other places too.
622         (compile_method): Call add_generic_class () for the classes of inflated methods
623         referenced by the method.
624         (can_encode_patch): Allow references to generic parameters.
625
626         * aot-runtime.c: Add support the patches required by the new trampolines.
627         
628         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
629         support.
630
631         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
632         full-aot support.
633
634         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
635         this from get_throw_pending_exception, make the signature full aot compatible.
636
637         * Makefile.am (fullaotcheck): New target to run full-aot tests.
638
639         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
640
641         * exceptions.cs: Add a test.
642
643 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
644
645         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
646         use the DWARF_DATA_ALIGN constant instead.
647
648         * exception-<ARCH>.c: Update after the above change.
649
650         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
651         dwarf unwinder.
652
653         * mini-arm.c: Enable the dwarf unwinder.
654
655         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
656         instead of mono_class_setup_vtable ().
657
658 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
659
660         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
661         dwarf unwinder.
662
663         * mini-x86.h: Enable the dwarf unwinder.
664
665 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
666
667         Fix mcs/tests/test-7.cs
668         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
669         2009-02-03.
670
671 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
672
673         * mini.c (print_jit_stats): Remove some unused statistics.
674
675 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
676
677         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
678
679 2009-02-05  Mark Probst  <mark.probst@gmail.com>
680
681         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
682         the method we get from mono_object_get_virtual_method() because
683         that function does it properly, now.
684
685 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
686
687         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
688         opcodes. Fixes #472775.
689
690 2009-02-05  Mark Probst  <mark.probst@gmail.com>
691
692         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
693         fact that mono_find_jit_info() sometimes returns the context
694         corresponding to the jit info in new_ctx.  Fixes #472600.
695
696 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
697
698         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
699         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
700         klass->enum_basetype directly.
701
702         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
703         enum subtypes.
704
705         * unwind.c: Avoid 0 sized arrays.
706
707 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
708
709         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
710         size on systems with 64k pages. Fixes #471389.
711
712 2009-02-04  Mark Probst  <mark.probst@gmail.com>
713
714         Contributed under the terms of the MIT/X11 license by Steven
715         Munroe <munroesj@us.ibm.com>.
716
717         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
718         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
719         necessary.
720
721 2009-02-04  Mark Probst  <mark.probst@gmail.com>
722
723         Contributed under the terms of the MIT/X11 license by Steven
724         Munroe <munroesj@us.ibm.com>.
725
726         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
727         comparison fix.
728
729         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
730         The trampoline can be longer on PPC64.
731
732 2009-02-04  Mark Probst  <mark.probst@gmail.com>
733
734         Contributed under the terms of the MIT/X11 license by Steven
735         Munroe <munroesj@us.ibm.com>.
736
737         * mini-ppc.c: Compiler warning fixes and trivial code
738         simplifications.
739
740 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
741
742         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
743         ins->dreg which could be a hardware register, not a vreg.
744
745         * aot-compiler.c (emit_method_dwarf_info): Ditto.
746         
747         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
748         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
749
750         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
751         
752         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
753         ->dreg, that is not the vreg we are looking for.
754
755         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
756
757         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
758         LIVERANGE_END.
759
760         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
761         strange crashes.
762
763 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
764
765         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
766
767         * aot-compiler.c (emit_line_number_info): Fix line number emission when
768         the line diff is 0.
769
770         * aot-compiler.c: Add xdebug support on x86.
771
772         * unwind.c: Add x86 support.
773         
774         * aot-compiler.c (emit_exception_debug_info): Control the emission of
775         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
776
777         * mini.c (mini_method_compile): Ditto.
778         
779         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
780         the variable index.
781
782         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
783         which mimic .push_section/.pop_section in GAS.
784         
785         * aot-compiler.c: Emit precise live range information for variables.
786
787         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
788
789         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
790         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
791         them.
792
793         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
794         the live ranges of variables.
795
796         * mini.h (struct MonoMethodVar): Add two fields containing the live range
797         of the variable in terms of native offsets.
798
799 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
800
801         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
802         
803 2009-02-02  Mark Probst  <mark.probst@gmail.com>
804
805         Contributed under the terms of the MIT/X11 license by Steven
806         Munroe <munroesj@us.ibm.com>.
807
808         * exceptions-ppc.c (restore_regs_from_context): Correct operand
809         order (offset then base reg) for ppc_load_multiple_regs.
810         (emit_save_saved_regs) Correct operand order for
811         ppc_store_multiple_regs.
812         (mono_arch_get_call_filter): Correct operand order for
813         ppc_load_multiple_regs.
814
815         * mini-ppc.c (emit_memcpy): Fix operand order for
816         ppc_load_reg_update and ppc_store_reg_update.
817         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
818         (mono_arch_emit_epilog): Correct operand order for
819         ppc_load_multiple_regs.
820
821         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
822         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
823
824 2009-02-02  Mark Probst  <mark.probst@gmail.com>
825
826         * cpu-ppc64.md: Fixed storer4_memindex length.
827
828 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
829
830         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
831         line number info.
832         
833         * aot-compiler.c (emit_line_number_info): Optimize this.
834
835 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
836
837         * aot-compiler.c: Disassemble tokens in the IL disassembly.
838         
839         * aot-compiler.c: Add debug info for methods without debug info by
840         emitting an IL file and having the line number info referencing that file.
841
842         * aot-compiler.c: Optimize the size of the generated line number info.
843
844         * aot-compiler.c: Emit line number info in xdebug mode.
845
846         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
847         million arguments.
848
849 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
850
851         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
852
853         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
854         is used.
855
856 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
857
858         * basic-calls.cs: Test for the weird crash found on arm.
859         
860 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
861
862         * cpu-arm.md: Increase the size of storer8_membase_reg and
863         loadr8_membase_reg to 24 bytes to accomodate the extra add.
864
865         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
866         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
867         reg to LR otherwise we'll be loading/storing from just the offset.
868
869 2009-01-30  Miguel de Icaza  <miguel@novell.com>
870
871         Question: if we are storing gint32's inside the "*native_offset",
872         should we change the signature to "gint32 *native_offset" to
873         ensure that we do not have type definition problems?
874         
875         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
876         an int * as this is what the other function expects, causes
877         problems with Freescale's compiler that defined int32_t to be a
878         long and makes int incompatible 
879
880 2009-01-30  Miguel de Icaza  <miguel@novell.com>
881
882         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
883         filename conflict with bjam.
884
885 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
886
887         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
888         as it might use decomposed ops.
889
890 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
891
892         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
893
894         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
895         is defined.
896
897         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
898
899         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
900         offsets.
901
902         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
903         way registers are stored in MonoContext on arm.
904
905         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
906         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
907
908         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
909
910         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
911
912         * mini.c (mini_init): Register mono_isfinite.
913
914         * jit-icalls.c (mono_isfinite): New jit icall.
915
916         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
917         
918         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
919         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
920         the parent frame.
921
922 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
923
924         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
925         separate frame and stack pointers, so we must use FP to find the register
926         spill area.
927         The FP reg is retrieved from the MonoContext::regs array.
928
929 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
932         as FPA requires it.
933
934 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
935
936         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
937         return R4 and R8 when not running under softfloat.
938
939         Fixes basic-calls.exe
940
941 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
942
943         * mini-arm.c: Implement some overflow opcodes.
944
945 2009-01-29  Miguel de Icaza  <miguel@novell.com>
946
947         * ssa.c: handle another alloca.h
948
949         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
950         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
951         MONO_ARCH_USE_SIGACTION. 
952
953         * aot-runtime.c, mini-exceptions.c: Replace platform define with
954         capability defines.
955
956         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
957
958         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
959         PPC targets as sigaction does not exist on all platforms, define
960         this on a per-platform basis.
961
962         Instead of erroring out if the platform is not defined, include
963         mini-ppc-os.h, and expect that the OS specific setting provides
964         the required information.   
965
966 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
967
968         * aot-compiler.c: Fix --enable-minimal=aot.
969
970 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
971
972         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
973         previous change.
974
975 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
976
977         * exceptions-arm.c: Fix warnings.
978
979         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
980         ARM.
981
982         * mini-x86.c: Fix --enable-minimal=jit build.
983
984         * mini.c: Really fix --enable-minimal=jit build.
985         
986         * mini.c (construct_object_context_for_method): Move this outside
987         the DISABLE_JIT block to fix the --enable-minimal=jit build.
988
989         "Backported" of r124984 from 2.0 branch.
990         
991         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
992
993         "Backport" of r124977 + r124978 from 2.0 branch.
994         
995         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
996         to avoid calling mono_exception_from_token () from the throw trampoline.
997         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
998         for throwing corlib exceptions, this fixes full-aot support for corlib
999         exceptions.
1000
1001         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1002
1003 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1004
1005         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1006         part of the changes to split the code in mini into operating
1007         system specific files.
1008
1009         This patch was done by copying mini.c to the respective files to
1010         preserve SVN history.
1011
1012 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1013
1014         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1015
1016 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1019         remoting-invoke-with-check wrappers of shared methods.
1020
1021         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1022
1023 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1024
1025         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1026         optimization if the top of stack is the last instruction in the
1027         bblock.  Otherwise it might have been used after its definition.
1028         Fixes #469742.
1029
1030 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1031
1032         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1033         method as well when get_vcall_slot () fails to match a code sequence.
1034
1035         * mini-arm.c: Fix the android build, which doesn't have
1036         __aeabi_read_tp.
1037
1038 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1041         the s390x build.
1042
1043 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1044
1045         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1046
1047 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1050         and put its id into jinfo->used_regs. This is only used on amd64,
1051         which is currently the only platform generating unwind info.
1052
1053         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1054         the dwarf unwinder. This is required to correctly handle async exceptions
1055         like thread abort and stack overflows, which can happen while a method
1056         is in the middle of its prolog or epilog.
1057         
1058         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1059         the unwind info belonging to an AOTed method.
1060
1061         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1062         into cfg->unwind_ops.
1063         
1064         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1065
1066         * mini.c (mini_init): Call mono_unwind_init ().
1067         (mini_cleanup): Call mono_unwind_cleanup ().
1068
1069         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1070         unwind info to be shared between methods.
1071
1072         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1073         saved in the LMF.
1074
1075         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1076         get_throw_pending_exception () to avoid initialization races.
1077
1078         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1079         mono_arch_exceptions_init () function.
1080
1081         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1082
1083 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * mini.c (mono_get_domain_intrinsic): New helper function.
1086         (mono_get_thread_intrinsic): Ditto.
1087
1088         * mini-arm.c mini-ia64.c: Use the new helper functions.
1089         
1090         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1091         the last constrained_call change, since it is needed in the non-AOT
1092         case as well.
1093
1094         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1095         
1096         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1097         mono_get_lmf_addr () on arm eabi linux.
1098
1099 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1102         code sequence which matches a non-virtual call.
1103
1104 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1105
1106         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1107         stack pointer (r1).
1108
1109 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1112         runtime-invoke wrappers, since they are also shared based on signature.
1113
1114 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1115
1116         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1117         info from the (correct) context.
1118
1119 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1120
1121         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1122         
1123         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1124         using dwarf unwinding info. Not yet used.
1125
1126         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1127
1128 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1129
1130         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1131         descriptors.
1132
1133         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1134         special case and handle mono_arch_delegate_invoke_impl() returning
1135         function descriptors.
1136
1137         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1138         trampolines return function descriptors, too.
1139
1140 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1141
1142         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1143         out_of_line optimization.
1144
1145 2009-01-21  Martin Baulig  <martin@ximian.com>
1146
1147         * mini.h
1148         (MonoCompile): Added `disable_deadce_vars' to disable removing
1149         unused variables.
1150
1151         * mini.c
1152         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1153         inside the debugger.
1154
1155         * liveness.c (mono_analyze_liveness): Don't remove any unused
1156         variables if `cfg->disable_deadce_vars' is set.
1157
1158 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1159
1160         * method-to-ir.c: Only apply exception constructor optimization if
1161         the the method actually belongs to an exception class.  Fixes
1162         #467456.
1163
1164 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1165
1166         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1167         change inside a #ifdef __mono_ppc64__.
1168
1169         * aot-compiler.c (compile_method): Remove the previous limitation.
1170
1171         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1172         on type variables in AOTed code.
1173         
1174         * aot-compiler.c (compile_method): Skip generic methods having type 
1175         constraints on their generic parameters.
1176
1177         * aot-compiler.c (compile_method): Check for methods which cannot be
1178         encoded inside RGCTX_FETCH patches as well.
1179
1180         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1181         build.
1182
1183 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1184
1185         * method-to-ir.c: Force the vtable variable in shared generic code
1186         for the case that they might show up on a stack trace where they
1187         are needed.
1188
1189         * mini-exceptions.c: Save and use generic sharing info as well as
1190         IP in stack traces to resolve shared generic instantiations.
1191
1192 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1195         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1196
1197 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1198
1199         * method-to-ir.c: Do generic sharing for array constructors.
1200
1201 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1202
1203         * mini-exceptions.c (mono_print_thread_dump): Add information
1204         about the thread state using wapi_current_thread_desc.
1205
1206 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1207
1208         * basic-simd.cs: Tests for the new constructors. 
1209
1210 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * mini-ops.h: Added OP_EXPAND_*
1213
1214         * cpu-x86.md: Same.
1215
1216         * mini-x86.c (mono_arch_output_basic_block): Same.
1217         
1218         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1219
1220 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * iltests.il.in: Add a test for #467385.
1223
1224 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1227         thread been cleaned up is not the same currently in execution.
1228
1229         Fixes appdomain-unload crashes on windows, osx and linux variants
1230         without the __thread keyword.
1231
1232 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1233
1234         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1235         (koush@koushikdutta.com). Implement this for android.
1236
1237         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1238         begins with a digit.
1239
1240         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1241         mono_marshal_get_write_barrier ().
1242
1243 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1244
1245         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1246         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1247         that pass them on a register pair.
1248
1249         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1250         test was crashing due to that.
1251
1252 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1253
1254         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1255         trampoline code. Include ucontext.h only if available.
1256
1257 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1258
1259         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1260         and doesn't check whether it's sharable, like it was before
1261         removing the shared generics hash.  This brings IronPython
1262         performance back to what it was before that change.
1263
1264 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1265
1266         * method-to-ir.c: Handle delegate invocation optimization earlier,
1267         otherwise it would be handled (much more slowly) by the
1268         final/sealed optimization.
1269
1270 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1273         domain is not set. Fixes #465864.
1274
1275 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1276
1277         * method-to-ir.c: Don't stop sharing of generic methods with catch
1278         clauses - we already handle those.
1279
1280 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1281
1282         * mini.c, mini.h: lookup_generic_method() is now
1283         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1284         making the shared_generics_hash obsolete.
1285
1286 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1287
1288         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1289         use the red zone.  Make room on the stack first and then use it,
1290         not the other way around.
1291
1292 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * mini.c (mini_init): Call mono_xdebug_init ().
1295
1296         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1297
1298 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1299
1300         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1301
1302         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1303         trampolines.
1304
1305         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1306         debug+unwind info for trampolines.
1307
1308         * mini.c (mono_create_unwind_op): New helper function.
1309
1310         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1311
1312 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * aot-compiler.c: Fix the build.
1315
1316 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * Makefile.am: Update dtrace-prelink.sh location.
1319
1320 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1323         optimization. Fixes #464520.
1324
1325 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1326
1327         * mini-amd64.c : Adding code to save/restore non-volatile registers
1328            on Winx64.
1329
1330         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1331           registers on Winx64.
1332
1333         Contributed under MIT/X11 license.
1334
1335 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1336
1337         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1338         __GNUC_MINOR__ which can break when the major version changes.
1339
1340 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1341
1342         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1343
1344 2009-01-07  Geoff Norton  <gnorton@novell.com>
1345
1346         * helpers.c:  Allow mono -v -v -v to work on darwin.
1347
1348 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1349
1350         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1351           pattern. 
1352
1353         Contributed under MIT/X11 license.
1354
1355 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
1356
1357         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
1358         instead of directly accessing type->data.klass. Fixes #462016.
1359         (mono_allocate_stack_slots_full): Ditto.
1360
1361         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
1362         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
1363
1364         * aot-compiler.c (emit_plt): Fix ARM build.
1365
1366 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
1369         
1370         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
1371         change.
1372
1373         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
1374         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
1375         #463357.
1376
1377         * iltests.il.in: Add a regression test.
1378
1379 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1380
1381         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
1382
1383 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1384
1385         * basic-simd.cs: Add a regression test for #462457.
1386
1387 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1388
1389         * mini-ops.h: Add a definition of XPHI.
1390
1391         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
1392
1393         * ssa.c (op_phi_to_move): Handle XPHI.
1394
1395         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
1396
1397         Fixes #462457
1398
1399 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1400
1401         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
1402
1403 2008-12-31  Geoff Norton  <gnorton@novell.com>
1404
1405         * mini-ppc.c: The prolog size allocated can be too small for darwin
1406         ppc32 under certain circumstances.  Also fix a small logic bug.
1407
1408 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
1409
1410         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
1411         while loading AOT methods.
1412
1413         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
1414         since only the former is nulled out after a successful cast. This prevents
1415         crashes with rethrown exceptions when using --debug=casts.
1416
1417 2008-12-24  Mark Probst  <mark.probst@gmail.com>
1418
1419         * mini.h: New macro for checking whether a method is final,
1420         i.e. whether the method or its class is marked final.
1421
1422         * method-to-ir.c: Use the new macro for all final-checks
1423         consistently.  Fixes the crash in the System.ServiceModel tests.
1424
1425 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1426
1427         * mini-exceptions.c (get_exception_catch_class): Corrected another
1428         overly strict assertion.
1429
1430 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1431
1432         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
1433         Clobbering it is not allowed because the caller might use it as
1434         the vtable register in the interface call.
1435
1436 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1437
1438         * mini-exceptions.c (get_exception_catch_class): Corrected an
1439         overly strict assertion.
1440
1441 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
1442         
1443         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
1444
1445         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
1446
1447         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
1448
1449         * cpu-mips.md: correct lengths for certain long_ opcodes.
1450
1451         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
1452
1453         * 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().
1454         
1455 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1456
1457         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
1458         
1459 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1460         
1461         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
1462         
1463 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
1464
1465         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
1466         next basic block.
1467         
1468 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
1469
1470         * 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
1471
1472         * 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)
1473         
1474 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
1475         
1476         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
1477         
1478 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
1481         gshared code. Fixes #458947.
1482
1483         * generics.cs: Add a test.
1484
1485 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1486         
1487         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1488         
1489         * mini-mips.c: first pass n32 code generation.
1490
1491         * mini-mips.h: datatypes and defines for n32 support.
1492
1493         * exceptions-mips.c: first pass n32 code generation.
1494         
1495         * tramp-mips.c: first pass n32 code generation.
1496         
1497         * cpu-mips.md: add long_ opcodes.
1498         
1499 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1500
1501         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1502
1503         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1504         
1505         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1506         
1507         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1508
1509         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1510
1511         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1512
1513         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1514
1515         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1516
1517         * helpers.c: for mips/n32, don't pass -mips32 to objdump
1518
1519 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
1522
1523 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
1524
1525         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
1526
1527 2008-12-12  Mark Probst  <mark.probst@gmail.com>
1528
1529         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
1530         descriptors for helper functions directly in front of the code.
1531
1532 2008-12-11  Mark Probst  <mark.probst@gmail.com>
1533
1534         * method-to-ir.c: Removed an unnecessary assertion.
1535
1536 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1537
1538         * method-to-ir.c: Merge SGEN changes from the old JIT.
1539
1540 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1541
1542         * driver.c (compile_all_methods_thread_main): Handle failure of
1543         mono_get_method ().
1544
1545 2008-12-10  Mark Probst  <mark.probst@gmail.com>
1546
1547         * mini-ppc.c: Merged with mini-ppc64.c.
1548
1549         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
1550
1551         * Makefile.am: Use the same sources for PPC and PPC64.
1552
1553         * mini-ppc64.c: Removed.
1554
1555 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1556
1557         * branch-opts.c (remove_block_if_useless): Extract fall through detection
1558         code to mono_bb_is_fall_through.
1559         
1560         * branch-opts.c (mono_remove_critical_edges): Same.
1561
1562 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1563
1564         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
1565         expect that an OP_BR_REG will be there.
1566
1567 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1568
1569         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
1570         for the many branch ops. The original check miss OP_BR_REG.
1571
1572         Fixes #457574.
1573         
1574 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1575
1576         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
1577
1578 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
1581         while holding the aot lock.
1582
1583 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1584
1585         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
1586         
1587 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1588
1589         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
1590           to release all runtime callable wrappers held by the runtime.
1591
1592         Contributed under MIT/X11 license.
1593
1594 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1595
1596         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
1597           for Winx64.
1598
1599         Contributed under MIT/X11 license.
1600
1601 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1602
1603         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
1604         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
1605
1606 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1607
1608         * cpu-mips.md: fix ckfinite length
1609
1610         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
1611         (mono_arch_lowering_pass): cleanup, rearrange for clarity
1612         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
1613         
1614 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
1615
1616         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
1617         
1618 2008-12-08  Geoff Norton  <gnorton@novell.com>
1619
1620         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
1621         size by 8 bytes as well.
1622
1623 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1624
1625         * basic-simd.cs: Fix method names for Vector16b.
1626         
1627 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1628
1629         * basic-simd.cs: Fix method names for Vector16sb.
1630
1631 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1632
1633         * basic-simd.cs: Fix method names for Vector8us.
1634         
1635 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1636
1637         * basic-simd.cs: Fix method names for Vector8s.
1638         
1639 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1640
1641         * basic-simd.cs: Fix method names for Vector4ui.
1642
1643 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1644
1645         * basic-simd.cs: Fix method names for Vector2l.
1646
1647 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1648
1649         * basic-simd.cs: Fix method names for Vector2d.
1650
1651 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1652
1653         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
1654         that are extension methods.
1655
1656 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1657
1658         * basic-simd.cs: Fix method names for Vector4f.
1659
1660 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
1661
1662         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
1663         as such. Fixes #456669.
1664
1665 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1666
1667         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
1668         
1669 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1670
1671         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
1672         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
1673         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
1674         (mips_adjust_stackframe): handle FP spills
1675                 
1676         * mini-ops.h: add mips_mtc1_s2
1677         
1678         * cpu-mips.md: add mips_mtc1_s2
1679         
1680 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * unwind.c: New file, move the unwind info encoding functions here from
1683         aot-compiler.c, so they could be used at runtime too.
1684
1685 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1686
1687         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
1688         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
1689         
1690 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1691
1692         * mini-mips.c: cleanup warnings
1693         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
1694         (mips_adjust_stackframe): handle case of taking the address of stack locals
1695         
1696 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * aot-compiler.c: Implement a few functions missing from the asm writer.
1699         (emit_method_code): Only write symbols for methods when using the bin
1700         writer, since the assembler can't deal with the characters in our method
1701         names.
1702
1703         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
1704
1705         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
1706         call.
1707
1708         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
1709         a bit to also restore %rax.
1710
1711 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1712
1713         * mini-ppc.c: Some simple merges from mini-ppc64.c.
1714
1715 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1716
1717         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
1718         arguments.
1719
1720 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1721
1722         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
1723
1724         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
1725         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
1726
1727         * exceptions-ppc64.c: Removed.
1728
1729         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
1730
1731 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1732
1733         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
1734         tramp-ppc64.c.
1735
1736         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
1737
1738         * tramp-ppc64.c: Removed.
1739
1740 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1741
1742         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
1743         the TYPESPEC table.
1744
1745 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1746
1747         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
1748
1749         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
1750         mini-ppc.h instead of mini-ppc64.h.
1751
1752         * mini-ppc64.h: Removed.
1753
1754 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1755
1756         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
1757         
1758         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
1759         
1760 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1761
1762         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
1763         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
1764         code easier.
1765
1766 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1767
1768         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
1769
1770 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1771
1772         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
1773
1774 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1775
1776         * basic-simd.cs: Tests for operator == and != on Vector4f.
1777
1778 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1779
1780         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
1781
1782         * simd-intrinsics.c: Kill useless enum.
1783
1784 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1785
1786         * cpu-mips.md: add long_conv_to_ovf_i4_2
1787         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
1788
1789 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1790
1791         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
1792         
1793         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
1794
1795 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1796
1797         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
1798         
1799 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1800
1801         * basic-simd.cs: Add tests for new methods.
1802
1803 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1804
1805         * simd-intrinsics.c: Add support for operator == and !=
1806         on Vector4(u)i.
1807
1808         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
1809
1810 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1811
1812         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
1813
1814 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
1817
1818         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
1819         MONO_PATCH_INFO_ICALL_ADDR.
1820
1821         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
1822
1823         * aot-compiler.c: Resurrect full-aot support.
1824
1825 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1826
1827         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
1828         
1829 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1830
1831         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
1832         
1833 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
1834
1835         * basic-simd.cs: Fix tests to work under ppc.
1836         Remove tests for methods that will be removed.
1837
1838 2008-12-03  Mark Probst  <mark.probst@gmail.com>
1839
1840         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
1841         generic type (via a typedef or typeref) correctly.
1842
1843 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
1846         diagnose an assertion failure.
1847
1848 2008-12-02  Mark Probst  <mark.probst@gmail.com>
1849
1850         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
1851         Fix trampoline size.
1852
1853         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
1854         conversion opcodes are implemented natively instead via emulation.
1855
1856 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1857
1858         * cpu-mips.md: remove mips_xori
1859
1860         * mini-ops.h:  remove mips_xori
1861
1862         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
1863
1864         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
1865         
1866         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
1867         
1868 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1869
1870         * cpu-mips.md: fix instruction lengths.
1871
1872         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
1873
1874         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
1875
1876         * mini-ops.h: fix slti / sltiu op profiles.
1877         
1878 2008-12-02  Martin Baulig  <martin@ximian.com>
1879
1880         * method-to-ir.c (mono_method_to_ir): Disable debugging
1881         information for the init locals block to make the debugger stop
1882         after all locals have been initalized.
1883
1884 2008-12-02  Martin Baulig  <martin@ximian.com>
1885
1886         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
1887         running inside the debugger.
1888
1889 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
1890
1891         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
1892         is enabled.
1893
1894         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
1895         alu->alu imm optimization which only shows if deadce is disabled.
1896
1897         * aot-compiler.c: Rename the function names for the binary and asm writers
1898         so they can coexist in the same process. Rework the xdebug code to use the
1899         asm writer. This avoids the need to call into the runtime to dump the
1900         debugging info. Add more debugging info for types.
1901
1902         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
1903
1904         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
1905         cpu description tables, they can't occur in cpu-<ARCH>.md.
1906
1907         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
1908         the stack in CEE_LDFLDA. Fixes #450542.
1909
1910         * generics.cs: Add a new test.
1911
1912 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1913
1914         * mini-ops.h: updated MIPS opcodes
1915         * mini-mips.c: decompose long opts
1916         * mini-mips.h: decompose long opts
1917         
1918 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
1919
1920         * cpu-mips.md: fix length on int_rem_un
1921         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
1922         
1923 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
1926
1927         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
1928
1929 2008-11-29  Martin Baulig  <martin@ximian.com>
1930
1931         * mini-exceptions.c (mono_handle_native_sigsegv): Check
1932         mono_debug_using_mono_debugger() in addition to the
1933         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
1934
1935 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
1936
1937         * mini-ops.h: updated more MIPS opcodes
1938         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
1939         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
1940         
1941 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1942
1943         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
1944
1945 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
1946
1947         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
1948         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
1949         * mini-ops.h: correct selected mips opcode entries
1950         
1951 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1952
1953         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
1954         make them work.
1955
1956 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1957
1958         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
1959
1960 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
1961
1962         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
1963         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
1964         * mini-mips.h: disable IMT
1965         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
1966         
1967 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1968
1969         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
1970
1971 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1972
1973         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
1974
1975 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
1978         consistency.
1979
1980 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
1981
1982         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
1983         for Set/GetVector aligned versions.
1984
1985 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
1986
1987         * basic-simd.cs: Add tests for Get/SetVector.
1988
1989 2008-11-27  Mark Probst  <mark.probst@gmail.com>
1990
1991         * mini.c: Removed g_slist_append_mempool().  Now in
1992         metadata/mempool.c.
1993
1994 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
1995
1996         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
1997         size properly and make the bounds check optional.
1998
1999         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2000         for SetVector and IsAligned.
2001
2002 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * mini.c: Remove unused mono_normalize_opcodes () function.
2005
2006 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2007
2008         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2009         using the new atomic add ops now.
2010
2011         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2012         add.
2013
2014 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2015
2016         * mini-ppc64.c: Several fixes.
2017
2018 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2019
2020         * cpu-mips.md: added jump_table
2021         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2022
2023 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2024
2025         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2026
2027 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2028
2029         * mini-ops.h: corrected a handful of MIPS opcodes.
2030
2031 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2032
2033         * aot-compiler.c: MIPS to use ELF writer
2034
2035 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2036
2037         * mini-codegen.c: remove MIPS specific assert.
2038
2039 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2040
2041         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2042         fixes.  PPC64 now passes most of the runtime regressions.
2043
2044 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2045
2046         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2047         volatile intervals a bit.
2048
2049 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2050
2051         * basic-long.cs: New test case.
2052
2053 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * mini.c (mini_method_compile): Disable globalra for large methods for 
2056         now.
2057
2058         * regalloc2.c (order_moves): Add fp support.
2059
2060         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2061         source bblock ends with an OP_BR_REG.
2062
2063         * ratests.cs: Add a new test.
2064
2065 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2066
2067         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2068         sharing.  PPC64 now passes generics.exe.
2069
2070 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2071
2072         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2073
2074 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2077         memory when mono_jit_info_table_find () can't find the method in the
2078         LMF case.
2079
2080         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2081         AOTed code too.
2082         
2083         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2084         writer too.
2085
2086 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2087
2088         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2089         Several fixes.  PPC64 now runs exceptions.exe and
2090         devirtualization.exe.
2091
2092 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2093
2094         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2095         arrays.exe and basic-math.exe.
2096
2097 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2098
2099         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2100         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2101
2102 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2103
2104         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2105
2106 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2107
2108         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2109
2110         * ir-emit.h: Move macros from method-to-ir.c to here.
2111
2112 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2113
2114         * mini-ops.h: Correct the long simd ops to use LREG.
2115
2116 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2119         
2120         * mini-ops.h: Correct the dreg type of a few long opcodes.
2121
2122         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2123         Add netbsd support.
2124
2125 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2126
2127         * mini-ppc.c: remove negative stack references in epilog
2128         for platforms that don't support the red zone.
2129
2130 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2131
2132         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2133         point regs.  Now PPC64 passes basic-calls.exe.
2134
2135 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * basic-simd.cs: Add tests for accessors of Vector2l.
2138
2139 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2140
2141         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2142
2143         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2144         
2145         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2146
2147 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2148
2149         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2150         PPC64 passes basic-long.exe.
2151
2152 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2153
2154         * decompose.c: Decompose carry and overflow add on PPC64 like on
2155         other 64 bit archs.  Don't decompose sub at all on PPC64.
2156
2157         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2158         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2159         basic-long.exe.
2160
2161 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2162
2163         * basic-simd.cs: Add tests for accessors of Vector2d.
2164
2165 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2166
2167         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2168
2169         * cpu-x86.md: Same.
2170
2171         * mini-x86.c (mono_arch_output_basic_block): Same.
2172         
2173         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2174
2175 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2176
2177         * basic-simd.cs: Add tests for accessors of Vector4f.
2178
2179 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2180
2181         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2182
2183         * cpu-x86.md: Same.
2184
2185         * mini-x86.c (mono_arch_output_basic_block): Same.
2186         
2187         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2188
2189 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2190
2191         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2192
2193 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2194
2195         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2196
2197         * cpu-x86.md: Same.
2198
2199         * mini-x86.c (mono_arch_output_basic_block): Same.
2200         
2201         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2202
2203 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2204
2205         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2206
2207 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2208
2209         * simd-intrinsics.c: Enable setters for Vector16sb.
2210
2211 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2212
2213         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2214
2215         * cpu-x86.md: Same.
2216
2217         * mini-x86.c (mono_arch_output_basic_block): Same.
2218         
2219         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2220
2221 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2222
2223         * simd-intrinsics.c: Implement setter for Vector8us.
2224
2225 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2226
2227         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2228         for dead variables.
2229
2230 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2231
2232         * mini-ppc.c: remove references to the red zone in the prolog
2233         (for systems that don't support it).
2234
2235 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2236
2237         * cpu-ppc64.md: Fixed a few instruction lengths.
2238
2239         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2240         now.
2241
2242 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2243
2244         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2245         basic.exe now.
2246
2247 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2250
2251 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2252
2253         * mini-ops.h: Added OP_INSERT_I2.
2254
2255         * cpu-x86.md: Same.
2256
2257         * mini-x86.c (mono_arch_output_basic_block): Same.
2258         
2259         * simd-intrinsics.c: Implement setter for Vector8s.
2260
2261         * simd-methods.h: Add the names of get setters of Vector8s.
2262
2263 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2266         
2267         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2268         parameters.
2269
2270         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2271
2272 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2273
2274         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2275         for PPC64.  An empty program runs now.
2276
2277 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2278
2279         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2280
2281         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2282         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2283         info for JITted code is emitted into a shared library, loadable into gdb.
2284
2285 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2286
2287         * Makefile.am: Changes to build PPC64.
2288
2289         * mini-arch.h: Include mini-ppc64.h on PPC64.
2290
2291 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2292
2293         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2294         in PPC code up to r119147.
2295
2296 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2297
2298         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2299         cpu-ppc64.md: Changes for PPC64.
2300
2301         Based on code submitted by andreas.faerber@web.de at
2302         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2303         X11/MIT license.
2304
2305 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2306
2307         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2308         cpu-ppc64.md: Copied from the corresponding PPC files from
2309         r118846.
2310
2311 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2312
2313         * mini-ops.h: Added OP_ROUND.
2314
2315         * cpu-x86.md: Added round.
2316
2317         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2318
2319         * basic-math.cs: Added test_0_round to test rounding.
2320
2321         Contributed under MIT/X11 license.
2322
2323 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2324
2325         * aot-compiler.c : Fix the Winx64 build.
2326
2327         Contributed under MIT/X11 license.
2328
2329 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2330
2331         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2332         in OP_EXTRACT_R8 to avoid possible stack corruption.
2333
2334 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2335
2336         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2337
2338         * cpu-x86.md: Added extract_r8.
2339
2340         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2341         
2342         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2343         a couple of OP_EXTRACT_I4.
2344
2345         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2346
2347         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2348
2349 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2350
2351         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2352         and not 4.1. 
2353
2354 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2355
2356         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
2357         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
2358
2359         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
2360         are not needed any more.
2361
2362         * mini.h: Remove the unused INS_LIST macros.
2363
2364         * mini.c (mini_method_compile): Remove a disable globalra case which is no
2365         longer needed.
2366
2367         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
2368         ir-emit.h.
2369
2370         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
2371         mono_alloc_ireg () instead.
2372
2373         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
2374         macros.
2375
2376         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
2377         on amd64.
2378
2379         * aot-runtime.c (load_aot_module): Disable AOT when running under
2380         CAS.
2381
2382         * mini-amd64.h: Change the monitor fastpath defines to check for
2383         !PLATFORM_WIN32 so they work on *bsd too.
2384
2385         * mini.h mini.c mini-hhpa.c: Remove more unused code.
2386
2387         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
2388
2389         * mini.h (MonoCompile): Remove new_ir flag.
2390
2391         * regalloc.h regalloc.c: Remove unused code.
2392
2393         * cpu-*.md: Remove more unused opcodes.
2394
2395         * simple-cee-ops.h simple-mini-ops.h: Removed.
2396
2397         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
2398         
2399 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2400
2401         * aliasing.h: Removed.
2402
2403         * *.c: Remove references to aliasing.h and inssel.h.
2404
2405         * mini.c: Remove additional unused functions.
2406
2407         * mini-ops.h cpu-*.md: Remove unused opcodes.
2408
2409 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2410
2411         Remove the old JIT code.
2412
2413         * inssel*.brg: Removed.
2414
2415         * ssa.c abcremoval.c aliasing.c: Removed.
2416
2417         * ssa2.c: Renamed to ssa.c.
2418
2419         * abcremoval2.c: Renamed to abcremoval.c.
2420
2421         * *.c: Removed all !cfg->new_ir code.
2422
2423         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
2424         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
2425
2426         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
2427         
2428 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
2431         to simplify the code and cut back on the number of global symbols in the AOT
2432         file.
2433         
2434         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
2435
2436 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
2439         with the got/got_info tables.
2440
2441         * mini.h: Bump AOT file format version.
2442         
2443         * unwind.h: New file, contains definitions for stack unwinding.
2444
2445         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
2446         to cfg->unwind_ops.
2447         
2448         * aot-compiler.c: Generalize the emitting of unwind information to use the
2449         information in cfg->unwind_ops.
2450
2451         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
2452
2453         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
2454         AOT method frames. Enable writing symbols for methods by default.
2455
2456 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
2457
2458         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
2459         and make it work with vectors of element sizes 1, 2 and 4.
2460
2461         * simd-intrinsics.c: Enable getter for all vectors with element size
2462         1, 2 or 4.
2463
2464         * simd-methods.h: Add the names of other getters.
2465
2466         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
2467
2468         * cpu-x86.md: Same.
2469
2470         * mini-x86.c: Same.
2471
2472 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
2473
2474         * mini-ppc.h: portability fix.
2475
2476 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2477
2478         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
2479         buggy and will overwrite it.
2480
2481 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2482
2483         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
2484         Use it to emit local symbols for all methods so AOTed methods show up with
2485         their full name in gdb/valgrind output.
2486
2487 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
2488
2489         * mini-ppc.c: portability fixes.
2490
2491 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2492
2493         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
2494         entries out of the if (!generic_shared...) code so it is always done.
2495         (mono_class_init_trampoline): Do the patching when running under valgrind
2496         too, newer versions of valgrind have no problems with it.
2497
2498 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
2501         further sections.
2502
2503 2008-11-13  Mark Probst  <mark.probst@gmail.com>
2504
2505         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
2506         filters.
2507
2508 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2509
2510         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
2511
2512 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2513
2514         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
2515
2516         * cpu-x86.md: Same.
2517
2518         * mini-x86.c: Same.
2519
2520         * simd-intrinsics.c: Same.
2521
2522 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2523
2524         * simd-intrinsics.c: Enable constructor intrinsics for all types.
2525
2526 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2527
2528         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
2529         to work with more Vector types.
2530
2531 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2532
2533         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
2534         store the elemens directly instead of using and intermediate.
2535
2536 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
2539
2540         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
2541         to preserve %eax for aot plt trampolines.
2542
2543         * aot-compiler.c (compile_method): Don't skip synchronized methods.
2544         (encode_method_ref): Flag synchronized methods so they won't go through
2545         the AOT trampoline.
2546
2547         * aot-compiler.c: Additional work to support AOTing synchronized methods/
2548         wrappers.
2549
2550         * cpu-ia64.md (jmp): Increase max length.
2551
2552 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
2555         open generic classes.
2556
2557         * aot-compiler.c: Enable the ELF writer on ELF platforms.
2558
2559         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
2560         box+brtrue optimization since it causes test failures on x86.
2561
2562 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2563
2564         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
2565
2566         * cpu-x86.md: Same.
2567
2568         * mini-x86.c: Same.
2569
2570         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
2571         for simd ctor values. 
2572
2573         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
2574         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
2575
2576 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2577
2578         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
2579         LogicalRightShift.
2580
2581         * simd-instrincs.c: Same.
2582
2583         * basic-simd.cs: Same.
2584
2585 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2586
2587         * ratests.cs: Add more tests.
2588
2589         * regalloc2.c (add_spill_code): Handle more corner cases.
2590
2591 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2592
2593         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
2594         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
2595         both the source an destination of an instruction.
2596
2597 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2598
2599         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
2600         wapihandles.c: more portability changes.
2601
2602 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
2603
2604         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
2605         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
2606         safe to execute in a signal handler and the kernel provides better
2607         the info in /proc/self/smaps. Avoid the assert on sigaction during
2608         cleanup.
2609
2610 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
2613         do the bblock linking hack if it is actually needed.
2614
2615         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
2616         up linking.
2617
2618         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
2619         crash problem is fixed.
2620
2621         * branch-opts.c (mono_remove_critical_edges): Link up newly added
2622         bblocks.
2623
2624         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
2625         for catch clauses.
2626         (mini_method_compile): Set the starting value of next_vreg to 
2627         MAX_IREGS + MAX_FREGS when using globalra.
2628
2629         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
2630         filter clauses with BB_EXCEPTION_HANDLER.
2631
2632         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
2633
2634 2008-11-10  Mark Probst  <mark.probst@gmail.com>
2635
2636         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
2637         space for stdcall.  Fixes regressions on Win32.
2638
2639 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
2642         bblocks.
2643         (linear_scan): Remove an assert which doesn't seem to be needed.
2644
2645         * local-propagation.c (mono_local_deadce): Avoid a call to
2646         MONO_DELETE_INS which would screw up the instruction linking.
2647
2648         * mini.c (mono_decompose_op_imm): Make this work with globalra.
2649
2650         * regalloc2.c: Upgrade to work the current JIT code.
2651
2652 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
2653
2654         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
2655         case.
2656
2657         * aot-runtime.c: Remove some dead code.
2658
2659         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
2660         consistency.
2661         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
2662
2663         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
2664         trampolines using sscanf since atoi doesn't work on large unsigned values.
2665
2666         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
2667         Initialize code_size.
2668
2669 2008-11-08  Mark Probst  <mark.probst@gmail.com>
2670
2671         * method-to-ir.c (mini_emit_inst_for_method): Make
2672         Interlocked.CompareExchange work for Int arguments on 32 bit
2673         archs, as well.
2674
2675 2008-11-07  Mark Probst  <mark.probst@gmail.com>
2676
2677         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
2678
2679 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
2680
2681         * main.c Fix MSVC build.
2682
2683         Contributed under MIT/X11 license.
2684
2685 2008-11-06  Mark Probst  <mark.probst@gmail.com>
2686
2687         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
2688         alignment larger than 8 bytes are aligned correctly, too.
2689
2690         * mini.c: Honor the min_align field of MonoClass when laying out
2691         the stack.
2692
2693 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
2696
2697         * aot-compiler.c (emit_plt): Fix a warning.
2698         
2699         * aot-compiler.c: Implement ARM support in the binary writer.
2700
2701 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2702
2703         * basic-simd.cs: Add test for getter with byref arg.
2704         Fix the naming of a few tests.
2705         Add missing checks to a test.
2706
2707 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
2710
2711         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
2712         most of the full-aot support for monitor enter/exit trampolines.
2713
2714         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
2715         enter/exit trampoline creation functions.
2716
2717         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
2718         make dist.
2719
2720 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
2721
2722         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
2723         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
2724         implement the needed functionality without adding crap to the runtime.
2725
2726 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
2729         non-x86 builds.
2730
2731         * mini.c (mono_build_date): New global version holding the build date in
2732         string format.
2733         
2734         * Makefile.am (buildver.c): Generate a file containing the build date.
2735
2736         * main.c: Set the build date from the generated file.
2737
2738         * mini.c (mono_get_runtime_build_info): New helper function returning build
2739         information in a string format.
2740         
2741         * driver.c (mono_main): Print the build date in --version.
2742
2743         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
2744         file when the bind-to-runtime-version option is used.
2745
2746 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2747
2748         * simd-intrinsics.c: Fix bug when using getters and byref args. 
2749
2750 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2751
2752         * simd-methods.h: Rename prefetch methods.
2753
2754         * simd-intrinsics.c: Same.      
2755
2756 2008-11-05  Mark Probst  <mark.probst@gmail.com>
2757
2758         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
2759         sizes.
2760
2761 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * aot-compiler.c: Use the bundled elf header files instead of depending on
2764         the system one.
2765         
2766         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
2767         mempool.
2768
2769         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
2770         on every call.
2771
2772 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
2773
2774         * cpu-x86.md: Add store nta ops.
2775
2776         * mini-ops.h: Same.
2777
2778         * mini-x86.c: Same.
2779
2780         * mini.h: Add an enum for simd prefetch modes.
2781
2782         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
2783         of store. Use the changed code to support store nta.
2784
2785         * simd-intrinsics.c: Add prefetch ops for all vector types.
2786
2787 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
2790         threads.
2791         
2792         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
2793         names.
2794
2795         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
2796         trampolines.
2797
2798 2008-11-04  Mark Probst  <mark.probst@gmail.com>
2799
2800         * mini-x86.c: Fixed commit.
2801
2802 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2803
2804         * aot-compiler.c (emit_plt): Align the plt section only on x86.
2805
2806 2008-11-04  Mark Probst  <mark.probst@gmail.com>
2807
2808         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
2809         and MONITOR_EXIT, for the ASM fastpaths.
2810
2811         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
2812         available.
2813
2814         * mini.c, patch-info.h: Signature and patch infos for
2815         Monitor.Enter/Exit trampolines.
2816
2817         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
2818
2819         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
2820         Monitor.Enter/Exit ASM fastpath for Linux.
2821
2822 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
2825
2826         * objects.cs: Add a new test.
2827         
2828         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
2829
2830         * aot-runtime.c (load_method): Run class initialization in the PLT case even
2831         if MONO_LOG_LEVEL is set.
2832
2833         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
2834
2835         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
2836
2837         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
2838         
2839         * aot-compiler.c: Change the relocation code to use virtual addresses instead
2840         of file offsets. Align the sections belonging to the data segment to 
2841         PAGESIZE.
2842
2843 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
2846         elf.h. Port it to amd64.
2847
2848 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2849
2850         * driver.c: Enable SIMD by default.
2851
2852 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2853
2854         * cpu-x86.md: Add prefetch op.
2855
2856         * mini-ops.h: Same.
2857
2858         * mini-x86.c: Same.
2859
2860         * mini.h: Add an enum for simd prefetch modes.
2861
2862         * simd-methods.h: Add prefetch function names.
2863
2864         * simd-intrinsics.c: Add prefetch ops for all vector types.
2865
2866 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * aot-compiler.c (emit_bytes): Speed this up a little.
2869
2870 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * aot-compiler.c: Add JIT time etc. statistics.
2873         
2874         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
2875
2876         * mini.h (MonoCompile): Add 'got_offset' field.
2877
2878         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
2879         method_got_offsets array.
2880
2881         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
2882         wrappers.
2883
2884         * aot-compiler.c (compile_method): Add generic method instances referenced
2885         by the method to the list of methods to be compiled, this is required so if
2886         A<T> references B<T>, and another assembly references A<int>, then it will
2887         also get a copy of B<int>.
2888
2889         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
2890         when checking for monitor enter/exit.
2891
2892 2008-10-30  Mark Probst  <mark.probst@gmail.com>
2893
2894         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
2895         for Monitor.Enter and Monitor.Exit if enabled.
2896
2897         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
2898         Solaris.
2899
2900 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
2901
2902         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
2903         of an OP_MOVE. Fixes #440046.
2904
2905         * basic-long.cs: Add a new test.
2906
2907 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
2908
2909         * mini.h: Add synchronization note for the managed counter-part.
2910
2911         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
2912         returns the simd caps of the current cpu.
2913
2914 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
2915
2916         * basic-simd.cs: Remove Console.WriteLine.
2917
2918 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2919
2920         * basic-simd.cs: New tests for Vector2ul.
2921
2922 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2923
2924         * simd-intrinsics.c: Add new vector type Vector2ul.
2925
2926 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2927
2928         * basic-simd.cs: New tests for Vector2l.
2929
2930 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2931
2932         * cpu-x86.md: Add long version of most packed int ops.
2933
2934         * mini-ops.h: Same.
2935
2936         * mini-x86.h: Same.
2937
2938         * simd-intrinsics.c: Add new vector type Vector2l.
2939
2940 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2941
2942         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
2943
2944         * simd-methods.h: Remove SN_op_BitwiseXor.
2945
2946 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
2947
2948         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
2949         alignment.
2950
2951 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
2952
2953         * basic-simd.cs: Test for Vector2d.
2954
2955         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
2956         value.
2957
2958 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
2959
2960         * cpu-x86.md: Add double version of all packed float ops.
2961
2962         * mini-ops.h: Same.
2963
2964         * mini-x86.h: Same.
2965
2966         * simd-intrinsics.c: Add new vector type Vector2d.
2967
2968         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
2969
2970         * simd-methods.h: Add Duplicate.
2971
2972 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
2973
2974         * basic-simd.cs: Test for packing with signed saturation.
2975
2976 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
2977
2978         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
2979         found in the TYPESPEC table.
2980
2981 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
2984         too.
2985
2986         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
2987
2988         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
2989         instead of the RVA, since the RVA can be changed by tools like the cil 
2990         stripper.
2991
2992         * method-to-ir.c (mono_method_to_ir2): Ditto.
2993
2994         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
2995         (deserialize_variable): Ditto.
2996
2997 2008-10-25  Martin Baulig  <martin@ximian.com>
2998
2999         * debug-mini.c (write_variable): Use
3000         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3001
3002 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3003
3004         * cpu-x86.md: Add unsigned variants of packd and packw.
3005
3006         * mini-ops.h: Same.
3007
3008         * mini-x86.h: Emit the right instruction for packd and packw.
3009         Add unsigned variants of packd and packw.
3010
3011         * simd-intrinsics.c: Packd and packw were used in place of their
3012         unsigned variants. Change that.
3013         Add intrinsics for (Signed)PackWithSignedSaturation.
3014
3015         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3016
3017 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3018
3019         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3020
3021 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3022
3023         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3024
3025         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3026
3027         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3028         sse instructions.
3029
3030         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3031
3032 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3033
3034         * method-to-ir.c, mini.c: Special casing for the synchronized
3035         wrapper for the ldtoken+GetTypeFromHandle case.
3036
3037 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3038
3039         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3040
3041         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3042         created/split bblocks.
3043
3044 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3045
3046         * mini-ops.h: Add packed signed mul high.
3047         
3048         * cpu-x86.md: Same.
3049
3050         * mini-x86.c (mono_arch_output_basic_block): Same.
3051
3052         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3053
3054         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3055
3056 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3057
3058         * basic-simd.cs: Tests for Vector16sb.
3059
3060 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3063
3064 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3065
3066         * mini-ops.h: Add packed signed min, max and compare greater.
3067         
3068         * cpu-x86.md: Same.
3069
3070         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3071         saturation.
3072
3073         * simd-methods.h: Add CompareGreaterThan.
3074
3075         * simd-methods.h: Remove CompareEquals.
3076
3077         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3078
3079         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3080
3081         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3082         CompareEqual.
3083
3084 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3085
3086         * basic-simd.cs: Fix tests due to change in the API.
3087
3088 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3091
3092 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3093
3094         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3095
3096         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3097         inst_offset as this has invalid values for LDADDR.
3098
3099 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3100
3101         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3102
3103         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3104
3105 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3106
3107         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3108         for accessing field->data.
3109
3110 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3111
3112         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3113
3114 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3115
3116         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3117
3118         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3119
3120 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3123         from the cfg mempool.
3124
3125 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3126
3127         * basic-simd.cs: Tests for new methods in Vector8us.
3128
3129 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3130
3131         * mini-ops.h: Add multiply and store high.
3132         
3133         * cpu-x86.md: Same.
3134
3135         * mini-x86.c (mono_arch_output_basic_block): Same.
3136
3137         * simd-methods.h: Same.
3138
3139         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3140         and CompareEqual.
3141
3142 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3145         mono_class_setup_vtable ().
3146
3147         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3148         mono_class_get_vtable_entry () for accessing klass->vtable.
3149
3150         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3151
3152         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3153         found.
3154
3155         * method-to-ir.c (mono_save_token_info): Don't save references made from
3156         wrappers.
3157
3158         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3159         of generic instances.
3160
3161         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3162
3163 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3164
3165         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3166         OP_JMP depends on the method signature.  Calculate it properly.
3167
3168 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3169         
3170         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3171         called directly.
3172
3173         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3174         instances.
3175         (emit_extra_methods): Add another table mapping method indexes to 
3176         offsets in the extra_method_info table.
3177
3178         * mini.h: Bump AOT file format version.
3179         
3180         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3181         and mono_aot_get_method_from_token () into one function.
3182
3183 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3184
3185         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3186         separate counter.
3187
3188 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3189
3190         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3191         methods.
3192
3193         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3194         disable_aot.
3195
3196         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3197
3198         * mini.h: Bump aot file format version.
3199
3200         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3201         AOT file can contain native code for methods which are not in the METHOD
3202         table. Generate code for non-sharable generic instances of generic methods
3203         found in the METHODSPEC table.
3204         
3205         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3206         encoding generic type handles.
3207
3208         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3209         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3210
3211         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3212         macros + MONO_ADD_INS.
3213
3214         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3215         context as well.
3216
3217         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3218
3219         * mini.h: Bump aot file format version.
3220
3221         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3222
3223 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3224
3225         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3226         platforms, with definable stack alignment value.  Set to 16 now
3227         for all platforms.
3228
3229         * mini.c, mini.h, driver.c: Command line option for disabling
3230         stack alignment.
3231
3232 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3233
3234         * basic-simd.cs: Tests for new methods in Vector4ui.
3235
3236 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3237
3238         * mini-ops.h: Add packed int shuffle.
3239         
3240         * cpu-x86.md: Same.
3241
3242         * mini-x86.c (mono_arch_output_basic_block): Same.
3243
3244         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3245         extract mask, max, min, shuffle.
3246
3247         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3248
3249 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3250
3251         * basic-simd.cs: Tests for new methods in Vector8us.
3252
3253 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3254
3255         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3256         RuntimeTypeHandle, not a TypedReference.
3257
3258 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3259
3260         * simd-intrinsics.c: remove relocations.
3261
3262 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3265         optimizations from the x86 backend.
3266
3267 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3268
3269         * simd-methods.h, simd-intrinsics.c: debloat method names and
3270         prepare for no relocations.
3271
3272 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3273
3274         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3275         
3276         * cpu-x86.md: Same.
3277
3278         * mini-x86.c (mono_arch_output_basic_block): Same.
3279
3280         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3281         extract mask, max, min and sum of absolute differences.
3282
3283         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3284         method name.
3285
3286 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3287
3288         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3289         Renamed one test for consistency.
3290
3291 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3292
3293         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3294         fix to the code that deal with other blocks.
3295
3296 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3297
3298         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3299
3300 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3301
3302         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3303         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3304         able to process the source reg.
3305
3306 2008-10-16  Martin Baulig  <martin@ximian.com>
3307
3308         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3309
3310         * inssel.brg: Add `OP_HARD_NOP'.
3311
3312         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3313
3314         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3315         `OP_HARD_NOP' instruction when running inside the debugger.
3316
3317         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3318         `OP_HARD_NOP' instruction when running inside the debugger.
3319
3320 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3321
3322         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3323         now works. The issue with the regalloc tripping up no longer
3324         happens.
3325
3326         * simd-intrinsics.c (load_simd_vreg): Same.
3327
3328 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3329         
3330         * basic-simd.cs: Tests for new Vector8ui methods.
3331
3332 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3333
3334         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3335         only for type. This fixes crashes where MonoInst::klass is checked
3336         for ops of type != VTYPE or OBJ.
3337
3338         * simd-intrinsics.c (load_simd_vreg): Same.
3339
3340 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3341
3342         * mini-ops.h: Add ops for packed shuffle/max/avg and
3343         extract mask.
3344         
3345         * cpu-x86.md: Same.
3346
3347         * mini-x86.c (mono_arch_output_basic_block): Same.
3348
3349         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3350         extract mask.
3351
3352         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3353         to emit extract mask op.
3354
3355         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
3356         to emit word shuffles.
3357
3358 2008-10-15  Mark Probst  <mark.probst@gmail.com>
3359
3360         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
3361         the largest alignment needed by a variable, but at least
3362         sizeof(gpointer).
3363
3364 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3365
3366         * basic-simd.cs: Tests for the fixes in the last commit.
3367
3368 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3369
3370         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
3371         no longer handles STACK_PTR input.
3372
3373         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
3374
3375         * simd-intrinsics.c (load_simd_vreg): New function that works like 
3376         get_simd_vreg   but handles STACK_PTR input.
3377
3378         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
3379         as the input can be an arbitrary pointer.
3380
3381         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
3382         LDADDR local optimization directly otherwise use a store op.
3383
3384 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3385
3386         * basic-simd.cs: Tests for dup low and dup high.
3387
3388 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3389
3390         * mini-ops.h: Add dup low and dup high ops.
3391         
3392         * cpu-x86.md: Same.
3393
3394         * mini-x86.c (mono_arch_output_basic_block): Same.
3395
3396         * simd-intrinsics.c (vector4f_intrinsics): Same.
3397
3398 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3399
3400         * basic-simd.cs: Tests for recently added functionality.
3401
3402 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3403
3404         * mini-ops.h: Add remaining sse1 fp ops.
3405         
3406         * cpu-x86.md: Add remaining sse1 fp ops.
3407
3408         * mini-x86.c (mono_arch_output_basic_block): Same.
3409
3410         * mini.h: Add enum for simd FP compare conditions.
3411
3412         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
3413
3414         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
3415         so the backed can generate the appropriate op.
3416
3417 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3418         This patch squeese one more byte from the SimdIntrinsc struct.
3419
3420         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
3421         a a shift amount intead of simply or'ing it.
3422
3423         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
3424
3425         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
3426         byte so we can have an aditional flags field without increasing struct size.
3427
3428         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
3429         against the simd_supported_versions bitmask.
3430
3431         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
3432
3433 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
3434
3435         * mini.c: remove rawbuffer code (the only use here is unsafe because
3436         it takes locks during signal handling and the kernel now provides much
3437         better info in proc/pid/smaps these days).
3438
3439 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3440
3441         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
3442         OP_X86_PUSH_OBJ. Fixes #434620.
3443
3444         * objects.cs: Add a test.
3445         
3446 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
3447
3448         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
3449         that the packuswb/packusdw don't work with unsigned numbers for what
3450         would be negative numbers in signed format.
3451
3452         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
3453         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
3454
3455         * mini-ops.h: Add doubleword forms of many ops and packing ones.
3456
3457         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
3458
3459         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
3460
3461         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
3462
3463         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
3464         add more ops.
3465
3466         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
3467         version as the enum in mini.h.
3468
3469         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
3470         for sse3 ops, check the simd_version field if present. This way the code
3471         works with all versions of sse.
3472
3473 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3474
3475         * simd-intrinsics.c: Fixed intrinsic name typo.
3476
3477         * mini.h: Added missing simd exported function.
3478
3479         * basic-simd.cs: Added tests for Vector4ui.
3480         Fixed broken test for Vector16b.
3481
3482 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
3485         the max length to 64.
3486
3487 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3488
3489         * method-to-ir.c: Only do the fast virtual generic method call for
3490         non-wrapper methods.
3491
3492         * mini.h, mini-trampolines.c: The new generic virtual remoting
3493         trampoline handles virtual method calls via the vtable (as done by
3494         the fast virtual generic method calls) to remoting proxies.
3495
3496         * mini.c (mono_jit_create_remoting_trampoline): For generic
3497         methods reate a generic virtual remoting trampoline.
3498
3499         * mini-amd64.h: Enable fast virtual generic method calls again.
3500
3501 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3502
3503         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
3504         restore registers when doing tail calls.
3505
3506 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3507
3508         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
3509         Vector4ui.
3510
3511 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3512
3513         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
3514
3515 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3516
3517         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
3518
3519 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3520
3521         * basic-simd.cs: Retrofit for API changes.
3522
3523 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3524
3525         * mini-ppc.c: Handle integer stack arguments for tail calls.
3526
3527 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3528
3529         * optflags-def.h: Removed sse3 optimization.
3530
3531         * driver.c: Same.
3532
3533         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
3534         sse3.
3535
3536         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
3537
3538         * mini.h: Added enumeration with simd versions.
3539
3540         * simd-intrinsics.c (emit_intrinsics): Use the new static var
3541         for detecting SSE3.
3542
3543         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
3544
3545         * mini.c (mini_init): Call mono_simd_intrinsics_init.
3546
3547 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3548
3549         * basic-simd.cs: Added tests for Vector8u and Vector16u.
3550
3551         * basic-simd.cs: Fixed test naming.
3552
3553 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3554
3555         * mini-ops.h: Added ops for packed and saturated math, shifts
3556         and packing/unpacking.
3557
3558         * cpu-x86.md: Added descriptors for the above ops.
3559
3560         * mini-x86.c: Added code to emmit the above ops.
3561
3562         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
3563
3564 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3565
3566         * aot-compiler.c (compile_method): Enable AOT for generic code.
3567
3568         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
3569
3570 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
3571
3572         * mini.c: add a workaround for a common screwup that ends up blamed
3573         to mono (other processes blocking signal delivery).
3574
3575 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3576
3577         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
3578         in the LDFLD/STFLD opcodes. Fixes #432673.
3579
3580         * iltests.il.in: Add a new test.
3581
3582 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
3583
3584         * mini-arm.c: attach the thread in unmanaged->managed transitions
3585         using delegates (bug #433148).
3586
3587 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589        * basic-simd.cs: Use new ShuffleSel constants.
3590
3591 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3592
3593         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
3594
3595         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
3596         only disable simd intrinsics if no sse2 is detected.
3597
3598         * optflags-def.h: Added sse3.
3599
3600         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
3601         is disabled.
3602
3603 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3604
3605         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
3606         when adding delegate-invoke wrappers.
3607
3608 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * Makefile.am: Reenable the simd tests.
3611
3612 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3613
3614         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
3615           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
3616           other vreg is allocated to that hreg.
3617
3618         Contributed under MIT/X11 license.
3619
3620 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
3623         yet checked in.
3624
3625 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3626
3627         * basic-simd.cs: New test suite for SIMD intrinsics.
3628
3629         * Makefile.am: Added new tests.
3630
3631 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3632
3633         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
3634
3635         * mini-ops.h: Same.
3636
3637         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
3638
3639         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
3640         using SSE2 aware opcodes.
3641
3642         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
3643         is enabled, this code path is only reachable if conversion ops are emmited after
3644         mono_method_to_ir.
3645
3646         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
3647
3648         This optimization saves 6 bytes per conversion against the old version.
3649
3650 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3651
3652         * aot-compiler.c (compile_method): Don't skip methods referencing 
3653         generic methods without a corresponding entry in token_info_hash, since
3654         encode_method_ref () can handle all generic methods now.
3655
3656         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
3657         generic context is set.
3658         
3659         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
3660         generic sharing of LDTOKEN.
3661
3662 2008-10-06  Mark Probst  <mark.probst@gmail.com>
3663
3664         * mini-amd64.h: Temporarily disabled fast virtual generic method
3665         calls because it breaks the System.Runtime.Remoting tests.
3666
3667 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
3670
3671         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
3672         so inlining actually works.
3673         (check_inline_caller_method_name_limit): Ditto.
3674
3675 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
3676
3677         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
3678         64 bit safety (from Olaf Hering and Andreas Färber).
3679
3680 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3681         
3682         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
3683         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
3684         unused virtual call support code.
3685
3686         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
3687         
3688         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
3689         which can't use aot trampolines.
3690         (decode_patch): Don't create aot trampolines for methods which can't use
3691         them.
3692
3693         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
3694         use aot trampolines.
3695
3696         * mini.h: Bump AOT image format version.
3697         
3698 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
3699
3700         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
3701         to save_token_info () since cmethod is inflated for constrained calls.
3702
3703         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
3704
3705 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3706
3707         * Makefile.am: Add build rules for ppc64.
3708         This avoids the build failing at pedump with unresolved symbols
3709         due to lack of arch_sources. Instead it will now fail earlier
3710         due to lack of cpu-ppc64.md.
3711
3712         Contributed under MIT/X11 license.
3713
3714 2008-10-04  Mark Probst  <mark.probst@gmail.com>
3715
3716         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
3717         tail calls.
3718
3719         * iltests.il.in: Add test case for tail call with many arguments.
3720
3721 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
3724         to the fast virtual generic method code until the aot case is fixed.
3725
3726 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3727
3728         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
3729
3730 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3731
3732         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
3733         thunks.
3734
3735 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3736         
3737         * simd-intrinsics.c: Forgot to add this one.
3738
3739         * mini-codegen.c: Fix macro in case SIMD is not supported.
3740
3741 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3742         
3743         This patch land initial JIT support for simd intrinsics.
3744
3745         * mini-x86.h: Added new define to make --enable_minimal work on x86.
3746
3747         * Makefile.am: Added simd-intrinsics.c
3748
3749         * simd-intrinsics.c: New file with simd instrinsic related
3750         code.
3751
3752         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
3753
3754         * cpu-x86.md: Add simd related instructions.
3755
3756         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
3757
3758         * driver.c: Added two new --regression variants.
3759
3760         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
3761
3762         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
3763
3764         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
3765         extract some complicated logic to helper functions.
3766
3767         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
3768
3769         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
3770
3771         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
3772         the specialized simplification pass.
3773
3774         * method-to-ir.c (mono_spill_global_vars): Use new macro.
3775
3776         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
3777
3778         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
3779         table.
3780
3781         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
3782         if MONO_ARCH_NEED_SIMD_BANK is defined.
3783
3784         * mini-ops.h: Added the new simd ops.
3785
3786         * mini-x86.c: Added mono_arch_xregname.
3787
3788         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
3789
3790         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
3791
3792         * mini-x86.h: Define simd related MONO_ARCH macros.
3793
3794         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
3795
3796         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
3797
3798         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
3799         MONO_CLASS_IS_SIMD to deal with simd related IR.
3800
3801         * mini.h (MonoInst): Added spill_var to the backend union.
3802
3803         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
3804
3805         * mini.h: Added forward declarations of the new simd fuctions.
3806
3807         * optflags-def.h: Added new optimization names SIMD.
3808
3809         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
3810
3811         * regalloc.h: Added support for working with 3 register banks.
3812
3813         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
3814
3815         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
3816
3817 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
3818
3819         * mini-exceptions.c: remove 64 bit related ifdef clutter.
3820
3821 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3822
3823         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
3824         instead of one on 64 bit systems.
3825
3826         * method-to-ir.c: Remove unused includes.
3827
3828 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
3831         cfg->used_int_regs, since the two are different on arm.
3832
3833 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3834
3835         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
3836         mono_method_get_vtable_index() to get the vtable index.
3837
3838 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3839
3840         * method-to-ir.c (mono_method_to_ir2): Don't create native
3841         wrappers for array methods, because they're never called (and if
3842         they were called they wouldn't work).
3843
3844 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3845
3846         * method-to-ir.c (mono_method_to_ir2): Array methods are
3847         special-cased and must not be invoked indirectly via the (M)RGCTX
3848         when generic sharing is turned on.  Fixes #431413.
3849
3850 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3851
3852         * method-to-ir.c: When generic sharing is active, call
3853         non-interface virtual generic methods via the standard trampoline.
3854
3855         * mini-trampolines.c: Handle virtual generic shared methods.
3856
3857         * mini.h, mini-x86.c, mini-x86.h: New argument for
3858         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
3859         method thunks and which is the trampoline to call if the lookup
3860         fails.  Enable the virtual generic method thunk for x86.
3861
3862         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
3863         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
3864         argument but assert that it's NULL, because these archs don't yet
3865         implement the virtual generic method thunk.  Changes in the IMT
3866         thunk data structures.
3867
3868 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3869
3870         * aot-compiler.c (emit_globals): Avoid invalid characters in
3871         the static linking symbol.
3872
3873         * objects.cs: Add a test for the range check optimization. Fix warnings.
3874
3875         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
3876         optimization from the current JIT.
3877
3878         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
3879         later in decompose_array_access_opts () to allow more optimizations.
3880
3881         * method-to-ir.c (mono_handle_soft_float): Rename this to 
3882         mono_decompose_soft_float () for consistency.
3883
3884         * mini-ops.h: Fix arguments of OP_STRLEN.
3885
3886         * method-to-ir.c (save_cast_details): Extract the cast details saving code
3887         into a separate function.
3888         (reset_cast_details): Ditto.
3889         (handle_unbox): Save cast details. Fixes #431254.
3890
3891         * method-to-ir.c: Remove some obsolete FIXMEs.
3892
3893 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3894
3895         * ir-emit.h (alloc_dreg): Write a warning before crashing.
3896
3897 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3898
3899         * mini-codegen.c: More work on macros to make them
3900         ready for multiple regbanks.
3901
3902 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3903
3904         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
3905
3906         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
3907
3908 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3909
3910         * mini-codegen.c (mono_spillvar_offset): Proper support for
3911         multiple regbanks.
3912
3913 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
3914
3915         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
3916         the stack overflow changes.
3917
3918 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3919
3920         * mini-codegen.c: Make all bank macros depend on reg_bank.
3921
3922         * mini-codegen.c (mono_local_regalloc): Make free mask
3923         initialization regbank aware.
3924
3925 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3926
3927         * mini-codegen.c (mono_local_regalloc): Extract callee
3928         mask selection to a function and make it regbank aware.
3929
3930 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3931
3932         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
3933         code to deal with many regbanks.
3934
3935 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * mini-codegen.c: More fp->regbank changes.
3938
3939 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
3940
3941         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
3942         of a hardcoded constant.
3943
3944 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
3945
3946         * method-to-ir.c (type_from_stack_type): Fix typo.
3947
3948 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
3949
3950         * mini-ia64.c (emit_move_return_value): Convert float return values to
3951         double.
3952
3953         * objects.cs: Add a new test.
3954         
3955         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
3956         VARARG methods to fix an assert later.
3957
3958         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
3959         end so it at least compiles.
3960
3961 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
3962
3963         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
3964
3965 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
3966
3967         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
3968         optimization to a new function (emit_optimized_ldloca_ir) and enable
3969         it for both ldloca and ldloca_s.
3970
3971 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
3972
3973         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
3974         gshared CASTCLASS code.
3975
3976         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
3977         amd64, where the libc stack unwinder encounters stack frames referring to
3978         native code in unmapped memory.
3979
3980         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
3981         sharing.
3982
3983         * generics.cs: Add new test.
3984
3985 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
3986
3987         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
3988         add a check that one of the ARM_FPU_ constants is defined.
3989
3990         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
3991         
3992         * mini-exceptions.c: Fix build on non-altstack platforms.
3993
3994         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
3995         sharing of vtypes.
3996
3997         * ir-emit.h: Add a comment to NEW_PCONST.
3998
3999         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4000
4001         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4002
4003         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4004         after the changes to MonoJitDomainInfo.
4005
4006 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4007
4008         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4009
4010 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4011
4012         * mini-ppc.c: Compiler warning fixes.
4013
4014 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4015
4016         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4017         for pinvokes.
4018
4019 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4020
4021         * exceptions-ppc.c, mini-ppc.h: Compile
4022         mono_arch_handle_altstack_exception() on Darwin, too.
4023
4024 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4025
4026         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4027         work on archs which don't have generic sharing implemented, only
4028         without the vtable_arg.
4029
4030 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4031
4032         * mini.c: Added comment explaining why delegate ctor icall
4033         wrappers are compiled.
4034
4035 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4036
4037         * mini.c: Don't produce trampolines to delegate ctor icall
4038         wrappers but compile them upfront.
4039
4040 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4041
4042         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4043         runtime-set function when going back to managed code. Currently this
4044         is used to set back the protection on the soft ovf pages and/or to
4045         throw the stack overflow exception that happened in unmanaged code.
4046
4047 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4048
4049         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4050         runtime-set function when going back to managed code. Currently this
4051         is used to set back the protection on the soft ovf pages and/or to
4052         throw the stack overflow exception that happened in unmanaged code.
4053
4054 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4055
4056         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4057         the support code for restoring stack protection after stack overflows
4058         that happen in unmanaged code. Don't set the exec permission on the
4059         soft overflow area.
4060
4061 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4062
4063         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4064         delegate->method_ptr is set. Fixes #428054.
4065
4066 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4067
4068         * tests.cs: Rename to ratests.cs.
4069
4070         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4071         emit_get_rgctx_... functions.
4072
4073 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4074
4075         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4076
4077 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4078
4079         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4080         before asserting that method is sharable.
4081
4082 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4083
4084         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4085         whether method needs a static RGCTX wrapper used instead of
4086         complex conditions.
4087
4088         * generic-sharing.c, mini.h: A few functions moved to
4089         metadata/generic-sharing.c.
4090
4091 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4092
4093         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4094         Generic code sharing for value types, which essentially means
4095         treating value type methods like static methods.  The RGCTX is
4096         passed in the same way.
4097
4098 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4099
4100         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4101         opcode when creating multi-dimensional arrays of open types.
4102
4103         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4104         open generic types.
4105
4106         * generics.cs: Add a test.
4107
4108         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4109
4110 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4113
4114         * mini.c (mini_method_compile): Set it when running under the debugger. 
4115
4116         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4117         vreg optimization if the flag is set.
4118
4119         * driver.c (mono_main): Add --attach= option to pass options to
4120         the attach agent.
4121
4122         * mini.c (sigquit_signal_handler): Start the attach agent.
4123
4124         * ssapre.c: Disable this to save space since it is not yet ported to
4125         linear IR.
4126
4127         * regalloc2.c: Disable this to save space.
4128
4129         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4130
4131 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4132
4133         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4134         the -v option useful again.
4135
4136 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4137
4138         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4139         --break-at-bb.
4140
4141         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4142         arrays of arrays. Fixes #428406.
4143
4144         * method-to-ir.c (mini_emit_castclass): Ditto.
4145
4146         * objects.cs: Add new test.
4147         
4148 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4149
4150         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4151         was wrong at it choked against target_type_is_incompatible for byref types.
4152
4153 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4156         places.
4157
4158 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4159
4160         * mini-exceptions.c: update a few more exceptions-related counters.
4161
4162 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4163
4164         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4165         new functions to allocate from persistent mempools.
4166
4167 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4168
4169         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4170         multiple register banks in the future.
4171
4172         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4173
4174 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4175
4176         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4177
4178         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4179
4180         * mini.h: Export type_to_eval_stack_type.
4181
4182         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4183         is only ins->klass of byref types.
4184
4185 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4186
4187         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4188         (mini_emit_memcpy2): Ditto.
4189
4190         * mini-amd64.c: Fix a warning.
4191
4192 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4193
4194         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4195         linking.
4196
4197 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4198
4199         * method-to-ir.c: Extract stloc micro-optimization to a
4200         function and apply it to all cases.
4201
4202 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4203
4204         * method-to-ir.c: Don't fail generic code sharing in cases we
4205         already support.
4206
4207 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4208
4209         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4210
4211 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4212
4213         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4214         implementation.
4215
4216 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4217
4218         * trace.c: make tracing more useful and correct, with per-thread
4219         id and indent info.
4220
4221 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4222
4223         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4224         doing a method call and the argument is an R4.
4225
4226 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4227
4228         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4229         generic methods.
4230
4231 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4232
4233         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4234
4235 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4238         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4239
4240 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4241
4242         * driver.c: Add a --agent argument (not supported yet) to load managed
4243         agent assemblies before loading the main assembly, similarly to how the
4244         Java VM handles agents.
4245
4246 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4247
4248         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4249         function to do stack layout of local variables.
4250
4251 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4252
4253         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4254         calculation.
4255
4256 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4257
4258         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4259         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4260         JIT if DISABLE_JIT is defined.
4261
4262         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4263         defined.
4264
4265 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4266
4267         * iltests.il.in: Disable the fconv test on PPC (the result is
4268         undefined according to ECMA).
4269
4270 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4271
4272         * iltests.il.in: Enable tail call tests for PPC.
4273
4274         * mini.h: Add variable for storing incoming valuetype argument
4275         addresses for tail calls.
4276
4277         * mini-ppc.c: Implement valuetype arguments and return values for
4278         tailcalls on Linux.
4279
4280 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4281
4282         * mini-ppc.c: Partially implement tail calls (struct arguments and
4283         return values not supported).
4284
4285         * method-to-ir.c: Enable tail calls on PPC.
4286
4287 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4288
4289         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4290         runtime-invoke wrappers to work around the problem of them getting
4291         assigned to a random class.
4292
4293         * aot-runtime.c (mono_aot_get_method): Ditto.
4294         
4295 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4296
4297         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4298         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4299
4300 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4301
4302         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4303         until they're implemented properly.
4304
4305         * exceptions-ppc.c: Use arch-independent exception-handling code
4306         instead of custom one.
4307
4308         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4309         for Linear IR.
4310
4311         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4312
4313         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4314         applies when __powerpc__ is defined.
4315
4316 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4317
4318         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4319         methods to their code to avoid computing the full name of wrappers and
4320         doing a lookup in a string hash table.
4321
4322 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4323
4324         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4325         we identify bblocks before method_to_ir () is ran.
4326
4327         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4328         Also avoid optimizing branches pointing to themselves.
4329
4330         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4331
4332 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4333
4334         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4335
4336 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4337
4338         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4339         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4340         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4341         'buf'.
4342
4343         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4344         jumped to the same entry in plt_jump_table.
4345
4346 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4347
4348         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4349         dynamic images.
4350
4351 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4354         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4355         #421807.
4356
4357 2008-08-29  Geoff Norton  <gnorton@novell.com>
4358
4359         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
4360         segment, and doesn't properly handle .space as .text.  Fixes
4361         AOT Mach/ARM
4362
4363 2008-08-29  Geoff Norton  <gnorton@novell.com>
4364
4365         * mini.c: Disable the mach exception handler when running on 
4366         ARM
4367
4368 2008-08-29  Geoff Norton  <gnorton@novell.com>
4369
4370         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
4371         globals on Darwin/ARM
4372
4373 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
4376         since too many things depend on it. Instead, call 
4377         mono_runtime_set_no_exec ().
4378         
4379         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
4380         the new JIT.
4381
4382         * aot-compiler.c: Add an 'asm-only' AOT option.
4383
4384         * mini.c: Avoid initializing the runtime when doing AOT compilation.
4385                 
4386         * aot-compiler.c (compile_method): Disable gshared support for now as it
4387         doesn't yet work.
4388
4389 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4390
4391         * mini-amd64.h : Fix a compiler warning.
4392
4393         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
4394           Changed to use a callback function to retrieve the unwind info.
4395           This avoids problems observed when code blocks were removed by
4396           unloading an app domain.
4397
4398         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
4399           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
4400           to work properly.
4401
4402         Contributed under MIT/X11 license.
4403
4404 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4405
4406         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
4407           case to keep the stack aligned to 8.
4408
4409         Contributed under MIT/X11 license.
4410
4411 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
4412
4413         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
4414         avoid repeated linear searches.
4415
4416 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
4419         methods it can't handle.
4420         
4421         * aot-compiler.c (add_method): Avoid adding a method twice.
4422         (add_wrappers): Add runtime invoke wrappers for all methods.
4423
4424         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
4425         function to create an aot-compatible version of this trampoline.
4426
4427         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
4428
4429 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4430
4431         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
4432
4433         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
4434         with a generic sharing failure.
4435
4436         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
4437
4438         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
4439         CEE_RETHROW. Fixes #419634.
4440
4441         * mini.c (mono_method_to_ir): Ditto.
4442
4443         * exceptions.cs: Add a new test.
4444         
4445         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
4446         to mono_type_stack_size_internal () since some callers might not pass in
4447         an rgctx.
4448
4449         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
4450         instrument_prolog. Fixes #419878.
4451
4452         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
4453         doubles in soft float mode volatile.
4454
4455 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
4458
4459         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
4460         to handle soft float correctly.
4461
4462         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
4463         the fast path.
4464
4465         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
4466
4467         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
4468         to sp, since the generics catch code requires it.
4469
4470         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
4471         copying.
4472
4473         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
4474         mono_arch_emit_imt_argument ().
4475
4476         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
4477
4478         * mini-arm.c tramp-arm.c: Generic sharing updates.
4479
4480 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4481
4482         * mini-arm.c: Fix the arm build.
4483
4484         * generic-sharing.c (mini_type_get_underlying_type): New helper function
4485         handling enums, generic instances and generic sharing.
4486         (mini_type_stack_size_full): Ditto.
4487
4488         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
4489         
4490         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
4491
4492         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
4493
4494         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
4495         trampolines.
4496
4497         * mini-arm.c: Various small generic sharing changes.
4498
4499         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
4500         this for x86.
4501         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
4502         custom code.
4503
4504         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
4505         helper function to return a generic class init trampoline.
4506
4507         * method-to-ir.c mini.c: Use it.
4508         
4509         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
4510         arch-specfic function to return a generic class init trampoline.
4511
4512         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
4513         the GENERIC_CLASS_INIT custom code.
4514
4515         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
4516         a fatal error, not a sharing failure.
4517
4518         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
4519         needed.
4520
4521         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
4522         trampoline argument from MONO_ARCH_VTABLE_REG.
4523
4524         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4525         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4526         argument, and pass the vtable in VTABLE_REG.
4527
4528         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4529         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4530         argument, and pass the vtable in VTABLE_REG.
4531         (mono_arch_create_trampoline_code_full): Remove some special casing for
4532         the rgctx fetch trampoline.
4533
4534         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
4535         Fixes #419273.
4536
4537         * iltests.il: Add a test for it.
4538
4539 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4540
4541         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
4542
4543         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
4544         no longer needed.
4545
4546         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
4547         use mono_jit_info_table_find () to avoid recursion.
4548         (mono_delegate_trampoline): Add a sync wrapper here.
4549
4550         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
4551         here.
4552
4553         * mini.c (mono_method_to_ir): Ditto.
4554         
4555         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
4556         add_sync_wrapper argument. Don't add a sync wrapper here.
4557         (mono_create_jump_trampoline): Don't add a sync wrapper here.
4558
4559         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
4560         
4561 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4562
4563         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
4564           of nonvolatile registers back from MonoContext to CONTEXT.
4565
4566         Contributed under MIT/X11 license.
4567
4568 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4569
4570         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
4571           arguments on Winx64 there are only 4 argument registers.  For this
4572           logic to work the last argument must be pulled from the stack.  
4573
4574         Contributed under MIT/X11 license.
4575
4576 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4577
4578         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4579
4580         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
4581         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
4582         encode/decode_method_ref ().
4583
4584         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
4585
4586         * aot-runtime.c (decode_patch): Ditto.  
4587
4588         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
4589         MONO_PATCH_INFO_METHOD.
4590
4591         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
4592         MonoGenericJitInfo.
4593
4594         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
4595         MonoGenericJitInfo.
4596
4597         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
4598
4599         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
4600         one from the caller.
4601
4602         * aot-runtime.c (decode_generic_inst): New function to decode and
4603         return a interned generic inst.
4604         (decode_klass_ref): Use it.
4605         (decode_method_ref): Ditto.
4606
4607         * aot-compiler.c (emit_exception_debug_info): Save 
4608         jinfo->has_generic_jit_info too.
4609
4610 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4611
4612         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
4613
4614         * iltests.il.in: Add a test for fconv_to_i.
4615
4616         * liveness.c: Disable the liveness2 pass for now to save space.
4617
4618         * regalloc2.c: Include mempool-internals.h to fix warnings.
4619
4620         * aot-compiler.c (encode_method_ref): Encode the context of generic
4621         instance methods.
4622
4623         * aot-runtime.c (decode_method_ref): Inflate generic methods using
4624         the context saved in the aot file.
4625
4626         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4627
4628         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4629
4630         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
4631         volatile so they won't be optimized away.
4632
4633 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * ssa.c:
4636         * ssa2.c:
4637         * mini.c:
4638         * regalloc2.c:
4639         * dominators.c: Remove duplicated functions that now are in
4640         mempool-internals.h.
4641
4642 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4643
4644         * aot-compiler.c: Fix warnings.
4645
4646         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
4647
4648         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
4649
4650         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
4651         as the patch type.
4652
4653         * mini.c (mono_resolve_patch_target): Ditto.
4654         
4655         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
4656         (encode_klass_ref): Add support for encoding VARs/MVARs.
4657
4658         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
4659
4660         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
4661         the handling of the got entries into a separate 'decode_got_entry' function.
4662         Add support for RGCTX_FETCH.
4663
4664         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
4665         clobbered by the trampoline code.
4666
4667         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
4668         not clobbered by the indirect calling code.
4669
4670 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4671
4672         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
4673         to fix the build.
4674
4675 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4676
4677         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
4678         signature using the compilation mempool otherwise we would leak it.
4679
4680 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4681
4682         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
4683         mono_emit_abs_call ().
4684
4685         * patch-info.h: Add GENERIC_CLASS_INIT.
4686
4687         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
4688
4689         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
4690         as their target as a near call.
4691
4692         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
4693         ABS handling code.
4694         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
4695
4696         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
4697         call to a runtime function described by a patch.
4698
4699         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
4700         mono_emit_abs_call, this has the advantage that the ABS handling code in
4701         mono_codegen () can handle them both, and can handle other stuff in the
4702         future without additional code.
4703
4704         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
4705         entry.
4706         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
4707         abs addresses.
4708
4709         * mini.h: Add missing bblock related prototypes.
4710
4711         * mini.h (MonoCompile): Remove unused reverse_inst_list and
4712         reverse_inst_list_len fields.
4713
4714         * mini.c: Refactor this file a bit by moving branch optimizations to 
4715         branch-opts.c.
4716
4717         * method-to-ir.c: Merge generic sharing changes missed earlier.
4718
4719         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
4720
4721         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
4722         shared patches. Process METHODCONST as a shared patch.
4723
4724         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
4725         as it crashes on the 2.0 mscorlib.
4726
4727         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
4728         to cause crashes.
4729         
4730         * aot-compiler.c: Use is_plt_patch () in a few additional places.
4731         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
4732         by IMT.
4733
4734         * aot-compiler.c: Reorganize the got handling code to be a bit more
4735         understandable.
4736
4737 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
4738
4739         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
4740         mono_patch_info_equals/hash, and use it to massively simplify
4741         get_plt_index ().
4742
4743         * mini.c (mono_patch_info_hash): Simplify this and add support for
4744         more patch types.
4745
4746         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
4747
4748         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
4749         handling code, since an offset is not enough to identify a trampoline.
4750
4751         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
4752
4753 2008-08-17  Mark Probst  <mark.probst@gmail.com>
4754
4755         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
4756
4757         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
4758
4759         * mini-ops.h: Argument and result types for OVF_CARRY ops.
4760
4761         * decompose.c: PPC decompositions for various ops.
4762
4763         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
4764
4765 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
4766
4767         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
4768         call the generic trampoline code using a call, instead of a jump, to
4769         remove some special casing from the generic trampoline code.
4770
4771         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
4772         (mono_codegen): Ditto.
4773
4774         * aot-compiler.c aot-runtime.c: Ditto.
4775
4776         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
4777
4778         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
4779         helper function to find the offset corresponding to a lazy fetch trampoline.
4780
4781         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
4782         when doing generic sharing.
4783
4784         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
4785         places.
4786         
4787         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
4788         mini-trampolines.c to be with the other trampoline creation functions.
4789
4790         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
4791         as it is equal to method->signature in most cases, add a 
4792         mono_emit_method_call_full variant which takes a signature and an imt
4793         argument as well.
4794
4795 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4796
4797         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
4798         to this function, since it could be computed easily from the method 
4799         argument.
4800         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
4801         more.
4802
4803         * method-to-ir.c mini.c: Remove references to 
4804         compile_generic_method_wo_context.
4805
4806         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
4807         generic method calls.
4808         
4809         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
4810         dimensional non-szarrays.
4811
4812         * mini.c (mini_init): Register mono_array_new_1.
4813
4814         * jit-icalls.c (mono_array_new_1): New jit icall.
4815
4816         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
4817         pointing to the method.
4818
4819         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
4820         method addresses belonging to METHOD_JUMP patches in the 
4821         jump_target_got_slot_hash.
4822         (mono_aot_load_method): Ditto.
4823
4824         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
4825         METHOD_JUMP patches.
4826
4827         * mini.c (mini_create_jit_domain_info): New helper function which 
4828         initializes/frees domain->runtime_info.
4829         (mini_free_jit_domain_info): Ditto.
4830         (mini_init): Install the domain hook functions with the runtime.
4831
4832         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
4833         information maintained by the JIT.
4834
4835         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
4836         insertion into jump_table_hash into mono_codegen (), also implement proper
4837         locking.
4838
4839         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
4840         tail calls, it is already done by the aot code.
4841         
4842         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
4843         mechanism on amd64.
4844
4845         * iltests.il.in: Make the jmp test a bit more complex.
4846
4847         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
4848         generic instances which doesn't have a token.
4849
4850         * aot-runtime.c (decode_method_ref): Ditto.
4851         
4852         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
4853         can handle this case now.
4854         (handle_box): Ditto.
4855
4856 2008-08-15  Geoff Norton  <gnorton@novell.com>
4857
4858         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
4859         debugging check.
4860
4861 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4862
4863         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
4864         calling generic methods.
4865
4866         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
4867
4868         * aot-runtime.c (decode_patch_info): Ditto.
4869
4870         * mini.c (mono_resolve_patch_target): Ditto.
4871         
4872         * patch-info.h: Add METHOD_RGCTX.
4873
4874         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
4875
4876 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
4879         arguments in registers.
4880
4881         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
4882         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
4883
4884         * mini.c (mini_method_compile): Abort aot compilation for generic
4885         methods if generic sharing is disabled.
4886         
4887         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
4888         an mrgctx.
4889
4890         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
4891         requiring an mrgctx.
4892
4893         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
4894         store instructions when converting a vcall to a normal call.
4895
4896         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
4897         mono_arch_find_jit_info.
4898
4899 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
4900
4901         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
4902         avoid calling mono_method_full_name () for every method even if the
4903         env var is not set.
4904         (check_inline_caller_method_name_limit): Ditto.
4905
4906 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4907
4908         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
4909         assemblies in one run.
4910
4911         * aot-compiler.c (mono_compile_assembly): Only print out a count of
4912         skipped methods if it is not 0.
4913
4914         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
4915
4916 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
4917
4918         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
4919           MONO_ARCH_HAVE_UNWIND_TABLE.
4920
4921         Contributed under MIT/X11 license.
4922
4923 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
4924
4925         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
4926           from default optimizaton list on Winx64.
4927
4928         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
4929
4930         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
4931           the LMF from the MonoJitTlsData structure.
4932
4933         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
4934
4935         Contributed under MIT/X11 license.
4936
4937 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4938
4939         * mini.c (sigsegv_signal_handler): Fix the build.
4940
4941         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
4942         assembly->aot_module.
4943
4944         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
4945         hash table. This simplifies and speeds up a lot of code, and fixes support
4946         for .netmodules.
4947
4948         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
4949         with the runtime.
4950
4951         * mini-exceptions.c: Ditto.
4952         
4953         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
4954         'native_offset' argument, since these are computed in the 
4955         mono_find_jit_info () function.
4956
4957         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
4958         is used by exceptions-ppc.c.
4959
4960         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
4961         mono_arch_find_jit_info ().
4962         
4963         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
4964         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
4965         generic code in mini-exceptions.c.
4966
4967 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
4968
4969         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
4970
4971         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
4972         
4973         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
4974         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
4975         called while holding the loader lock. Fixes #415608.
4976         (mono_aot_get_method_from_token_inner): Ditto.
4977
4978 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
4979
4980         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
4981         to reduce differences between this and the generic implementation in
4982         mini-exceptions.c.
4983         (ves_icall_get_frame_info): Ditto.
4984
4985         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
4986
4987         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
4988         longer neccesarry.
4989
4990         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
4991         mono_arch_get_call_filter () and make it non-static, for consistency with the
4992         other architectures.
4993
4994 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
4995
4996         * mini.c:
4997         * local-propagation.c:
4998         * mini-x86.c: Correct the name of arch defines.
4999
5000 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5001
5002         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5003         NO_EMULATE_LONG_SHIFT_OPS define.
5004
5005 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5006
5007         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5008         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5009
5010         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5011         MACH fixes. Merged from the 2.0 branch.
5012
5013         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5014
5015         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5016         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5017
5018         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5019
5020         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5021         mono_marshal_get_native_wrapper () signature changes.
5022
5023 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5024
5025         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5026         conversion bug under arm.
5027
5028 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5029
5030         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5031
5032         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5033         with overflow checking.
5034
5035 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5036
5037         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5038         to the genmdesc.pl file
5039
5040 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5041
5042         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5043         arg_array in the soft-float versions of the LOAD/STORE macros.
5044
5045         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5046         implementation.
5047
5048         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5049
5050 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5051
5052         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5053         a float HFA. Fixes #413621.
5054
5055 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5056
5057         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5058         frame_size to args_size. Fixes build.
5059
5060 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5061
5062         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5063         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5064
5065         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5066         the stack are not unaligned. Fixes #413247.
5067         
5068 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5069
5070         * mini.c: update jitted methods performance counters.
5071
5072 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5073
5074         * mini-exceptions.c: increase the exceptions thrown performance
5075         counter in mono_handle_exception ().
5076
5077 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5078
5079         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5080         can work with netmodules.
5081
5082 2008-07-28  Geoff Norton  <gnorton@novell.com>
5083
5084         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5085         regression tests.
5086
5087 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5088
5089         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5090         correct place.
5091
5092 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5093
5094         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5095           The float param registers and other param registers must be the 
5096           same index on Windows x64.
5097
5098         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5099           ArgValuetypeAddrInIReg argument case.  Setting the argument
5100           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5101
5102         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5103           variable computed above as the copy length for arguments of storage
5104           type ArgValuetypeAddrInIReg.
5105
5106         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5107           ArgValuetypeAddrInIReg argument case.  This case will rely on
5108           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5109
5110         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5111           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5112           jump and tail call instructoins as they do not follow the typical call behavior.
5113
5114         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5115           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5116           local variable and pass the local variable by reference to the called method.
5117
5118         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5119           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5120           of a struct is passed in a register it must be saved with the other
5121           volatile argument on the stack.
5122
5123         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5124           frame pointer the stack adjustment value must be saved to the unwind 
5125           info structure.
5126
5127         Contributed under MIT/X11 license.
5128
5129 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5130
5131         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5132         which got lost in the merge.
5133
5134 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5135
5136         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5137         build.
5138
5139         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5140         
5141         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5142         icalls, since they won't be patched.
5143
5144         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5145         different code sequence when running under valgrind to prevent some valgrind
5146         errors.
5147
5148         * iltests.il.in: Add new regression test.
5149
5150         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5151         end with a throw.
5152
5153         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5154         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5155
5156         * iltests.il.in: Add new test.
5157
5158         * aot-compiler.c: Fix some warnings.
5159
5160         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5161         Fixes #412494.
5162
5163 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5164
5165         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5166         (mini_usage_jitdeveloper): Add a missing --wapi option.
5167
5168 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5169
5170         * mini-codegen.c: Simplify the is_fp macros.
5171         (free_up_ireg): Remove, use free_up_reg instead.
5172         (free_up_reg): Fix the fp case.
5173
5174 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5175
5176         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5177         lowered earlier.
5178
5179         * exceptions-x86.c: Merge some changes which seemed to have got lost
5180         in the linear-ir merge.
5181
5182         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5183
5184         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5185         long vreg volatile even if the variable was already created.
5186
5187         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5188         volatile variables.
5189
5190 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5191
5192         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5193
5194         * mini.c (mono_jit_compile_method_inner): Add support for 
5195         MONO_EXCEPTION_BAD_IMAGE.
5196
5197         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5198         mini_method_get_context () returns NULL. Fixes #356531.
5199
5200         * mini.c (mono_method_to_ir): Ditto.
5201         
5202         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5203         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5204
5205 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5208         in the LDFTN implementation.
5209
5210 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5211
5212         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5213         code, patch calls to icalls, too, even if they're not in the
5214         shared generic code hash.  Fixes #411962.
5215
5216 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * cpu-x86.md: Increase the length of the fcall opcodes.
5219
5220         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5221         calls returning floats.
5222
5223         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5224         on NEWARR.
5225         
5226         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5227         missed earlier.
5228
5229         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5230         into the domain->method_code_hash.
5231
5232         * aot-compiler.c: Fix win32 build.
5233
5234         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5235         
5236         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5237         gshared NEWARR implementation.
5238
5239         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5240
5241         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5242         can be used outside of method_to_ir.
5243
5244         * mini.h (MonoCompile): Add arg_types field.
5245
5246         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5247         
5248         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5249         the values of the local arg_array and param_types array.
5250
5251 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5254         got accesses might only get generated later when NEWOBJ is decomposed.
5255         
5256         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5257         looking up the native code of the target method when a delegate is called
5258         for the first time.
5259
5260         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5261         optimization.
5262
5263         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5264
5265         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5266         AOT work on platforms without a working dlsym implementation.
5267
5268         * mini.h: Bump AOT image format version.
5269         
5270 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5271
5272         * mini-exceptions.c: Free a MonoType with
5273         mono_metadata_free_type() instead of g_free().
5274
5275         * aot-runtime.c: Free a MonoType.
5276
5277 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5280         optimization.
5281
5282         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5283         fp stack on x86.
5284
5285 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5286         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5287         profiler hook.
5288
5289 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5292         NEWOBJ calls on valuetypes.
5293
5294         * iltests.il.in: Add new test.
5295
5296         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5297
5298 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5299
5300         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5301         is no longer needed.
5302
5303         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5304         non register sized integer arguments.
5305         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5306         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5307         emit_memcpy2 ().
5308
5309         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5310         CEE_MONO_RETOBJ.
5311         
5312         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5313         two a binop with different sized arguments is emitted.
5314
5315         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5316         instruction in the ins==NULL case.
5317
5318 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5321
5322         * mini-x86.c: Fix osx build.
5323
5324         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5325         opcodes as well.
5326
5327         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5328         instruction for non int sized variables.
5329
5330         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5331         implementation.
5332
5333 2008-07-23  Robert Jordan  <robertj@gmx.net>
5334
5335         * method-to-ir.c: Fix MSVC build.
5336
5337 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5338
5339         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5340         a non int sized type, widen it to an int since newer versions of gcc seem to
5341         generate code which needs this.
5342
5343         * ssa2.c abcremoval2.c: Fix warnings.
5344
5345         * *: Merge the Linear IR branch.
5346
5347         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5348         the ChangeLog file there describes all the changes done over the years. 
5349         Further documentation can be found at www.mono-project.com/Linear_IL.
5350
5351 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5352
5353         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5354           The float param registers and other param registers must be the 
5355           same index on Windows x64.
5356
5357         Contributed under MIT/X11 license.
5358
5359 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
5360
5361         * mini.c: Make the previous fix GC safe.
5362
5363 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
5364
5365         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
5366
5367 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5368
5369         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
5370           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
5371           ArgValuetypeAddrInIReg instead.
5372
5373         Contributed under MIT/X11 license.
5374
5375 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
5376
5377         * mini-codegen.c (get_register_spilling): Fix a warning.
5378
5379 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
5380
5381         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
5382         for types which the initialization fails. Raises the provided exception
5383         at the right stop after cleanup.
5384
5385 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
5386
5387         * aot-compiler.c: Free most of the memory allocated during compilation.
5388
5389         * mini.c (mini_parse_debug_options): Fix a leak.
5390         
5391         * mini.c (mini_method_compile): Don't add the method to the jit info tables
5392         during aot compilation.
5393
5394 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
5395
5396         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
5397         it has too much register pressure.
5398
5399 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5400
5401         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
5402
5403 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5404
5405         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5406         on x86.
5407
5408         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5409         on amd64 similar to the way it is done on arm.
5410
5411         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5412
5413         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
5414         consistency, normalize error messages, avoid loading aot-only modules in
5415         normal mode.
5416
5417         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
5418         for consistency.
5419
5420         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
5421
5422 2008-07-11  Martin Baulig  <martin@ximian.com>
5423
5424         * debug-debugger.h
5425         (MonoDebuggerInfo): Add `interruption_request'.
5426
5427 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5428
5429         * aot-compiler.c (emit_plt): Remove some dead code.
5430
5431         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
5432
5433         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
5434         return the plt info offset belonging to a given plt entry.
5435
5436         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
5437         mono_aot_get_plt_info_offset.
5438         
5439         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
5440         similar to the amd64 code by makeing jumps through a separate jump table 
5441         instead of embedding the jump addresses into the code.
5442
5443 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
5444
5445         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
5446         method.
5447
5448 2008-07-10  Martin Baulig  <martin@ximian.com>
5449
5450         * mini.c (mini_method_compile): Disable generics sharing when
5451         running in the debugger.
5452
5453 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
5456
5457         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
5458         the local register allocator from running out of registers on x86 when 
5459         using aot.
5460
5461 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
5462
5463         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
5464         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
5465         C4146.
5466
5467         Contributed under MIT/X11 license.
5468
5469 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5470
5471         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
5472         speed up the assembler.
5473
5474 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5475
5476         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
5477         support.
5478
5479         * mini.c: Move the soft float handling macros a bit earlier, add 
5480         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
5481         place.
5482
5483         * mini.h: Add prototype for mono_arch_fixup_jinfo.
5484
5485         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
5486         read-only to help catch code allocation requests.
5487         
5488         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
5489         and turn it off when using --aot-only or when compiling with --aot=full.
5490
5491         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
5492         jump table for switches from the normal domain mempool, not the code
5493         manager.
5494
5495         * mini-trampolines.c (get_unbox_trampoline): New function to return an
5496         unbox trampoline which handles aot-only mode too.
5497
5498         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
5499         an AOTed unbox trampoline.
5500
5501         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
5502
5503 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5504
5505         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
5506         ""
5507
5508         Contributed under MIT/X11 license.
5509
5510 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5511
5512         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
5513           the unwind information for the method at the end of the allocated block.
5514           
5515         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
5516           MonoCompileArch to hold the unwind info for SEH on Winx64
5517         
5518         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
5519           frame pointer info for the method being compiled.
5520           
5521         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
5522           the call to mono_exception_from_token.
5523           
5524         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
5525           storing the method prolog information in a format that the Winx64 SEH can understand.  This
5526           information is stored a the end of the method block because it is all 32-bit offset based.
5527
5528         Contributed under MIT/X11 license.
5529
5530 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5531
5532         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
5533
5534         * wapihandles.c: Fix warnings.
5535
5536         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
5537         mode.
5538
5539         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
5540         mono_jit_compile_method in aot-only mode since that calls the type 
5541         initializer.
5542         
5543         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
5544         get_delegate_invoke_impl in aot-only mode.
5545
5546         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
5547
5548 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
5549
5550         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
5551
5552         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
5553         is on by default.
5554
5555         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
5556
5557         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
5558         init trampoline from the AOT file as well.
5559
5560         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
5561         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
5562         code.
5563
5564         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
5565         mono_init.
5566
5567         * exceptions-amd64.c: Add _full variants for the remaining exception code
5568         creation functions as well, allow emission of relocatable code, remove
5569         caching since that is now done by the caller.
5570
5571         * mini-exceptions.c: Add _full variants for the remaining exception code
5572         creation functions as well, add aot-only support.
5573
5574         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
5575         if we can determine a proper token for them.
5576         (add_wrappers): Add a few more wrappers.
5577         (emit_method_code): Remove some dead code.
5578         (emit_trampolines): Emit exception code too.
5579
5580         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
5581
5582         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
5583         mono_array_new_va which avoids varargs.
5584
5585         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
5586
5587         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
5588         mono_arch_create_specific_trampoline () in all places.
5589
5590         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
5591         a bit so it can be used for other things as well.
5592         
5593         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
5594         on demand as well.
5595
5596         * exceptions-amd64.c: Rename the caching from the exception code creation
5597         functions, it is done by the caller instead.
5598         
5599         * exceptions-amd64.c: Change the signature of the exception code creation 
5600         functions to allow the creation of relocatable code later.
5601
5602         * mini-exceptions.c: Add a set of functions to query the various 
5603         runtime-generated exception functions.
5604
5605         * mini.c mini-exceptions.c: Use the newly added functions instead of the
5606         mono_arch_.. () functions.
5607         
5608 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5609
5610         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
5611
5612         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
5613
5614         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
5615         (mini_get_vtable_trampoline): Ditto.
5616
5617         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
5618         code in the AOT case by returning the code size and a list of relocations to
5619         the caller.
5620
5621         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
5622
5623 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5624
5625         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
5626           clean the stack.
5627
5628         Contributed under MIT/X11 license.
5629
5630 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5631
5632         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
5633         so the buffer size can be computed correctly. Fixes #404735.
5634
5635         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
5636         normally as cfg->debug_info is already freed.
5637
5638 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5639
5640         * mini-amd64.c: For calls returning vtypes in registers, don't store
5641         the return address on the stack, instead allocate a separate local for
5642         it. Fixes #404729.
5643
5644 2008-07-05  Mark Probst  <mark.probst@gmail.com>
5645
5646         * mini-trampolines.c, mini.h: Add an argument to
5647         mono_create_jit_trampoline_in_domain() for turning off the adding
5648         of the sync wrapper.
5649
5650         * mini.c: Use the JIT trampoline without sync instead of
5651         ldftn_nosync in static RGCTX invoke wrappers so that the call can
5652         be patched.
5653
5654 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5655
5656         * driver.c: Turn on GSHARED optimization by default.
5657
5658 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
5659
5660         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
5661         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
5662
5663         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
5664         create a variant of the generic trampoline code callable from AOTed trampolines.
5665
5666         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
5667         trampoline code callable from AOTed trampolines.
5668
5669         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
5670
5671 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5672
5673         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
5674         pass-through manner.
5675
5676         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
5677         and don't fail sharing for them anymore.
5678
5679         * mini-exceptions.c: Handle exceptions in shared generic methods.
5680
5681         * generic-sharing.c: When checking the context of a generic
5682         method, also check its class's context.  Don't treat wrappers as
5683         sharable.
5684
5685         * mini-trampolines.c: Some code factored out to
5686         metadata/generic-sharing.c.  Handle the MRGCTX case.
5687
5688         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
5689         we must deal with the method being of another instantiation of the
5690         class.  Add static rgctx invoke wrappers to generic methods.
5691
5692 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5693
5694         * mini.c: Provide all jit infos of generic shared methods with a
5695         generic jit info.
5696
5697         * mini-exceptions.c: Handle the new situation that a generic info
5698         might be available, but not info about the this/vtable/mrgctx
5699         variable.
5700
5701 2008-07-03  Mark Probst  <mark.probst@gmail.com>
5702
5703         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
5704         generic methods.
5705
5706 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
5707
5708         * dominators.c (check_dominance_frontier): Fix a warning.
5709
5710         * mini.h: Add some missing prototypes.
5711
5712         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
5713
5714         * driver.c (mono_jit_init_version): Correct the comments since the first
5715         argument should be the name of the root domain, not a filename.
5716
5717         * aot-runtime.c (make_writable): Error out if this is called while running
5718         with --aot-only.
5719         (load_aot_module): Ditto.
5720
5721         * aot-compiler.c: Really fix the computation of method indexes.
5722
5723         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
5724         optimizations as this is no longer called frequently.
5725
5726         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
5727         method and the invoke impl code and pass it to the delegate trampoline instead of
5728         just the delegate class.
5729
5730 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * aot-compiler.c: Fixup the computation of method indexes.
5733         (add_wrappers): Create the base methods of the runtime invoke wrappers using
5734         the method builder infrastructure.
5735
5736         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
5737         has no header.
5738
5739         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
5740         mode, load the method right away instead of creating a trampoline.
5741
5742         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
5743
5744         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
5745         some checks a bit.
5746
5747 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
5748
5749         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
5750         (mono_aot_load_method): Use method_index instead of method->token.
5751
5752         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
5753         can handle icalls etc. properly.
5754
5755         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5756
5757         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
5758
5759         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
5760         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
5761         JIT_ICALL_ADDR patch type.
5762
5763         * patch-info.h: Add JIT_ICALL_ADDR patch type.
5764
5765         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
5766         request flag.
5767         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
5768
5769         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
5770
5771 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * mini.c: Use domain->jit_code_hash_lock for controlling access to
5774         domain->jit_code_hash.
5775
5776 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
5779
5780 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
5781
5782         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
5783         get_this_arg_from_call, let it compute it when needed.
5784
5785         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
5786         gsctx from code only when needed.
5787
5788         * mini-trampolines.c (get_generic_context): Rename this to 
5789         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
5790         it can be called by the arch backends.
5791
5792         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
5793
5794 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
5795
5796         * driver.c (mono_main): Add experimental --aot-only command line option.
5797
5798         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
5799         set.
5800
5801 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
5802
5803         * driver.c (DllMain): Remove mono_module_handle.
5804
5805         Contributed under MIT/X11 license.
5806
5807 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
5810         for emitting methods which are not in the source assembly. Detect and report
5811         failure of assembling+linking.
5812         
5813         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
5814
5815         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
5816
5817 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
5818
5819         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
5820
5821 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5822
5823         * mini.h: Remove some obsolete prototypes.
5824
5825         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
5826
5827 2008-06-24  Mark Probst  <mark.probst@gmail.com>
5828
5829         * mini.c (get_object_generic_inst): Variable-sized arrays are not
5830         supported by Visual Studio, so use alloca().
5831
5832 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
5835         Fixes #402585.
5836
5837 2008-06-23  Mark Probst  <mark.probst@gmail.com>
5838
5839         * mini.c: Fail sharing of a generic method if it contains an open
5840         catch clause (because we don't pass MRGCTXs yet).
5841
5842 2008-06-23  Mark Probst  <mark.probst@gmail.com>
5843
5844         * mini.c: When compiling a method with generic sharing, insert the
5845         method instantiated with an all-Object generic context into the
5846         jit info table, instead of the context of the first instantiation
5847         of the method we happen to compile.
5848
5849 2008-06-18  Martin Baulig  <martin@ximian.com>
5850
5851         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
5852         `major_version' and `minor_version'.
5853
5854 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5855
5856         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
5857         mono_method_is_generic_sharable_impl() takes an additional
5858         argument specifying whether to treat type variables as reference
5859         types.
5860
5861 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5862
5863         * mini.h: Removed obsolete prototypes.
5864
5865 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5866
5867         * mini.c: Don't fail generic sharing for initobj and sizeof - we
5868         already handle them.
5869
5870 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5871
5872         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
5873         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
5874         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
5875         tramp-x86.c: Added a MonoGenericContext* argument to
5876         mono_arch_get_unbox_trampoline() so that it can call other
5877         functions which require it.
5878
5879 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5880
5881         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
5882         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
5883         mono_arch_get_this_arg_from_call() takes a
5884         MonoGenericSharingContext* as well.
5885
5886 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5887
5888         * mini.c: Factor out code for emitting unbox into emit_unbox() and
5889         implement generic sharing of unbox.
5890
5891 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5892
5893         * mini.c: Don't compute the vtable to determine whether a field is
5894         special static, because it might not work for open types.
5895
5896 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5897
5898         * mini.c: Removed the unused token_type and token_source arguments
5899         from get_runtime_generic_context_ptr().
5900
5901 2008-06-17  Marek Habersack  <mhabersack@novell.com>
5902
5903         * mini.c (ADD_BINOP): fix the build
5904
5905 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
5906
5907         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
5908         a widening op.
5909
5910 2008-06-16  Mark Probst  <mark.probst@gmail.com>
5911
5912         * mini.h: Removed class relations enum that's not used anymore.
5913
5914 2008-06-16  Mark Probst  <mark.probst@gmail.com>
5915
5916         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
5917
5918         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
5919         the lazy fetch trampoline access code.
5920
5921 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5922
5923         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
5924
5925 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5926
5927         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
5928
5929         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
5930
5931         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
5932
5933 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
5936         intrinsics.
5937
5938         * mini-ops.h: Add MIN/MAX_UN opcodes.
5939
5940         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
5941         intrinsics.
5942
5943         * basic-math.cs: Add more min/max tests.
5944
5945         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
5946
5947 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5948
5949         * mini.c: Small fix in the prologue of emit_castclass.
5950
5951 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5952
5953         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
5954
5955         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
5956         do not work even for unsigned types. Fixes #400014.
5957
5958         * basic-math.cs: Add regression tests for unsigned Min/Max.
5959
5960 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5961
5962         * mini.c: Added additional context_used argument to several
5963         functions, which will be needed for sharing generic methods.  Use
5964         GET_RGCTX macro wherever appropriate.  Declare only one
5965         context_used in mono_method_to_ir().
5966
5967 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5968
5969         * mini.c, generic-sharing.c: Removed generic class relations.
5970
5971         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
5972         functions due to MRGCTX changes.
5973
5974 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5975
5976         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
5977         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
5978         with calculated IMT.
5979
5980         * mini.c: Generic sharing of calls via generic interfaces.
5981
5982         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
5983         generic method with non-constant MonoGenericContext*.  Instead,
5984         the context is taken out of the method itself.
5985
5986 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5987
5988         * mini.c: Generic sharing of ldvirtftn.
5989
5990 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5991
5992         * mini.c: Generic sharing of ldftn.
5993
5994 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5995
5996         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
5997
5998 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5999
6000         * mini.c: Generic sharing of the special case of ldtoken followed
6001         by a call to GetTypeFromHandle.
6002
6003 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6004
6005         * mini.c: Generic sharing of box for nullable types.
6006
6007 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6008
6009         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6010         are passed on the stack. Fixes #324807.
6011
6012 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6013
6014         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6015         for the ArgValuetypeAddrInIReg case.
6016
6017         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6018         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6019
6020         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6021         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6022         local variable and pass the local variable by reference to the called method.
6023           
6024         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6025         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6026
6027         Contributed under MIT/X11 license.
6028
6029 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6030
6031         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6032
6033         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6034         everything.
6035
6036 2008-06-10  Martin Baulig  <martin@ximian.com>
6037
6038         * debug-mini.c
6039         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6040
6041 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
6042
6043         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6044         possible error when no arguments are passed.
6045
6046         Contributed under MIT/X11 license.
6047
6048 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6049
6050         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6051         where the file name is NULL.
6052
6053 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6054
6055         * mini.c: Fix s390 build.
6056
6057 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6058
6059         * trace.c (mono_trace_parse_options): Fix warnings.
6060
6061         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6062
6063 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6064
6065         * mini.c (remove_block_if_useless): Avoid printing the method name.
6066         
6067         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6068         MONO_INST_NEW.
6069
6070         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6071         LMF. Not yet used.
6072
6073         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6074         translated code after it has been patched.
6075
6076 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6077
6078         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6079         avoid problems during code patching on SMP systems.
6080         (emit_call): Avoid adding a patch info which is already added by 
6081         emit_call_body.
6082         (mono_arch_emit_exceptions): Ditto.
6083
6084 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6087         MONO_TYPE_ISSTRUCT already checks for it.
6088
6089 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6090
6091         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6092           structs with floats on Winx64 the float registers are not used.  
6093           The integer registers are always used..
6094         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6095           only one register will be used and only if the size of the struct 
6096           is 1,2,4, or 8 bytes.
6097
6098         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6099           to work for Winx64.
6100
6101         Contributed under MIT/X11 license.
6102
6103 2008-06-05  Martin Baulig  <martin@ximian.com>
6104
6105         * debug-debugger.c (debugger_lookup_class): Also call
6106         mono_class_setup_methods() here; we're only called from RTI.
6107
6108 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6109
6110         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6111         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6112         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6113         Post-process object files and add dtrace-generated object, if necessary.
6114
6115         Contributed under MIT/X11 license.
6116
6117 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6118
6119         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6120         element class.
6121
6122         * mini.c: Generic sharing for unbox.any and castclass.
6123
6124 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6125
6126         * mini.c: Ignore tailcall prefix in shared generic code and when
6127         doing calls which require a vtable/rgctx argument.
6128
6129 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6130
6131         * mini.c: Don't free the JIT info.
6132
6133         * driver.c: Changes in the JIT info table testing code.
6134
6135 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6136
6137         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6138         interruption. Fix some warnings.
6139
6140         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6141         interruption_checkpoint.
6142
6143 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6144
6145         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6146         from embedding applications.
6147
6148 2008-06-02  William Holmes  <billholmes54@gmail.com>
6149
6150         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6151           reserving 32 bytes on the stack when making calls. 
6152
6153         Contributed under MIT/X11 license.
6154
6155 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6156
6157         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6158         the linear IL branch.
6159
6160         * driver.c: Print out more information for --version on arm.
6161
6162 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6165         bb_exit instead, since out of line bblocks might not actually be emitted
6166         out-of-line.
6167         
6168         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6169         maximum epilog size for out of line bblocks if tracing is enabled.
6170
6171         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6172
6173 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6174
6175         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6176
6177 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6178
6179         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6180         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6181         opcodes.
6182
6183 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6186         the 'value' to store is a constant.
6187
6188         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6189
6190         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6191         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6192
6193 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6194
6195         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6196         for accessing method->generic_container.
6197
6198 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6201         
6202         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6203
6204         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6205
6206         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6207         fails.
6208
6209 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6210
6211         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6212
6213         * mini.c: Handle the case when mono_class_vtable () fails.
6214
6215 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6216         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6217         the stat profiler.
6218
6219 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6220
6221         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6222         together with domain sharing.
6223
6224 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6225
6226         * mini.c: Treat callvirts to final methods like non-virtual calls
6227         when doing generic sharing, i.e. look them up in the runtime
6228         generic context.
6229
6230 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6231
6232         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6233         with computed types (for generic sharing).
6234
6235         * mini.c: Generic sharing for mkrefany and refanyval.
6236
6237 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6238
6239         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6240         possible.
6241
6242         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6243         the generic sharing code.
6244         
6245         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6246         when needed.
6247
6248 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6251
6252 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6253
6254         * driver.c: updated copyright date
6255
6256 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6257
6258         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6259         needed.
6260
6261 2008-05-19  Martin Baulig  <martin@ximian.com>
6262
6263         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6264         pointing to the new `_mono_debug_using_mono_debugger' variable.
6265
6266         * driver.c
6267         (mono_main): Check mono_debug_using_mono_debugger() rather than
6268         the `MONO_INSIDE_MDB' environment variable to check whether we're
6269         inside the debugger.
6270
6271 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6272
6273         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6274         argument.
6275
6276 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6277
6278         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6279
6280         * mini.c: Added mini_assembly_can_skip_verification. This
6281         function checks if the assembly requested to skip verification. 
6282         Fixes part of #387274.
6283
6284 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6285
6286         * mini.c (mini_get_method): Disable the check for open generic classes when
6287         using generic sharing.
6288
6289         * generics.cs: Add a test for #387034.
6290
6291         * mini.c (mini_get_method): Check whenever the method class is an open generic
6292         type, and return NULL in that case, causing a verification error. Fixes
6293         #384123.
6294
6295 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6296
6297         * driver.c (mono_main): Revert r102623. The right
6298         thing to do is to enable the verifier under verifiable
6299         unless a --security flag was passed.
6300
6301         We need this non-trivial behavior for --verify-all otherwise
6302         mcs-compileall won't be able to use it. As it needs everything to
6303         be verified under validil.
6304
6305 2008-05-06  Martin Baulig  <martin@ximian.com>
6306
6307         Fix #383749.
6308
6309         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6310         (mono_debugger_thread_cleanup): Likewise.
6311         (mono_debugger_extended_notification): Likewise.
6312
6313 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6314
6315         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6316         against both inflated and non-inflated methods. We need to check against the
6317         generic definition for cases where the instantiated method is not visible.
6318         We need to check against the inflated types for cases where the instantiation
6319         changes any super type. This fixes #382986.
6320
6321         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6322         that check for visibiliy as generic params only appears as the type subject
6323         of tokens on call opcodes. Field manipulation and ldftn must always
6324         target an exact type.
6325
6326 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6327
6328         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6329         if no related --security flag is passed.
6330
6331 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6332
6333         * mini-arch.h: Prepare support for ppc64.
6334
6335         Contributed under MIT/X11 license.
6336
6337 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6338
6339         * aot-runtime.c: Prepare support for ppc64.
6340
6341         Contributed under MIT/X11 license.
6342
6343 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6344
6345         * mini-ops.h: Prepare support for ppc64.
6346
6347         Contributed under MIT/X11 license.
6348
6349 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
6350
6351         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6352
6353         Contributed under MIT/X11 license.
6354
6355 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
6358         assemblies, since aot_name is not a full path, causing us to load MS.NET 
6359         assemblies on windows.
6360
6361 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6362
6363         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
6364         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
6365         * main.c: Use UTF-8 encoded command line instead of Windows default code
6366         page on Windows to support Unicode.
6367         * driver.c (DllMain): New function for mixed-mode assembly support.
6368         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
6369         export __stdcall functions without decoration.
6370
6371         Contributed under MIT/X11 license.
6372
6373 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6374
6375         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
6376         saving it very early.
6377
6378 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6379
6380         * mini.h, mini.c: Lots of code for accessing the old RGCTX
6381         deleted.  The only way to access the new RGCTX is via the
6382         trampline.
6383
6384         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
6385         vtable instead of the RGCTX to static methods.
6386
6387         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
6388         accessing the new RGCTX.
6389
6390         * generic-sharing.c: There is no separation between self, type
6391         arguments and other types in the RGCTX anymore.
6392
6393 2008-04-25  Jonathan Chambers <joncham@gmail.com>
6394
6395         * mini-amd64.c (add_general): Remove previous stack adjustment.
6396         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
6397         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
6398         for 32 bytes of stack space reserved for all calls.
6399         
6400         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
6401         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
6402         adjustment.
6403         
6404         Code contributed under MIT/X11 license.
6405
6406 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
6407
6408         * mini.c (mini_method_verify): Only verify non-inflated methods, check
6409         against the root definition, peeling out method and type instantiations.
6410         Cache verify success results, code that fails verification is still
6411         checked multiple times.
6412
6413 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6414
6415         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
6416
6417 2008-04-23  Jonathan Chambers <joncham@gmail.com>
6418
6419         * mini-amd64.c (add_general): Always increment stack on Win64.
6420         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
6421         on Win64.
6422         
6423         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
6424         stack based argument handling on Win64.
6425         
6426         Code contributed under MIT/X11 license.
6427
6428 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
6429
6430         * Makefile.am (version.h): Add support for git-svn.
6431
6432 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6433
6434         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
6435         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
6436         avoiding allocations and libc functions which might deadlock.
6437         
6438         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
6439         'no-gdb-backtrace' option is set.
6440
6441         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
6442
6443         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
6444
6445 2008-04-21  Martin Baulig  <martin@ximian.com>
6446
6447         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
6448         and `get_lmf_addr'; `notification_address' is no longer a pointer.
6449
6450 2008-04-21  Martin Baulig  <martin@ximian.com>
6451
6452         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
6453         `thread_vtable', `event_handler_ptr' and `event_handler'.
6454
6455 2008-04-21  Martin Baulig  <martin@ximian.com>
6456
6457         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
6458         allows delayed initialization of the `executable_code_buffer' when
6459         attaching.
6460
6461 2008-04-21  Martin Baulig  <martin@ximian.com>
6462
6463         * mini.h (mono_debugger_create_notification_function): Removed.
6464         * tramp-*.c (mono_debugger_create_notification_function): Removed.
6465
6466         * mdb-debug-info64.s
6467         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6468
6469         * mdb-debug-info32.s
6470         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6471
6472         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
6473         currently only works on x86 and x86_64, so don't create it on ppc.
6474
6475 2008-04-21  Martin Baulig  <martin@ximian.com>
6476
6477         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
6478
6479         * mini.c
6480         (mini_method_compile): In the fp elimination check, check
6481         `debug_options.mdb_optimizations' in addition to
6482         mono_debug_using_mono_debugger().       
6483
6484         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
6485         disable some JIT optimizations which are only disabled when
6486         running inside the debugger.
6487         Added `--help-debug' option to describe the debugging options.
6488         (parse_debug_options): New static function to parse the `--debug'
6489         options, so we can easily add more stuff in future.
6490
6491 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
6492
6493         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
6494         the method has no body.
6495
6496 2008-04-19  Jonathan Chambers <joncham@gmail.com>
6497
6498         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
6499         assembly is not allowed in MSVC 64-bit compiler. 
6500         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
6501         as we get floating point exceptions everywhere.
6502         
6503         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
6504         correctly align arguments for call to throw_exception.
6505         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
6506         
6507         Code contributed under MIT/X11 license.
6508
6509 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
6510
6511         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
6512
6513 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
6514
6515         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
6516
6517         * mini-amd64.c (NEW_INS): Set cil_code.
6518
6519         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
6520         from mini-amd64.c so all debugger related logic is in one place.
6521
6522         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
6523         later won't have a random ip assigned to them.
6524
6525 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
6528         the arch specific function initializes code_size.
6529         (mono_create_delegate_trampoline): Ditto.
6530
6531         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
6532         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
6533         platforms.
6534
6535         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
6536         running under the debugger.
6537
6538         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
6539         debugger.
6540
6541         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
6542         debugger. Also move the disabling of optimizations here from driver.c.
6543         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
6544         debugger.
6545
6546         * mini.h (MonoCompile): Add a few new flags.
6547
6548 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
6549
6550         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
6551         so the cil_code field of created MonoInst's is properly set.
6552         (mini_select_instructions): Ditto.
6553
6554         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
6555         (MONO_INST_NEW_CALL): Ditto.
6556
6557         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
6558         in many places so the ins->cil_code field is properly initialized.
6559
6560         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
6561         place.
6562
6563 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6564
6565         * mini.c (mini_method_compile): Print a different message when compiling a 
6566         shared method.
6567         
6568         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
6569         > 1.
6570
6571 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6572
6573         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
6574         SSE2 instructions.
6575
6576         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
6577         
6578 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * mini.c (handle_stack_args): Make this return void since its return value was
6581         never used. Also set cfg->unverifiable for invalid IL instead of calling
6582         G_BREAKPOINT ().
6583
6584 2008-04-10  Mark Probst  <mark.probst@gmail.com>
6585
6586         * mini.c: Make sure "this" is live in catch clauses with type
6587         variables in shared generic code.
6588
6589 2008-04-08  Mark Probst  <mark.probst@gmail.com>
6590
6591         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
6592         generic_class_is_reference_type() to ensure the proper behaviour
6593         when sharing generic code and the type in question is a type
6594         argument.
6595
6596 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6597
6598         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
6599         race conditions when printing thread dumps. Fixes #377738.
6600
6601 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
6602         
6603         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
6604         shows up when both MonoInst arguments can cause aliasig.
6605         There is likely no way in the current JIT to trigger this problem, but
6606         it showed up in the development of generics sharing, when in a new
6607         opcode both args of an OP_GROUP can be aliases (addresses of a local).
6608         When the generics sharing code will be committed, its tests will be
6609         valid also for this bug.
6610
6611 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6612
6613         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
6614         PATCH_INFO_METHOD.
6615
6616         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
6617         NULL.
6618
6619 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
6620
6621         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
6622         use a more detailed exception message for InvalidCastException.
6623
6624         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
6625
6626         * driver.c (mono_main): Add --debug=casts option to turn on better 
6627         InvalidCastException message details.
6628
6629         * mini.c (mini_get_debug_options): New helper function to return the address of
6630         the debug_options variable.
6631
6632         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
6633         the jit_tls TLS variable.
6634
6635         * mini.c (mono_jit_tls): New TLS variable.
6636
6637         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
6638         option is used.
6639
6640 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
6641
6642         * mini.h: Removed verifer related stuff. This code was moved to verify.c
6643
6644         * mini.c: Removed verifer related stuff, code moved to verify.c.
6645
6646         * driver.c: Using code from verify.c instead of mini.c.
6647
6648 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
6649
6650         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
6651         longer valid.
6652
6653 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
6654
6655         * mini.c (check_for_method_verify): Enabling verification of
6656         corlib if mono_verify_all is set. Bugs in the verifier preventing that
6657         have been fixed.
6658
6659 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
6660
6661         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
6662         caller saved registers as well.
6663         
6664         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
6665         saved registers as well.
6666
6667 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
6668
6669         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
6670
6671         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
6672         code.
6673
6674 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
6675
6676         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
6677         to get_call_info.
6678         (get_call_info): Take a gsctx argument instead of 'cfg'.
6679
6680 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
6683         mono_verify_all is set.
6684
6685         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
6686
6687         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
6688
6689 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6690
6691         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
6692         an exception.
6693
6694         * driver.c mini.c mini.h: Add a --verify-all development option to test the
6695         verifier and the code generated by the compiler.
6696
6697 2008-03-25  Mark Probst  <mark.probst@gmail.com>
6698
6699         * mini.c: Generic sharing of the non-nullable case of the box
6700         instruction.
6701
6702 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * inssel.brg: Fix the build.
6705
6706         * iltests.il.in: Add a test for lconv.ovf.u8.un.
6707
6708 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
6709
6710         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
6711         Array:Address. Fixes #372410.
6712
6713         * iltests.il.in: New tests for readonly prefix.
6714
6715 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
6716
6717         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
6718         mini-trampolines.c.
6719
6720         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
6721         mini-exceptions.c.
6722
6723         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
6724         
6725         * mini.c (mono_decompose_op_imm): New helper function.
6726
6727         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
6728         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
6729         return value.
6730
6731         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
6732         mono_arch_output_basic_block. Fix warnings.
6733
6734         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
6735         for now.
6736
6737 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
6740         since the extra frame is now detected automatically inside the loop.
6741
6742         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
6743         opts which are now in mono_peephole_ins ().
6744         
6745         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
6746
6747         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
6748         frames and skip duplicate managed-to-native frames. Fixes #367665.
6749
6750         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
6751         opts which are now in mono_peephole_ins ().
6752         (mono_arch_peephole_pass_2): Ditto.
6753
6754         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
6755
6756         * mini-codegen.c (mono_peephole_ins): New helper function containing the
6757         arch independent peephole optimizations.
6758
6759         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
6760         opts which are now in mono_peephole_ins ().
6761
6762         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
6763         
6764         * mini-s390.c (mono_arch_output_basic_block): Fix build.
6765
6766         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
6767         pattern.
6768
6769         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
6770         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
6771         opcode. 
6772
6773 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
6774
6775         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
6776         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
6777         return value.
6778
6779         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
6780         mono_arch_output_basic_block. Fix warnings.
6781
6782 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6783
6784         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
6785         conv.ovf.u.un.
6786
6787 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6788
6789         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
6790         conv.ovf.u.un.
6791
6792         * iltests.il: Add new tests.
6793
6794 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6795
6796         * mini.c: Removed Windows version macros.
6797
6798 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6799
6800         * generic-sharing.c: Put reflection types in the extensible part
6801         of the runtime generic context.
6802
6803         * mini.c: Generic sharing of the GetTypeHandle special case of the
6804         ldtoken instruction.
6805
6806 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6807
6808         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
6809
6810         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
6811         
6812         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
6813         consistency with the other version on the linear IR branch.
6814
6815         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
6816
6817         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
6818
6819         * iltests.il.in: Add new tests.
6820
6821 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
6824
6825         * iltests.il.in: Add new tests.
6826
6827 2008-03-19  Mark Probst  <mark.probst@gmail.com>
6828
6829         * mini.c: Two variables with the same name were declared in
6830         nesting contexts and one wasn't initialized.  Fixed.
6831
6832 2008-03-19  Mark Probst  <mark.probst@gmail.com>
6833
6834         * mini.c: Generic sharing of the initobj instruction.
6835
6836 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6837
6838         * mini.c: make the test to optimize ldtoken from typeof() more
6839         precise.
6840
6841 2008-03-18  Mark Probst  <mark.probst@gmail.com>
6842
6843         * mini.c: Generic sharing of the initobj instruction for reference
6844         types.
6845
6846 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6847
6848         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
6849         the mono_breakpoint_clean_code() code to perform bound checks.
6850
6851 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
6852
6853         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
6854         mono_arch_patch_callsite() to include the start of the managed method
6855         to be able to perform bound checks.
6856
6857 2008-03-17  Mark Probst  <mark.probst@gmail.com>
6858
6859         * mini.c: Generic sharing for the isinst instruction.
6860
6861 2008-03-17  Mark Probst  <mark.probst@gmail.com>
6862
6863         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
6864         inssel-long32-mips.brg: Added opcodes for doing indirect calls
6865         with the runtime generic context argument.
6866
6867         * mini.c: Share calls to several types of unsharable methods by
6868         putting the address of the method code in the runtime generic
6869         context and doing an indirect call.
6870
6871         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
6872         to switches.
6873
6874 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6875
6876         * generic-sharing.c: Change due to a change in the runtime genric
6877         context API.
6878
6879 2008-03-15  Martin Baulig  <martin@ximian.com>
6880
6881         * tramp-x86.c
6882         (mono_arch_nullify_class_init_trampoline): Add call to
6883         mono_breakpoint_clean_code() to make things work when running
6884         inside the debugger.
6885
6886         * tramp-amd64.c
6887         (mono_arch_nullify_class_init_trampoline): Add call to
6888         mono_breakpoint_clean_code() to make things work when running
6889         inside the debugger.
6890
6891 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6892
6893         * inssel-long.brg (reg): Fix 64 bit build.
6894
6895 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6896
6897         * mini.c, mini.h: Share static generic code by passing it an
6898         implicit argument pointing to the runtime generic context.
6899
6900         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
6901         inssel-long32-mips.brg: New opcodes for calling shared static,
6902         which need to be passed the runtime generic context.
6903
6904         * mini-amd64.c, mini-x86.c: Save the runtime generic context
6905         argument on the stack in the prologue if needed.  New function for
6906         finding the runtime generic context argument from the registers
6907         saved by the trampoline.
6908
6909         * mini-amd64.h, mini-x86.h: Specify which register to use for the
6910         runtime generic context argument.
6911
6912         * tramp-amd64.c: Also restore the register used for the runtime
6913         generic context argument.
6914
6915         * mini-trampoline.c: Resolve shared static calls by consulting the
6916         runtime generic context via the new argument.
6917
6918         * generic-sharing.c: Add an argument to sharability-checking
6919         functions that specifies whether type variables should be treated
6920         as sharable type arguments.
6921
6922         * inssel-x86.brg: Removed a superfluous, buggy rule.
6923
6924         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
6925         to switches.
6926
6927 2008-03-14  Martin Baulig  <martin@ximian.com>
6928
6929         * debug-debugger.c (main_thread_handler): Call
6930         mono_runtime_run_main() without sending any notifications.
6931
6932         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
6933
6934 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6935
6936         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
6937
6938 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6939
6940         * tramp-x86.c: Fixed register restore offsets in the trampoline
6941         code for ECX and EDX.
6942
6943 2008-03-12  Geoff Norton  <gnorton@novell.com>
6944
6945         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
6946         different ucontext_t implementations.
6947         * exceptions-arm.c: Use the above defines to get exceptions working on 
6948         iPhone (based on a patch by Luke Howard lukeh@padl.com)
6949         * mini-arm.c: Implement iPhone icache support (based on a patch by
6950         Luke Howard lukeh@padl.com)
6951
6952 2008-03-12  Mark Probst  <mark.probst@gmail.com>
6953
6954         * mini.c: Enable generic sharing of calls to non-static
6955         non-interface non-generic non-value-type methods.
6956
6957         * mini-trampolines.c: Resolve calls from shared generic code.
6958
6959 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
6960
6961         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
6962
6963         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
6964
6965 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
6966
6967         * mini.c: some fixes for the AOT compiler.
6968
6969 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6970
6971         * cpu-amd64.md: Add clob:1 to some float opcodes.
6972
6973 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
6974
6975         * mini.h: Added MiniVerifierMode enumeration.
6976
6977         * mini.c: Added mini_verifier_set_mode to control
6978         the usage of the new verifier.
6979
6980         * mini.c (mono_method): Integrated the new verifier.
6981
6982         * driver.c: Extended --security option with validil and
6983         verifiable options to activate the new verifier.
6984
6985 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6986
6987         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
6988         optimization to ctors taking 0 or 2 arguments too.
6989
6990         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
6991         a bit.
6992
6993         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
6994
6995         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
6996
6997 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6998
6999         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7000         non-aot case as well.
7001
7002         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7003
7004         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7005         changes.
7006
7007         * aot-compiler.c (encode_patch): Ditto.
7008
7009         * mini.h (G_MININT32): Fix the definition of this.
7010
7011 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7012
7013         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7014
7015         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7016
7017 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7018
7019         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7020         methods returning vtypes in registers.
7021         (mono_arch_allocate_vars): Ditto.
7022
7023         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7024
7025         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7026
7027         * generics.cs: Add a test from the linear IR branch.
7028
7029         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7030
7031         * mini.c (inline_method): Cache failed inline attempts.
7032
7033 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7034
7035         * mini.c: For shared methods of generic classes put the location
7036         of "this" into the MonoGenericJitInfo.
7037
7038         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7039         register out of a MonoContext by register number.  Add the generic
7040         sharing context as an argument to mono_arch_find_this_argument().
7041
7042         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7043         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7044         for new arch function.
7045
7046         * mini-exception.c: Handle open exception clauses in shared
7047         generic code.
7048
7049         * mini-trampolines.c: Supply additional argument to
7050         mono_arch_find_this_argument().
7051
7052 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7053
7054         * Makefile.am (regtests): Run the bench.exe tests last.
7055
7056 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7059         a bit.
7060
7061 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7062
7063         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7064         with MS.
7065
7066         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7067         
7068         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7069
7070         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7071         whose class has no cctor.
7072
7073         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7074
7075 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7078         unverified.
7079
7080 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7081
7082         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7083         to be in sync with the code on the linear IR branch.
7084
7085         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7086
7087         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7088
7089 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7090
7091         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7092
7093         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7094
7095         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7096
7097         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7098
7099         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7100         
7101         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7102         body.
7103
7104 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7105
7106         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7107         OP_LOADR4_MEMBASE emission.
7108
7109         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7110         (mono_spillvar_offset_float): Ditto.
7111
7112         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7113
7114         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7115         emission.
7116
7117         * basic-long.cs: Add regression tests for them.
7118
7119         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7120         use.
7121         (mono_arch_allocate_vars): Fix representation of single-precision float
7122         argument.
7123         (mono_arch_output_basic_block): Ditto.
7124
7125         * inssel-mips.brg: Ditto, remove duplicate items.
7126
7127         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7128         arguments of tail calls as on other platforms.
7129         (mono_arch_output_basic_block): Handle tail calls.
7130
7131         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7132         register.
7133
7134         * objects.cs (test_5_pass_static_struct): Add test for it.
7135
7136         Contributed under MIT/X11 license.
7137
7138 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7139
7140         * Makefile.am: Use gmcs for compiling the regression tests.
7141
7142         * *.2.cs *.2.il: Rename to *.cs and *.il.
7143
7144 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7145
7146         * regalloc.h: Make the vassign array smaller.
7147
7148         * mini.c (mini_method_compile): Remove an unused field in cfg.
7149
7150         * mini-codegen.c: Add a bunch of micro optimizations.
7151
7152 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7153
7154         * regalloc.h: Remove some unused fields.
7155
7156 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7157
7158         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7159
7160         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7161
7162 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7163
7164         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7165
7166         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7167         trampoline: Fetch an entry from the runtime generic context.  If
7168         it's NULL, jump to the actual trampoline to fill the runtime
7169         generic context.  Otherwise, return it.
7170
7171         * mini.c: Call the lazy fetch trampoline to get entries out of the
7172         runtime generic context.
7173
7174         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7175         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7176         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7177
7178 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7179
7180         * mini.c: Fetch data out of the extensible part of the runtime
7181         generic context instead of calling a helper function.
7182
7183         * generic-sharing.c: Some functions moved into
7184         metadata/generic-sharing.c.  Helper function for fetching other
7185         types now checks and asserts against extensible rgctx (just for
7186         debugging purposes - the helper function isn't called anymore
7187         unless for debugging).
7188
7189 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7190
7191         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7192         for tail calls up to the point that the tests in iltests.exe run. Also add a
7193         dummy CKFINITE implementation.
7194         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7195         needed for trampoline LMF frames.
7196
7197         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7198         trampoline LMF frames.
7199
7200 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7201
7202         * mini.c (inline_method): clean any pending loader error when inlining fail.
7203         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7204
7205 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7208
7209         * aot-runtime.c (decode_patch_info): Ditto.
7210
7211         * mini.c (mono_resolve_patch_target): Ditto.
7212         
7213         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7214         icall wrappers.
7215
7216         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7217         
7218         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7219         if it references an icall address.
7220
7221 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7222
7223         * cpu-s390x.md: Remove some more unused opcodes.
7224         
7225         * cpu-s390x.md: Remove some unused opcodes.
7226
7227         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7228         mono_op_imm_to_op ().
7229
7230         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7231         instead of a switch statement.
7232         
7233         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7234         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7235
7236         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7237         
7238         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7239
7240         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7241         -1.
7242
7243 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7244
7245         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7246         opened. Fixes #362607.
7247
7248         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7249
7250         * iltests.il.in: Add a test for static methods in interfaces.
7251
7252 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7253
7254         * genmdesc.c (build_table): Fix a crash on older glib versions.
7255
7256         * cpu-sparc.md: Remove some unused opcodes.
7257         
7258         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7259         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7260
7261         * cpu-amd64.md: Remove some unused opcodes.
7262
7263         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7264         like the other opcodes.
7265
7266 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7269
7270         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7271
7272         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7273         variables 'cfg' instead of 'm' for consistency.
7274
7275         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7276
7277         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7278         argument holding the vtype return address, to avoid the ambigious use of
7279         cfg->ret for this purpose.
7280
7281         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7282
7283         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7284         
7285         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7286         new mono_print_ins () function which only takes one argument.
7287
7288 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7289
7290         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7291         macro arguments.
7292
7293 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7294
7295         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7296
7297         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7298
7299         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7300         opcodes and other small changes.
7301
7302         * mini-ops.h: Add some new opcodes from the linear IR branch.
7303
7304         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7305
7306         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7307         opcodes, use the REG_MEMBASE opcodes instead.
7308         
7309         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7310         opcodes, use the REG_MEMBASE opcodes instead.
7311         
7312         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7313         linear IR branch.
7314
7315         * mini.c (mono_op_imm_to_op): New helper function.
7316
7317         * mini-ops.h: Add some opcodes from linear IR branch.
7318
7319 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7320
7321         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7322         <tsv@solvo.ru>.
7323
7324 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7327         OP_ICONV_TO_R4/R8.
7328
7329         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7330
7331 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7332
7333         * aot-compiler.c (emit_method_code): Add an assert.
7334
7335         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7336         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7337         methods.
7338
7339 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7340
7341         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7342         some load/store opcodes so they are consistent. 
7343         (mono_arch_emit_prolog): Simplify some code.
7344
7345         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7346
7347         * objects.cs: Add tests for large argument offsets on ARM.
7348
7349         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7350         stack offsets. Fixes #359651.
7351
7352         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7353
7354         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7355
7356         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
7357
7358         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
7359
7360         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
7361
7362         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
7363         rid of CEE_CONV_R_UN.
7364
7365         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
7366
7367 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
7370
7371         * mini.c (mono_normalize_opcodes): Add some more opcodes.
7372
7373         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
7374
7375         * cpu-amd64.md: Remove some unused opcodes.
7376
7377         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
7378
7379         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
7380
7381         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
7382         arch specific functions for its parts. Call the peephole pass after local
7383         regalloc so the prolog can compute a more accurate max_offset.
7384         
7385         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
7386         the corresponding OP_I/OP_L opcodes.
7387
7388         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
7389
7390         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
7391
7392 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
7395         as they are handled in mini.c.
7396
7397         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
7398         
7399         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
7400         case since it is handled in mini.c.
7401
7402         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
7403
7404         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
7405
7406         * *.c: Use the new opcodes in the IR and back end code.
7407
7408         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
7409
7410         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
7411
7412 2008-02-06  Mark Probst  <mark.probst@gmail.com>
7413
7414         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
7415         an assert because it has a race condition.
7416
7417 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
7420
7421         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
7422
7423         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
7424
7425         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
7426         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
7427
7428 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7429
7430         * cpu-amd64.md (move): Correct the maximum size of move.
7431
7432 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7433
7434         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
7435         the generic class init trampoline to return quickly if the class
7436         is already inited.
7437
7438 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
7439
7440         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
7441         issues where an 32 bit callsite cannot be patched by a 64 bit address.
7442
7443 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7444
7445         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
7446         branch.
7447
7448 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
7449
7450         * objects.cs: Add some soft-float tests.
7451
7452         * mini.c: Fix a couple more soft-float issues.
7453
7454         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
7455
7456         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
7457         avoid a REX prefix.
7458
7459 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
7462         exception happens while compiling a virtual method.
7463
7464 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
7467         
7468         * mini-sparc.c: Fix build.
7469
7470         * mini-sparc.c (get_call_info): Add support for generic sharing.
7471
7472         * mini-exceptions.c: Add a FIXME.
7473
7474 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7475
7476         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
7477         altstack handling code.
7478
7479         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
7480         
7481         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
7482
7483         * mini-s390.c: Add support for generic sharing.
7484
7485         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7486         Fix CAS on s390.
7487         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7488
7489         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
7490
7491         * mini-s390x.c: Add support for generic sharing.
7492         
7493         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7494         Fix CAS on ia64.
7495         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7496
7497         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
7498         can be used since it takes a 16 bit signed immediate.
7499
7500         * inssel-s390x.brg: Fix OP_SETRET.
7501
7502         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
7503
7504         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
7505
7506         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
7507
7508         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
7509
7510         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
7511         in one place.
7512
7513         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
7514         stuff.
7515
7516         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
7517         of the unused mono_arch_patch_delegate_trampoline stuff.
7518
7519 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
7520
7521         * basic-long.cs: Move the fp related tests to basic-float.cs.
7522
7523         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
7524
7525         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
7526
7527         * basic-calls.cs: Add a test for proper float argument passing.
7528
7529         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
7530         if the context corresponds to an exception received through a signal.
7531
7532         * exceptions.cs: Add a test for nullref handling at the start of a try
7533         clause.
7534
7535         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
7536
7537         * jit-icalls.c (mono_break): New JIT icall.
7538
7539         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
7540
7541         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
7542
7543 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * cpu-*.md: Get rid of unused opcodes.
7546
7547         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
7548
7549         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
7550         by all platforms.
7551
7552         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
7553         define.
7554
7555         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
7556         the arch independent trampoline code in mini-trampolines.c.
7557
7558         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
7559
7560         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
7561
7562         * mini-s390.h: Remove an unused define.
7563         
7564         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
7565         the arch independent trampoline code in mini-trampolines.c.
7566
7567         * mini-arm.c (mono_arch_emit_prolog): Fix build.
7568
7569 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
7570
7571         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
7572
7573         * mini-s390.c (mono_arch_emit_prolog): Fix build.
7574
7575         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
7576
7577         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
7578
7579         * cpu-amd64.md: Use smaller sizes for int opcodes.
7580
7581         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
7582
7583         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
7584         objects.cs.
7585
7586         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
7587         debugging.
7588
7589         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
7590         instead of though a pointer to save an indirection when accessing elements of
7591         the array.
7592
7593         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
7594         some typos.
7595         (NOT_IMPLEMENTED): New helper macro.
7596         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
7597         of a bb.
7598
7599         * *.c: Use the new helper macro.
7600
7601 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
7602
7603         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
7604
7605 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7606
7607         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
7608         stack slots.
7609
7610 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
7611
7612         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
7613         profiling is enabled.
7614         
7615         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
7616         the end.
7617         (mono_arch_emit_prolog): Add more first bblock optimizations.
7618
7619         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
7620         in order if possible.
7621         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
7622         bblock, since the arguments are still in their original registers.
7623
7624         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
7625
7626 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7627
7628         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
7629         as well.
7630
7631         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
7632         offset 0.
7633
7634         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
7635
7636         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
7637         process async exceptions received while in unmanaged code.
7638
7639         * mini.c (mini_init): Install a callback with the runtime which will be called
7640         when a thread receives an async exception while in unmanaged code.
7641
7642         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
7643
7644         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
7645
7646 2008-01-16  Wade Berrier  <wberrier@novell.com>
7647
7648         * cpu-g4.md:
7649         * cpu-arm.md:
7650         * cpu-s390x.md:
7651         fix build
7652
7653 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
7656         compilation with sun cc.
7657
7658         * cpu-*.md: Fix the build.
7659
7660         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
7661
7662         * mini-amd64.h: Add some comments to the MonoLMF structure.
7663
7664         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
7665         
7666         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
7667         in the LMF structure if possible. This saves two instructions in the
7668         managed->native wrappers.
7669
7670         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
7671
7672 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7673
7674         * generic-sharing.c: New type argument lookup code which uses the
7675         runtime generic context template.
7676
7677 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7678
7679         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
7680
7681         * mini-arm.c (add_general): Fix arm eabi parameter passing.
7682         (mono_arch_output_basic_block): Fix localloc implementation.
7683
7684         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
7685
7686         * mini-ia64.c (peephole_pass): Fix ia64 build.
7687
7688         * mini-amd64.c (peephole_pass): Fix a warning.
7689         
7690         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
7691         at a constant offset from sp/fp.
7692
7693         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
7694         instead of obtaining it from *lmf in the managed method case.
7695
7696 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7697
7698         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
7699
7700 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
7701
7702         * mini.h (MonoInstList): New type.
7703         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
7704         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
7705         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
7706         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
7707         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
7708         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
7709         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
7710         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
7711         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
7712         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
7713         MONO_INST_LIST_FOR_EACH_ENTRY,
7714         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
7715         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
7716         mono_inst_list_first, mono_inst_list_last,
7717         mono_inst_list_next, mono_inst_list_prev): New instruction
7718         list handling interfaces.
7719         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
7720         list head 'ins_list'.
7721         (MonoInst): Replace next pointer with list head 'node'.
7722         (MonoCallInst): Make 'out_args' a MonoInstList.
7723         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
7724         (MonoCompile): Delete reverse_inst_list and
7725         reverse_inst_list_len.
7726         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
7727         mono_arch_lowering_pass, mono_arch_local_regalloc,
7728         mono_arch_output_basic_block, mono_arch_emit_prolog):
7729         Convert to new instruction lists.
7730         (insert_after_ins): Delete.
7731         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
7732         instruction lists.
7733         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
7734         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
7735         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
7736         mono_emulate_opcode, mono_emit_load_got_addr,
7737         inline_method, mono_method_to_ir, mono_print_bb_code,
7738         print_dfn, decompose_pass, nullify_basic_block,
7739         replace_out_block_in_code, remove_block_if_useless,
7740         merge_basic_blocks, move_basic_block_to_end,
7741         try_unsigned_compare, optimize_branches, mono_print_code,
7742         mini_select_instructions, remove_critical_edges): Likewise.
7743         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
7744         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
7745         mono_arch_output_basic_block, mono_arch_emit_prolog):
7746         Likewise.
7747         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
7748         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7749         mono_arch_output_basic_block): Likewise.
7750         (inst_list_prepend, insert_after_ins): Delete.
7751         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
7752         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
7753         instruction lists.
7754         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
7755         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
7756         mono_arch_emit_prolog): Likewise.
7757         * cfold.c (mono_constant_fold): Likewise.
7758         * liveness.c (visit_bb, mono_analyze_liveness,
7759         optimize_initlocals): Likewise.
7760         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
7761         * graph.c (mono_draw_code_cfg): Likewise.
7762         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
7763         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
7764         mono_ssa_cprop): Likewise.
7765         * abcremoval (get_relations_from_previous_bb, process_block):
7766         Likewise.
7767         * local-propagation (mono_cprop_invalidate_values,
7768         mono_local_cprop_bb): Likewise.
7769         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
7770         peephole_pass, mono_arch_output_basic_block,
7771         mono_arch_emit_prolog): Likewise.
7772         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
7773         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7774         mono_arch_emit_prolog): Likewise.
7775         (insert_after_ins): Delete.
7776         * aliasing.c (print_code_with_aliasing_information,
7777         mono_build_aliasing_information, mono_aliasing_deadce):
7778         Convert to new instruction lists.
7779         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
7780         peephole_pass, NEW_INS, mono_arch_lowering_pass,
7781         mono_arch_local_regalloc, mono_arch_output_basic_block):
7782         Likewise.
7783         (insert_after_ins): Delete.
7784         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
7785         peephole_pass, mono_arch_output_basic_block): Convert to
7786         new instruction lists.
7787         * mini-codegen (InstList, inst_list_prepend,
7788         insert_after_ins): Delete.
7789         (insert_before_ins, get_register_force_spilling,
7790         get_register_spilling, free_up_ireg, free_up_reg,
7791         create_copy_ins, create_spilled_store, alloc_int_reg,
7792         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
7793         to new instruction lists.
7794         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
7795         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7796         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
7797         (insert_after_ins): Delete.
7798         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
7799         mono_arch_local_regalloc, mono_arch_output_basic_block,
7800         mono_arch_call_opcode): Convert to new instruction lists.
7801         (insert_after_ins): Delete.
7802         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
7803         peephole_pass, mono_arch_output_basic_block,
7804         mono_arch_emit_prolog): Convert to new instruction lists.
7805
7806 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7807
7808         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
7809
7810         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
7811         Fixes #353182.
7812
7813         * Makefile.am (version.h): Make this work with non-bash shells.
7814
7815 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7816
7817         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
7818
7819 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7820
7821         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
7822         the InitializeArray optimization.
7823
7824 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7825
7826         * mini.c driver.c: Don't include os/gc_wrapper.h.
7827
7828 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7829
7830         * mini.c (print_jit_stats): Print GC statistics if available.
7831
7832 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
7833
7834         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
7835
7836 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
7837
7838         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
7839
7840 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7841
7842         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
7843         
7844         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7845
7846         * driver.c (mono_main): Ditto.
7847
7848 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
7851
7852         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
7853         in the vtable can't be encoded.
7854         (compile_method): Ditto.
7855
7856 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
7859         defined.
7860
7861         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
7862         lmf->rbp.
7863
7864         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
7865         the top LMF entry belongs to the current method.
7866
7867         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
7868
7869 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7870
7871         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
7872         
7873         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
7874
7875         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
7876
7877         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
7878
7879         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
7880
7881         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
7882         implementation.
7883
7884         * basic-float.cs: Add an ulong->double cast test.
7885
7886 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
7887
7888         * mini.c (mono_method_to_ir): Fix a warning.
7889
7890 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * mini-ops.h: Add OP_SWITCH.
7893
7894         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
7895         CEE_SWITCH in back-end code, use OP_SWITCH instead.
7896
7897 2007-12-11  Geoff Norton  <gnorton@novell.com>
7898
7899         * mini-s390x.c: Minor change to the MAX() define to allow
7900         it to compile with other gcc versions.
7901
7902 2007-12-11  Geoff Norton  <gnorton@novell.com>
7903
7904         * cpu-s390x.md:
7905         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
7906
7907 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7908
7909         exceptions-arm.c (mono_arch_get_restore_context): Restore
7910         the frame pointer.
7911
7912         exceptions-arm.c (throw_exception): Save the frame pointer.
7913         This is a partial fix for #323747. Only the client side is
7914         fixed.
7915
7916 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7917
7918         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
7919         was using an unrelated variable to log the class which
7920         needed the cctor to be called. This was crashing on arm.
7921
7922 2007-12-09  Robert Jordan  <robertj@gmx.net>
7923
7924         * mini-x86.c (mono_arch_emit_epilog):
7925         Consider all kinds of 64-bit types. Fixes #323114.
7926
7927 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
7928
7929         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
7930
7931 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
7932
7933         * mini-amd64.c (peephole_pass): Add a missing instruction check.
7934
7935 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7936
7937         * mini.c: run type ctor before allocating an object, not only
7938         when running it's constructor method (fixes at least part of bug #342507).
7939
7940 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
7941         
7942         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
7943         
7944         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
7945         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
7946         function.
7947
7948         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
7949         mono_generic_class_init_trampoline () the same as it is done with the other
7950         trampolines.
7951
7952         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
7953         aot-runtime.c aot-compiler.c: Implement AOT support.    
7954
7955 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7956
7957         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
7958         build for archs which don't have the vtable trampoline defined
7959         yet.
7960
7961 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
7962
7963         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
7964
7965         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
7966
7967         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
7968
7969         * tramp-<ARCH>.c: Use the new helper function.
7970
7971 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7972
7973         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
7974         trampoline call, which takes a vtable argument.
7975
7976         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
7977         OP_TRAMPCALL_VTABLEs like other calls.
7978
7979         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
7980         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
7981         call.  Implemented a support function which fetches the vtable
7982         from a register set.
7983
7984         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
7985         Implemented a generic class init trampoline, using the
7986         OP_TRAMPCALL_VTABLE opcode.
7987
7988         * mini.c: Implemented static field access when sharing generic
7989         code.  This implies initing the class using the new
7990         OP_TRAMPCALL_VTABLE call.
7991
7992 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7993
7994         * mini.c: Don't compile methods with sharing enabled if their
7995         classes are disabled for sharing.
7996
7997 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
7998
7999         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8000         opcodes. Fixes #346563.
8001
8002         * objects.cs: Add a new test.
8003
8004         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8005
8006         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8007         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8008
8009 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8010
8011         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8012
8013 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8014
8015         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8016         code stream.
8017
8018 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8019
8020         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8021
8022         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8023         optimization in the AOT case.
8024         
8025 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8026
8027         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8028         
8029         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8030
8031         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8032
8033         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8034
8035         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8036         is created by the inlined delegate ctor.
8037
8038         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8039
8040         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8041
8042 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8043
8044         * cpu-x86.md: Fix the length of ckfinite.
8045
8046 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8047
8048         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8049         
8050         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8051         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8052
8053         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8054
8055         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8056         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8057
8058 2007-11-28  Martin Baulig  <martin@ximian.com>
8059
8060         * mini-x86.c
8061         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8062         after creating the trampoline.
8063
8064 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8065
8066         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8067
8068         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8069         the same version.
8070
8071         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8072         instead of the calling method to help AOT.
8073
8074         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8075
8076 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8077
8078         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8079         is defined.
8080
8081 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8082
8083         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8084         
8085         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8086         (encode_method_ref): No need to handle generic method definitions specially.
8087
8088         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8089
8090         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8091         decode_klass_info.
8092
8093         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8094         encode_klass_info.
8095         (compile_method): Enable generic sharing.
8096
8097 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8098
8099         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8100         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8101
8102         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8103         generic code.
8104
8105         * mini-trampolines.c: Fix a warning.
8106
8107         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8108         NEW_PCONST.
8109         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8110         (generic_class_is_reference_type): Remove unused function.
8111
8112         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8113         in the generic vtable trampoline case.
8114
8115         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8116         
8117         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8118         return an AOT method based on a vtable slot.
8119
8120         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8121
8122         * mini.c (mini_get_vtable_trampoline): Export this.
8123
8124 2007-11-22  Martin Baulig  <martin@ximian.com>
8125
8126         * debug-debugger.h
8127         (MonoDebuggerInfo): Move `debugger_version' up.
8128
8129 2007-11-22  Martin Baulig  <martin@ximian.com>
8130
8131         * mini-amd64.c
8132         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8133
8134         * mini-trampolines.c
8135         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8136         after compiling the method.
8137
8138 2007-11-20  Martin Baulig  <martin@ximian.com>
8139
8140         * debug-mini.c
8141         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8142         (mono_debugger_remove_breakpoint): Likewise.
8143         (mono_debugger_check_breakpoints): Likewise.
8144
8145         * debug-debugger.c: Implement the new breakpoint interface here.
8146
8147 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8148
8149         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8150         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8151
8152         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8153
8154 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8155
8156         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8157
8158         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8159         mini.c.
8160
8161         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8162         mini.c.
8163
8164         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8165         returning a vtype in a register.
8166
8167         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8168         here from the arch specific code.
8169
8170         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8171         mini.c.
8172
8173         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8174         (mono_arch_emit_prolog): Increment maximum prolog size.
8175
8176         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8177         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8178
8179         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8180         MonoGenericSharingContext.
8181
8182         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8183         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8184
8185 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8186
8187         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8188         which extract fields out of the runtime generic context.  Full
8189         sharing of the NEWARR opcode.
8190
8191 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8192
8193         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8194         --enable-minimal=ssa.
8195
8196 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8199         mono_marshal_get_delegate_invoke () signature change.
8200
8201 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8202
8203         * mini.c: Removed the shared context in favor of the generic
8204         sharing context.  Allocate the MonoJitInfo structure with room for
8205         the generic sharing context if it's needed.
8206
8207         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8208         domain-internals.h now.
8209
8210         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8211
8212         * generic-sharing.c: Several changes for working without a shared
8213         context and instead operating on open types instead.
8214
8215 2007-11-12  David S. Miller  <davem@davemloft.net>
8216
8217        * inssel-sparc.brg: Fix double instruction emit.
8218
8219 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8220
8221         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8222         Get/Set/Address methods.
8223         
8224         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8225         mono_marshal_get_delegate_invoke signature change.
8226
8227 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8228
8229         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8230         This can happens with dynamic methods. Fixes the other bug in #322722.
8231
8232 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8233
8234         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8235         BX call sequence.
8236
8237         * mini-arm.c (arm_patch): Implement patching of BX call
8238         sequence. Fixes one of the bugs in #322722.
8239
8240 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8241
8242        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8243        under Linux.  We only need to flush every 32-byte cache line.    
8244
8245 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8246
8247         * mini.c:
8248         move_basic_block_to_end: Add branches when needed, eventually creating
8249         a new BB.
8250         optimize_branches: added a parameter that tells if it's ok to create
8251         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8252         and avoid calling move_basic_block_to_end when it's not ok.
8253         Fixes bug 318677.
8254
8255 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8256
8257         * mini.c: Abort inlining call to InitializeArray if something
8258         looks wrong.  Let the icall handle it, which now has proper safety
8259         checks.
8260
8261 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8262
8263         * mini.c (mono_spill_call): add support for soft-float.
8264
8265         * mini.c (mono_method_to_ir): add support for soft-float
8266         to inlined functions that return float.
8267
8268         * mini.c (mono_method_to_ir): add support for soft-float
8269         to cee_stsfld opcode on float fields.
8270
8271 2007-11-05  Geoff Norton  <gnorton@novell.com>
8272
8273         * mini-x86.h: Fix the structure access for X86 Leopard.
8274
8275
8276 2007-11-05  Martin Baulig  <martin@ximian.com>
8277
8278         * mini-trampolines.c
8279         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8280         after compiling the method to notify the debugger.
8281
8282 2007-11-05  Martin Baulig  <martin@ximian.com>
8283
8284         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8285
8286 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8289         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8290
8291 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8292
8293         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8294         native-to-managed wrappers.
8295         
8296 2007-11-01  Geoff Norton  <gnorton@novell.com>
8297
8298         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8299         members.
8300
8301 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8302
8303         * mini.c, mini-x86.c: when getting back from unmanaged code
8304         to managed via a marshaled delegate we also need to set the
8305         right domain.
8306
8307 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8308
8309         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8310         for amd64.
8311
8312 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8313
8314         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8315         let the debugger or other external agents to tell the JIT when
8316         a sw breakpoint has been inserted in the code that the JIT needs
8317         to be able to inspect.
8318
8319 2007-10-31  Martin Baulig  <martin@ximian.com>
8320
8321         * debug-debugger.h
8322         (MonoDebuggerInfo): Remove `runtime_class_init'.
8323
8324 2007-10-30  Martin Baulig  <martin@ximian.com>
8325
8326         * debug-mini.h
8327         (mono_debugger_thread_created): Added `MonoThread *' argument.
8328         (mono_debugger_extended_notification): New public method.
8329         (mono_debugger_trampoline_compiled): New public method.
8330
8331         * debug-mini.c
8332         (MonoDebuggerThreadInfo): Added `thread' and
8333         `extended_notifications' fields.
8334
8335         * debug-debugger.c
8336         (debugger_executable_code_buffer): New static variable.
8337
8338         * debug-debugger.h
8339         (MonoDebuggerInfo): Added `executable_code_buffer',
8340         `executable_code_buffer_size', `breakpoint_info_area',
8341         `breakpoint_table' and `breakpoint_table_size'.
8342
8343 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8344
8345         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8346         that IP  either is an unused value or the vtable pointer. IMT 
8347         calls use vtable + offset now. Reduced by almost half the size
8348         of IMT entries.
8349
8350 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8351
8352         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8353         defines to access param registers. Replace long usage with
8354         gsize as sizeof(long) != sizeof(void*) on Win64.
8355
8356         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
8357         on Win64. Fix intrinsic, use _AddressOfReturnAddress
8358         instead of non-existant _GetAddressOfReturnAddress.
8359
8360         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
8361         param registers. Save/restore %rdi and %rsi in MonoLMF.
8362
8363         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
8364         param registers. Modify (throw_exception) signature to take 
8365         %rdi and %rsi on Win64. 
8366
8367         Code is contributed under MIT/X11 license.
8368
8369 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8370
8371         * helpers.c: unlink debugging output files.
8372
8373 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8374
8375         * mini.c: Move mono_create_ftnptr () to object.c.
8376
8377 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8378
8379         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
8380         optional. This function can now be used to disassemble code generated
8381         outside the JIT such as trampolines and IMT thunks.
8382
8383         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
8384
8385         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
8386         vtable pointer from a ldr instruction.
8387
8388         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
8389         new IMT call sequence.
8390
8391         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
8392         call sequence for interface invocations.
8393
8394         * mini-arm.c (mono_arch_emit_imt_argument): added, required
8395         for imt support. This function is empty since IMT on ARM requires no
8396         special handling on the IR side.
8397
8398         * mini-arm.c (mono_arch_find_imt_method): added, required for
8399         imt support.
8400
8401         * mini-arm.c (mono_arch_find_this_argument): added, required
8402         for imt support.
8403
8404         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
8405         a ldr instruction to load a value stored in the code stream.
8406
8407         * mini-arm.c (mono_arch_build_imt_thunk):added, required
8408         for imt support.
8409
8410
8411 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8412
8413         * mini.c (mini_init): Install the jump trampoline callback.
8414
8415 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8416
8417         * mini-trampolines.c: handle synchronized methods with the common
8418         vtable trampoline (bug #335601).
8419
8420 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
8421
8422         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
8423
8424         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
8425         64 bit platforms.
8426
8427         * mini-ia64.h mini-ia64.c: Add support for IMT.
8428
8429         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
8430         prolog. Fixes #331958.
8431
8432 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
8433
8434         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
8435
8436 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8437
8438         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
8439         trampoline.
8440
8441 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8442
8443         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
8444         trampoline.
8445
8446 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
8447
8448         * mini-x86.c, mini-x86.h: x86 support for the common vtable
8449         trampoline.
8450
8451 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8452
8453         * mini-trampolines.c: changed the magic rampoline to understand
8454         the common vtable trampoline method: the method to invoke is
8455         determined by the vtable displacement of the call.
8456
8457 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8458
8459         * mini.c, mini.h: register the common vtable trampoline if the
8460         architecture supports it.
8461
8462 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8463
8464         * cpu-amd64.md: use the correct max length for tls_get.
8465
8466 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
8469         CEE_STELEM_ANY. Fixes #333696.
8470
8471 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8472
8473         * exceptions-x86.c: provide more graceful handling of the case where
8474         we followed a bogus function pointer from managed code (bug #332866).
8475
8476 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8477
8478         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
8479         replaces the generic_shared flag and will carry more information
8480         in the future.
8481
8482         * generic-sharing.c: Added mini_type_stack_size() which allows
8483         allows open types if given a generic sharing context.
8484         mini_get_basic_type_from_generic() takes a
8485         MonoGenericSharingContext* instead of a MonoCompile* now.
8486
8487         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
8488         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
8489         mini-sparc.c, mini-x86.c: Trivial changes required by the two
8490         changes above.  Just passing arguments through to the right
8491         places.
8492
8493 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8494
8495         * mini-arm.c: unify the call emission to emit_code_seq().
8496
8497 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
8498
8499         * tramp-arm.c: reduced the trampoline size.
8500
8501 2007-10-10  Mark Probst  <mark.probst@gmail.com>
8502
8503         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
8504         variable handling out of arch-specific code.
8505
8506 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
8507
8508         * mini-arm.c: implemented fast delegate dispatch.
8509
8510 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8511
8512         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
8513         that fp elimination is turned off if the space required by locals is too
8514         big. Fixes #331958.
8515
8516 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8517
8518         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
8519         ARM to the new style trampoline.
8520
8521 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
8524
8525         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
8526
8527 2007-10-09  Martin Baulig  <martin@ximian.com>
8528
8529         * debug-debugger.h
8530         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
8531         `field_info_offset_offset'.     
8532
8533 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
8534
8535         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
8536         removed more internal usage of the r11 register and made it available
8537         to the register allocator.
8538
8539 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8540
8541         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
8542         when sharing generics and treat type variables as references.
8543
8544 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8545
8546         * mini-ppc.c: started removing the internal uses of register r11
8547         to eventually allow the register allocator to manage it as an
8548         additional available register.
8549
8550 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8551
8552         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
8553
8554 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
8555
8556         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
8557         specific trampolines as they are not performance critical as a jump
8558         target (maybe align as before only for AOT code?). This saves about
8559         200 KB of native code on x86 for monodevelop startup.
8560
8561 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8562
8563         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
8564         monodevelop startup.
8565
8566 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
8567
8568         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
8569
8570         * mini-sparc.h mini-sparc.c: Implement IMT support.
8571
8572         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
8573         its smaller and doesn't clobber sparc_g1.
8574
8575         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
8576
8577 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8578
8579         * mini-ppc.c: optimized the size of the IMT thunks a bit.
8580
8581 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
8582
8583         * mini-ppc.c: implemented fast delegate invocation.
8584
8585 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
8586
8587         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
8588
8589 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8590
8591         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
8592         code to the new style trampoline in preparation for IMT support.
8593
8594 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8595
8596         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
8597         systems already. This also reduces the specific trampiline sizes and
8598         prepares for the use of r12 as the IMT identifier register.
8599
8600 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8601
8602         * mini-mips.h: endianess fix (simplified from a patch by
8603         Thomas Kunze <thommy@tabao.de>, bug #323737).
8604
8605 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8606
8607         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
8608         to access ucontext fields and enable netbsd support
8609         (partially from Magnus Henoch <mange@freemail.hu>).
8610
8611 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8612
8613         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
8614         use the preprocessor from the CPP env var if it is set.
8615
8616 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8617
8618         * mini-trampolines.c: fixed an assertion and moved it earlier in the
8619         code, before interface_offset gets used.
8620
8621 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
8622
8623         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
8624         mono_class_setup_vtable () before accessing klass->vtable.
8625
8626 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
8627
8628         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
8629         hackish.
8630
8631 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8632
8633         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
8634         IMT slots (this saves hundreds of KB of memory in programs like
8635         IronPython and Monodevelop).
8636
8637 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8638
8639         * mini.c: print the delegate counter.
8640
8641 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
8642
8643         * mini-x86.c: make it easier to enable the debugging code for IMT
8644         slots.
8645
8646 2007-09-28  Martin Baulig  <martin@ximian.com>
8647
8648         * debug-debugger.h
8649         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
8650         `mono_method_klass_offset' and `mono_method_token_offset'.
8651
8652 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8653
8654         * mini.c: First generics sharing implementation.  Can only share
8655         in very simple cases.  If sharing doesn't work it falls back to
8656         dedicated compilation.
8657
8658         * mini.h: Flag in MonoCompile to specify whether generic
8659         compilation is shared.  Flags enum for marking which generic inst
8660         of a context is used.  Prototypes for helper functions.
8661
8662         * generic-sharing.c: Helper functions for generic method sharing.
8663
8664         * optflags-def.h: Optimization flag (gshared) for enabling generic
8665         method sharing added.
8666
8667         * Makefile.am: generic-sharing.c added.
8668
8669 2007-09-19 Daniel Nauck <dna@mono-project.de>
8670
8671         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
8672
8673 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
8674         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
8675         fixes bug 325507.
8676
8677 2007-09-19  Martin Baulig  <martin@ximian.com>
8678
8679         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
8680         mono_debug_cleanup() is now part of mono_cleanup().
8681
8682 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8683
8684         * driver.c (mono_main): Fix a warning.
8685
8686 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8687
8688         * aot-compiler.c: Optimize various parts when processing large assemblies.
8689         Fixes ##325568.
8690
8691         * mini.c (mono_patch_info_hash): Improve hash function.
8692
8693 2007-09-14  Jonathan Chambers <joncham@gmail.com>
8694
8695         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
8696         
8697         Code is contributed under MIT/X11 license.
8698
8699 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * mini.c (mini_init): Fix a leak.
8702
8703         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
8704
8705 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8706
8707         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
8708
8709 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8710
8711         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
8712
8713 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
8716         variance tests.
8717
8718         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
8719
8720         * mini.c (handle_alloc): Enable managed allocators in AOT code.
8721
8722         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
8723
8724         * aot-runtime.c (decode_patch_info): Ditto.
8725
8726 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8727
8728         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
8729         static case. Cache delegates in architecture specific code, 
8730         based on number of parameters.
8731         
8732         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
8733         in architecture specific code, based on number of parameters.
8734         
8735         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
8736         caching happen in architecture specific code now.
8737         
8738         Code is contributed under MIT/X11 license.
8739
8740 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8741
8742         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
8743         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
8744         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
8745
8746         Code is contributed under MIT/X11 license.
8747
8748 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
8749         * mini.c: (mono_thread_abort) Fixed bug #82416.
8750
8751 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8752
8753         * mini.: hook the new managed GC allocation feature into the JIT.
8754
8755 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
8756
8757         * mini.c: implementation for the new runtime tls opcode.
8758
8759 2007-09-11  Martin Baulig  <martin@ximian.com>
8760
8761         * debug-debugger.h
8762         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
8763         `mono_method_inflated_offset'.
8764
8765 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
8766
8767         * driver.c mini.h mini.c: Add a new devel command line option for injecting
8768         async exceptions into a method.
8769
8770         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
8771         purpose of testing whenever the unwinder works at every instruction.
8772
8773 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
8774
8775         * mini.c: check accessibility of method used in ldftn (fixes
8776         bug #82635).
8777
8778 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
8779
8780         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
8781
8782         * inssel.brg: Fix a warning.
8783
8784 2007-09-03  Martin Baulig  <martin@ximian.com>
8785
8786         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
8787         now takes the `main_method' as argument.
8788
8789 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
8790
8791         * cpu-sparc.md (endfilter): Add missing src1:i argument.
8792
8793 2007-08-30  Jonathan Chambers <joncham@gmail.com>
8794
8795         * driver.c: include the cil-coff.h header on Windows.
8796         
8797         Code is contributed under MIT/X11 license.
8798
8799 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
8800
8801         * mini.c, driver.c: don't include the cil-coff.h header.
8802
8803 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8804
8805         * mini.c: flag places that needs fixes fo soft-float support.
8806
8807 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
8808
8809         * mini.h, inssel-float.brg: fix soft-float constant loads on big
8810         endian systems (partially from Dean Jenkins, bug #81924).
8811
8812 2007-08-28  Mark Probst  <mark.probst@gmail.com>
8813
8814         * mini.c (check_linkdemand): Remove embedded reference object in
8815         call to LinkDemandSecurityException.
8816         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
8817         with an IntPtr instead of a reference object.
8818
8819 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
8820
8821         * mini.c (handle_initobj): Handle alignment properly.
8822
8823         * inssel.brg (mini_emit_memset): Ditto. 
8824
8825         * inssel.brg (mini_emit_memcpy): Ditto. 
8826
8827         * inssel-sparc.brg: Ditto.              
8828
8829         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
8830
8831 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
8832
8833         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
8834         exceptions raised in unmanaged code. Fixes part of #82594.
8835
8836 2007-08-24  Mark Probst  <mark.probst@gmail.com>
8837
8838         * mini.c (mono_method_to_ir), declsec.c
8839         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
8840
8841 2007-08-22  Martin Baulig  <martin@ximian.com>
8842
8843         * debug-mini.h
8844         (MonoDebuggerThreadInfo): New typedef.
8845         (mono_debugger_thread_table): New global variable.
8846         (mono_debugger_thread_created): New public function.
8847         (mono_debugger_thread_cleanup): New public function.
8848
8849         * debug-debugger.h
8850         (MonoDebuggerInfo):
8851         - removed `get_current_thread' and `lookup_assembly'.
8852         - removed `data_table'.
8853         - added `thread_table'.
8854
8855         * mini.c
8856         (mono_thread_start_cb): Call mono_debugger_thread_created().
8857         (mono_thread_attach_cb): Likewise.
8858         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
8859         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
8860         initial domain.
8861
8862         * driver.c (mono_main): Move mono_debug_init() up, before calling
8863         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
8864
8865 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8866
8867         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
8868         together when passing several arguments of type double (gives a small
8869         speedup and saves a few bytes of generated code).
8870
8871 2007-08-20  Jb Evain  <jbevain@novell.com>
8872
8873         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
8874
8875 2007-08-20  Jb Evain  <jbevain@novell.com>
8876
8877         * mini.c (mono_method_to_ir): throw MethodAccessException
8878         and FieldAccessException instead of InvalidProgramException.
8879
8880 2007-08-20  Mark Probst  <mark.probst@gmail.com>
8881
8882         * mini.c: CoreCLR security checks.
8883
8884         * mini.h: Removed MonoSecurityMode (moved to
8885         metadata/security-manager.h) and mono_security_mode global var
8886         (replaced by set/get functions in security-manager.h).
8887
8888         * driver.c: Added "core-clr-test" security mode for testing.  Used
8889         set-function for setting security mode.
8890
8891 2007-08-17  Mark Probst  <mark.probst@gmail.com>
8892
8893         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
8894         the new jit_info_table.
8895
8896         * driver.c: Test code for the new jit_info_table (enabled by the
8897         define MONO_JIT_INFO_TABLE_TEST).
8898
8899 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
8900
8901         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
8902         detection of call <REG> instruction sequence. Fixes build on freebsd.
8903
8904 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
8905
8906         * mini-exceptions.c: Fix a warning.
8907
8908 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
8909
8910         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
8911         stack overflow handling code on amd64 too.
8912
8913         * mini-exceptions.c (mono_setup_altstack): Make this use 
8914         mono_thread_get_stack_bounds ().
8915
8916         * mini-x86.h: Disable sigaltstack on solaris x86.
8917
8918 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
8919
8920         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
8921
8922 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
8923
8924         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
8925
8926 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
8927
8928         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
8929
8930         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
8931
8932 2007-08-03  Neale Ferguson <neale@sinenomine.net>
8933
8934         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
8935         due to alignment.
8936
8937 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
8938
8939         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
8940         to be emitted (bug #82281).
8941
8942 2007-08-01  Martin Baulig  <martin@ximian.com>
8943
8944         Merged the `debugger-dublin' branch.
8945
8946         * debug-debugger.h (MonoDebuggerInfo):
8947         Removed the `old_*' compatibility entries.
8948         Added `debugger_version' and `data_table'.
8949         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
8950         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
8951
8952         * debug-mini.c
8953         (MiniDebugMethodBreakpointInfo): Add `address_list'.
8954         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
8955         instead of a `gconstpointer'.
8956         (mono_debugger_insert_method_breakpoint): Return a
8957         `MonoDebugMethodAddressList *'.
8958
8959 2007-06-28  Martin Baulig  <martin@ximian.com>
8960
8961         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
8962
8963 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
8966         __builtin_frame_address () since it is broken on older gcc versions.
8967
8968 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8969
8970         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
8971         on the stack overflow handling and made the managed stack overflows
8972         catchable in most cases using soft guard pages.
8973         * exceptions-x86.c: added code to restore the protection in the soft
8974         guard pages at the end of exception handling.
8975
8976 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
8979
8980 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8981
8982         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
8983         exception handling.
8984
8985 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8986
8987         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
8988         signal handling support until it has been ported to the new mechanism.
8989         * mini.c: fixed stack overflow detection and use the new
8990         architecture code  to handle signals on the altstack.
8991
8992 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
8993
8994         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
8995         stack overflows on the alt stack.
8996
8997 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8998
8999         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9000         stack overflows on the alt stack.
9001
9002 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9003
9004         * exceptions-ppc.c: cleanup preparing for altstack support.
9005
9006 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9007
9008         * exceptions-arm.c: cleanup preparing for altstack support.
9009
9010 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9011
9012         * mini.c (print_jit_stats): Output hazard pointer stats.
9013
9014 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9015
9016         * driver.c, mini.c: Replaced security mode flags with a single
9017         enum variable.
9018
9019 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9020
9021         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9022
9023 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9024
9025         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9026         (which doesn't do anything yet) for activating Core CLR
9027         (Silverlight) security.
9028
9029 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9030
9031         * mini-codegen.c: work around a possible gcc bug on arm.
9032
9033 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9034
9035         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9036         message for platforms that don't support AOT compilation.
9037
9038 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9039
9040         * mini.h, mini.c, driver.c: temporary smcs hack.
9041
9042 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9043
9044         * mini-arm.h, mini-arm.c: arm EABI fixes.
9045
9046 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9049         case.
9050
9051         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9052         trampolines taking a method argument.
9053
9054         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9055
9056         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9057         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9058
9059         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9060         JIT compilation throws an exception. Fixes #82050.
9061
9062 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9063
9064         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9065         with the MONO_EXCEPTION_ defines.
9066
9067 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9068
9069         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9070         #82117.
9071         
9072         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9073         the cause of an assertion.
9074
9075 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9076
9077         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9078         removed.
9079
9080 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9081
9082         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9083         assert. Should fix #82103.
9084
9085 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9086
9087         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9088         here too. Fixes #82095.
9089
9090         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9091         addresses.
9092
9093         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9094
9095         * mini-amd64.h: Enable IMT for amd64.
9096         
9097         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9098
9099 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9100
9101         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9102
9103 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9104
9105         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9106         as soon as check_linkdemand sets an exception_type.
9107
9108 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9109
9110         * mini-x86.c: fixed offsets for IMT call sequence.
9111         * mini-x86.h: enable IMT again.
9112
9113 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * trace.c (mono_trace_enter_method): Decode MonoType too.
9116
9117         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9118
9119         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9120
9121         * mini-amd64.c: Add preliminary IMT implementation.
9122         
9123 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9124
9125         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9126         understand the new IMT-base interface invocation (thanks to
9127         Daniel Nauck for the report and the remote debugging session).
9128
9129 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9130
9131         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9132
9133 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9134
9135         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9136
9137 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9138
9139         * mini-trampolines.c: implement AOT IMT support.
9140         * mini-x86.h: enable IMT support for wider testing.
9141
9142 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9143
9144         * inssel.brg (emit_imt_argument): Add aot support here.
9145
9146         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9147
9148 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9149
9150         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9151         of the IMT implementation, partially from massi, with my
9152         implementation of the bsearch sequence. Disabled by default until
9153         the AOT code is implemented.
9154
9155 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9156
9157         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9158
9159         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9160
9161 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9162
9163         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9164         arch-independent IMT JIT code from Massimiliano
9165         Mantione (massi@ximian.com) with small cleanups from me.
9166
9167 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9168
9169         * Makefile.am: fix svn invocation to get the svn revision to be
9170         independent of the local language (build fix).
9171
9172 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9173
9174         * mini.c (inline_method): Reset cfg->exception_type if the
9175         inlining is aborted.  Fixes: 82049.
9176
9177 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9178
9179         * mini.c: remove assert from exception handling code when exception_ptr
9180         is not set.
9181
9182 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9183
9184         * mini.c (mono_codegen): Add an assert.
9185
9186         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9187         enter and leave code.
9188         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9189
9190 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9191
9192         * mini-ppc.c: fixed memory corruption for localloc(0)
9193         (bug #81852).
9194
9195 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9196         
9197         * mini.c: Fix warnings.
9198
9199 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9200
9201         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9202         to emit better double->int conversions.
9203
9204 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9205
9206         * mini.c: the provided Min/Max optimizations are valid for unisgned
9207         ints.
9208
9209 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9210
9211         * 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
9212
9213 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9214
9215         * mini.c (mono_running_on_valgrind): Add support for reporting the
9216         method and  its boundaries to valgrind.
9217
9218 2007-06-28  Martin Baulig  <martin@ximian.com>
9219
9220         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9221
9222 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9223
9224         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9225
9226         * generic.2.cs: Add new test case.
9227
9228 2007-06-25  Martin Baulig  <martin@ximian.com>
9229
9230         Merged the `debugger-dublin' branch.
9231
9232         * debug-mini.c
9233         (mono_debugger_insert_method_breakpoint): New public method.
9234         (mono_debugger_remove_method_breakpoint): Likewise.
9235         (mono_debugger_check_breakpoints): New static method.
9236         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9237
9238         * debug-debugger.h (MonoDebuggerInfo):
9239         Renamed (to keep backward compatibility in the vtable):
9240         `insert_breakpoint' -> `old_insert_breakpoint'.
9241         `remove_breakpoint' -> `old_remove_breakpoint'.
9242         `create_string' -> `old_create_string'.
9243         `lookup_class' -> `old_lookup_class'.
9244         `lookup_type' -> removed; changed into a dummy field.
9245         `lookup_assembly' -> `old_lookup_assembly'.
9246         Added (same functionality, but different signature):
9247         `create_string', `lookup_class', `lookup_assembly'
9248         Added new:
9249         `get_method_addr_or_bpt', `remove_method_breakpoint',
9250         `runtime_class_init'.
9251
9252         * debug-debugger.c: Merged the `debugger-dublin' branch.
9253
9254 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9255
9256         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9257         well.
9258         (peephole_pass): Likewise.
9259
9260 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9261
9262         * driver.c: hopefully make setaffinity work also for ancient
9263         versions of linux.
9264
9265 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9266
9267         * driver.c : win32 build fix.
9268
9269 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9270
9271         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9272         processor if it is set.
9273
9274 2007-06-21  Martin Baulig  <martin@ximian.com>
9275
9276         * debug-mini.h: New file.
9277
9278         * debug-mini.c
9279         (mono_debugger_insert_breakpoint_full): Moved here from
9280         ../metadata/mono-debug-debugger.c.
9281         (mono_debugger_remove_breakpoint): Likewise.
9282         (mono_debugger_breakpoint_callback): Likewise.
9283
9284 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9285
9286         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9287         changes in MonoGenericClass.
9288
9289 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9290
9291         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9292
9293 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9294
9295         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9296         removal of MonoGenericMethod.
9297
9298 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9299
9300         * mini-exceptions.c: hooks for the exception events profiling API.
9301
9302 2007-06-14  Randolph Chung  <tausq@debian.org>
9303
9304         * Makefile.ma: Add hppa target.
9305         * mini-arch.h: Include mini-hppa.h
9306         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9307         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9308         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9309
9310 2007-06-14  Randolph Chung  <tausq@debian.org>
9311
9312         * inssel.brg: Add rules for "chained" compare-branch operations so that
9313         a single compare op can affect multiple branches.  Adjust cost for
9314         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9315         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9316         cost for some rules so that they can more easily be overridden by
9317         per-arch rules (with fixes from lupus).
9318         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9319
9320 2007-06-13  Randolph Chung  <tausq@debian.org>
9321
9322         * mini-ops.h: Reorder branch ops so that they match the order of the
9323         corresponding CEE_* ops.  The code expects them this way.
9324         Add new ops for HPPA target.
9325         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9326
9327 2007-06-13  Randolph Chung  <tausq@debian.org>
9328
9329         * mini-exceptions.c: Handle cases where the stack grows towards
9330         larger addresses.
9331         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9332
9333 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9334
9335         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9336         counter.
9337         * driver.c: explain where a non-matching corlib is found.
9338
9339 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9340
9341         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9342
9343 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9344
9345         * mini-exceptions.c: Generate a method profile leave event during
9346         an exception to ensure that the profiler gets notified.
9347
9348 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9349
9350         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9351         branch.
9352
9353         * cpu-amd64.md: Add long_and/or/xor opcodes.
9354
9355 2007-06-06  Wade Berrier  <wberrier@novell.com>
9356
9357         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
9358         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
9359         length of instruction shr_imm (expected 8, got 10)
9360
9361 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
9362
9363         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
9364
9365 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9366
9367         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9368         MonoInternalHashTable again (fixed bug in the internal hash table
9369         code).
9370
9371 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9372
9373         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
9374         Have to figure out what makes it crash the SWF regression.
9375
9376 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
9377
9378         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
9379
9380 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9381
9382         * mini.c: optimize out the type check when storing null in a
9383         reference array.
9384
9385 2007-06-04  Mark Probst  <mark.probst@gmail.com>
9386
9387         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9388         MonoInternalHashTable.
9389
9390 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9391
9392         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
9393         signed integer methods.
9394
9395 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9396
9397         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
9398         permanently since the current approach doesn't work.
9399
9400 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9401
9402         * inssel.brg (stmt): Only call delegate->invoke_impl if 
9403         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
9404
9405 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9406
9407         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
9408         the sreg2==rdx case.
9409         
9410         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
9411         account if it contains a rex prefix.
9412         (peephole_pass): Handle OP_FMOVE as well.
9413
9414 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9415
9416         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
9417         as it causes regressions.
9418
9419 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
9420
9421         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
9422         static case as well.
9423
9424         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
9425
9426         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9427         (mono_arch_get_this_arg_from_call): Ditto.
9428
9429         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
9430
9431         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9432         invoke_impl field.
9433
9434         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9435         (mono_arch_get_this_arg_from_call): Ditto.
9436
9437         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
9438         
9439         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
9440         try to create optimized invoke code and use that for further invocations. 
9441         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
9442
9443         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
9444
9445 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
9446
9447         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
9448         sealed classes or methods.
9449         *devirtualization.cs: tests for the new optimization
9450
9451 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
9452
9453         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
9454         by the update_volatile () function.
9455
9456 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
9457
9458         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
9459         require it.
9460
9461         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
9462
9463 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
9464
9465         * mini.c: Add configure checks for header files.
9466         * mini-x86.c: Add configure checks for header files.
9467         * trace.c: Add configure checks for header files.
9468         * aot-runtime.c: Add configure checks for header files.
9469         * aot-compiler.c: Add configure checks for header files.
9470         * driver.c: Add configure checks for header files.
9471         * mini-codegen.c: Add configure checks for header files.
9472         
9473         Code is contributed under MIT/X11 license.
9474
9475 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9476
9477         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
9478         icompare_imm -128 + op_iclt. Fixes #81703.
9479
9480 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
9481
9482         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
9483
9484 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9485
9486         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
9487         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
9488         so that all isinst checks now use "interface_bitmap".
9489
9490 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
9491
9492         * cpu-amd64.md (jmp): Fix a warning.
9493
9494         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
9495
9496         * basic.cs: Add new regression test.
9497
9498         * basic.cs: Remove test which is now in basic-long.cs.
9499
9500         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
9501
9502         * basic-long.cs: Add new test.
9503         
9504 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
9505
9506         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
9507
9508 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
9509
9510         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
9511
9512         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
9513         places.
9514         
9515         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
9516         throwing code a bit.
9517
9518         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
9519         the exception throwing code a bit.
9520
9521         * mini-x86.c (get_call_info): Allocate result from a mempool.
9522
9523 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
9524
9525         * aot-compiler.c (find_typespec_for_class): Fix the assert.
9526
9527         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
9528
9529         * mini.h (MonoCompile): Add 'token_info_hash' field.
9530
9531         * mini.c: Save token->method associations during compilation so the AOT 
9532         compiler can use it.
9533         
9534         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
9535         which reference generic classes and methods.
9536
9537 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
9538
9539         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
9540
9541         * aot-compiler.c (compile_method): Fix a typo in a comment.
9542
9543         * aot-runtime.c (decode_cached_class_info): Skip generic types.
9544
9545         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
9546         everything generic.
9547
9548         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
9549
9550 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
9551
9552         * mini.h (MonoCompile): Add 'args' field.
9553
9554         * mini.c (mono_compile_create_vars): Store variables representing the arguments
9555         into cfg->args.
9556
9557         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
9558
9559 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * mini.c (mono_compile_get_interface_var): Remove this unused function.
9562
9563         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
9564
9565         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
9566         opcodes for some opcodes.
9567
9568         * mini.h *.brg *.c: Use the new opcodes.
9569
9570 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9571
9572         * mini.h: Bumped aot revision.
9573
9574         * inssel.brg: modified code generation of type checks for interfaces
9575         to use the new "MonoClass.interface_bitmap" instead of the old
9576         "MonoClass.interface_offsets".
9577
9578 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
9579
9580         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
9581
9582 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
9583
9584         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
9585         64 bit platforms.
9586
9587 2007-04-27  Neale Ferguson <neale@sinenomine.net>
9588
9589         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
9590
9591 2007-04-27  Wade Berrier  <wberrier@novell.com>
9592
9593         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
9594         mini.h) to fix build.
9595
9596 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
9597
9598         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
9599         
9600         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
9601         causes the corlib unit tests to fail.
9602
9603 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
9604
9605         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
9606
9607         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
9608
9609         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
9610         opcodes to the comparison relations.
9611
9612         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
9613         opcodes to their types.
9614         
9615         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
9616
9617         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
9618         it in cfg->arch.cinfo.
9619
9620         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
9621
9622         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
9623         cfg->cil_offset_to_bb.
9624
9625 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
9626
9627         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
9628         created becase of initlocals.
9629
9630 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
9631
9632         * mini-alpha.c cpu-alpha.md: More alpha port work from 
9633         Sergey Tikhonov <tsv@solvo.ru>.
9634
9635 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
9636
9637         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
9638
9639 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
9640
9641         * cpu-s390.md (break): Correct the length of break instruction.
9642
9643 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9644
9645         * mini.c: fix a couple of soft-float issues and comments.
9646
9647 2007-04-15  Miguel de Icaza  <miguel@novell.com>
9648
9649         * trace.c (is_filenamechar): - is also a filename char.
9650
9651 2007-04-15  Neale Ferguson <neale@sinenomine.net>
9652
9653         * mini-s390.c: Correct checking for enum type in return value processing.
9654
9655 2007-04-14  Raja R Harinath  <rharinath@novell.com>
9656
9657         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
9658         (version.h): Makefile is in the build directory.
9659
9660 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
9661
9662         * mini-amd64.h: fix for assertion failure on Solaris/amd64
9663
9664 2007-04-11  Martin Baulig  <martin@ximian.com>
9665
9666         * mini.c (can_access_member): Fix handling of generic classes;
9667         fixes #81259.
9668
9669 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
9670
9671         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
9672
9673 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
9674
9675         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
9676
9677 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
9678
9679         * mini-codegen.c: make sure the right spill amount is
9680         used for fp or integer registers (fixes the float_sub_spill() on ppc).
9681
9682 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
9683
9684         * mini-ppc.c: fixes for the fp_branch_nan test.
9685
9686 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
9687
9688         * basic.cs: Comment out new test which still fails on ia64.
9689
9690 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9691
9692         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
9693
9694 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9695
9696         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
9697
9698 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
9699
9700         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
9701         on 64 bit machines. Fixes part of #80738.
9702
9703         * basic.cs: Add regression test.
9704
9705 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
9706
9707         * inssel.brg basic.cs: Revert previous change to fix build.
9708
9709         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
9710         platforms.
9711         
9712         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
9713
9714         * basic.cs: Add new regression test.
9715
9716 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
9717
9718         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
9719         many arguments.
9720
9721 2007-03-16  Neale Ferguson <neale@sinenomine.net>
9722
9723         * cpu-s390x.md: Correct length of break instruction.
9724
9725 2007-03-16  Neale Ferguson <neale@sinenomine.net>
9726
9727         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
9728         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
9729
9730 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
9731
9732         * *.c: Begin WIN64 port.
9733         * mini.c:  Use correct register in profiler.
9734         * mini-amd64.c: No inline assembly on Win64.
9735         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
9736         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
9737         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
9738         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
9739         mono_arch_ip_from_context for Win64.
9740         
9741         Contributed under MIT/X11 license.
9742
9743 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
9744
9745         * exceptions-amd64.c (seh_handler): Ditto.
9746
9747         * exceptions-x86.c (seh_handler): Fix a memory leak.
9748
9749 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
9750
9751         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
9752         mini-s390x.c: fixed peephole optimizations to deal
9753         correctly with 1 and 2 byte reload avoidance.
9754
9755 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
9756
9757         * cpu-s390.md, cpu-s390x.md: update localloc length.
9758
9759 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
9760
9761         * cpu-g4.md: added missing descriptions.
9762
9763 2007-03-14  Miguel de Icaza  <miguel@novell.com>
9764
9765         *  Makefile.am: Add support so the tail tests are not executed on
9766         PowerPC as that is a known limitation of the PowerPC port.
9767
9768 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
9769
9770         * runmdesc.bat:  Move to msvc directory.
9771         
9772 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
9773
9774         * runmdesc.bat:  Run executable that was produced by the current
9775         target and sent via an argument.
9776         
9777 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
9778
9779         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
9780         #81102.
9781
9782         * generics.2.cs: Add regression test.
9783
9784 2007-03-09  Wade berrier  <wberrier@novell.com>
9785
9786         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
9787
9788 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
9789
9790         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
9791         AOT code depends on this.
9792
9793 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
9794
9795         * mini.c: more precise tracking of types in the eval stack
9796         (part of fix for bug #81044).
9797
9798 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
9799
9800         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
9801
9802         * aot-compiler.c (encode_patch): Remove an obsolete comment.
9803
9804 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
9805
9806         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
9807
9808         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
9809
9810 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
9811
9812         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
9813         a pointer on 64 bit systems. Fixes #80190.
9814
9815         * iltests.il: Add new regression test.
9816
9817 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9818
9819         * mini.c: inline a constant for Environment.IsRunningOnWindows.
9820
9821 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
9822
9823         * trace.c: Remove an erroneous alignemnt check when tracing.
9824           Fixes --trace on OSX86.
9825
9826 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
9827
9828         * mini-$(arch).h: initialize SP in context for all the archs.
9829
9830 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
9831
9832         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
9833         regressions in the thread tests.
9834
9835 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
9836
9837         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
9838         - fixed implementation of LOCALLOC opcode
9839         - implemented non-un compare for floats
9840         - code cleanup
9841         - implementation of FDIV and CKFINITE opcodes
9842         - fixes for latest mono updates
9843         - additional arch opcodes
9844
9845 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
9846
9847         * Makefile.am: simplify and merge rules for cross-compilation.
9848
9849 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
9850
9851         * local-propagation.c: Actually *apply* the fix for bug 80591...
9852
9853 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
9854
9855         * mini-exceptions.c: backuot part of the last change
9856         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
9857
9858 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
9859         * inssel.brg: Fix bug 59286.
9860
9861
9862 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
9863
9864         * mini-exceptions.c: patch from Zoltan to correctly check for
9865         stack boundaries (using the stack register, not the frame register),
9866         fixes bugs #80724, #79717.
9867
9868 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
9869
9870         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
9871         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
9872
9873         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
9874         presence of frame pointer elimination.
9875
9876 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
9877         
9878         * mini-x86.h: NetBSD UCONTEX_REG defines.
9879
9880 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
9881
9882         * inssel-amd64.brg: Fix amd64 build.
9883
9884 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
9885
9886         * mini.h: remove extern to workaround what looks likes gcc bug 26905
9887         on amd64.
9888
9889 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
9890
9891         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
9892         ends.
9893
9894         * mini-<ARCH>.c: Use mono_is_regsize_var ().
9895
9896 2007-01-30 Mark Mason <mason@broadcom.com>
9897
9898            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
9899            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
9900            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
9901            beginning support for CEE_JMP [not quite working yet]
9902            * tramp-mips.c: LMF handling now works
9903         
9904 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
9905
9906         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
9907
9908         * mini.h (NULLIFY_INS): New macro.
9909
9910 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9911
9912         * mini.c: statistical profiler fix for windows, patch
9913         from Tor Lillqvist (tml@novell.com).
9914
9915 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
9916         * local-propagation.c: Fix bug 80591.
9917
9918 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
9919
9920         * Makefile.am: put back the --export-dynamic option as with
9921         the previous gmodule flags (thanks to Robert Jordan).
9922
9923 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
9926
9927         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
9928         simplify and speed up the local register allocator. Also rename some fields
9929         like iassign->vassign.
9930         
9931         * regalloc.c: Remove some functions which are no longer used since their
9932         inlined version is in mini-codegen.c.
9933         
9934         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
9935
9936         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
9937
9938 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
9941         narrowing. Fixes #80622.
9942
9943         * iltests.il: Add new regresssion test. 
9944
9945 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
9946
9947         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
9948         debug-debugger.c, debug-debugger.h: warning fixes.
9949         * driver.c: updated copyright year and made it fit in one line.
9950
9951 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
9952
9953         * aot-runtime.c: updated to use mono-dl instead of gmodule.
9954
9955 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
9956
9957         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
9958
9959         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
9960
9961         * iltests.il: Add new test for bug #80507.
9962
9963 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9964
9965         * mini-arm.h: use soft-float also on vfp for now.
9966
9967 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
9968
9969         * mini.c: fix some more soft-float issues.
9970
9971 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
9972
9973         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
9974
9975 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
9976         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
9977         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
9978         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
9979
9980 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
9981
9982         * mini-arm.c: typo fix.
9983
9984 2007-01-23  Neale Ferguson <neale@sinenomine.net>
9985
9986         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
9987
9988 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
9991         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
9992
9993         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
9994
9995         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
9996
9997         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
9998         
9999         * inssel.brg: Fix a warning.
10000
10001         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10002
10003         * abcremoval.c ssa.c ssapre.c: Update after this change.
10004         
10005         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10006
10007         * dominators.c (df_set): Use mono_bitset_union_fast.    
10008
10009 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10010
10011         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10012         mini-codegen.c: reduce relocations and memory usage for the cpu
10013         description.
10014
10015 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10016
10017         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10018
10019         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10020         to reduce their size.
10021
10022 2007-01-19 Mark Mason <mason@broadcom.com>
10023
10024         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10025         * mini-mips.c: more configuration macros, support long conditional branches, additional
10026         asserts, fix epilog instrumentation.
10027         * mini-mips.h: use standard stack walk
10028         * cpu-mips.md: increase size of div, rem and conditional branches
10029         
10030 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10031
10032         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10033         to cpu spec data.
10034
10035 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10036
10037         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10038         (compile_method): Ditto.
10039
10040         * aot-runtime.c (decode_klass_info): Ditto.
10041
10042         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10043         needed by the code generated by inssel.brg. Also fix a warning.
10044
10045 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10046
10047         * mini.c: deal with enums that become genericinsts by
10048         being nested in a generic class (bug #79956).
10049
10050 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10051
10052         * mini.c: match the generic definition to check for
10053         private access with generic types (bug #78431).
10054
10055 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10056
10057         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10058         to make life easier for people cross-compiling that insist on not
10059         using scratchbox.
10060
10061 2007-01-17 Mark Mason <mason@broadcom.com>
10062
10063         * inssel-long.brg: patch to deal with mips missing flags
10064         * inssel-long32-mips.brg: implement overflow checks
10065         * insset-mips.brg: implement overflow checks
10066         * mini-mips.h: implement conditional exception handling
10067         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10068           Remove unused code, minor cleanups.
10069         * exceptions-mips.c: minor cleanups
10070         * mini-ops.h: add mips conditional exception ops
10071         * cpu-mips.md: add mips conditional exception ops
10072
10073         
10074 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10075
10076         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10077         to deal with mips missing of flags.
10078
10079 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10080
10081         * exceptions-ppc.c: execute fault handlers.
10082
10083 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10084
10085         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10086
10087 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10088
10089         * mini.c: handle also floating point values in initialize_array.
10090
10091 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10092
10093         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10094         array initialization and make it conditional on the intrins option.
10095
10096 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10097
10098         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10099         relocations and put the patch info names close to the enum definition.
10100
10101 2007-01-15 Mark Mason <mason@broadcom.com>
10102
10103         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10104
10105 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10106
10107         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10108
10109 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10110
10111         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10112
10113 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10114
10115         * Makefile.am: distribute the mips sources.
10116
10117 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10118
10119         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10120         directly.
10121
10122 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10123
10124         * cpu-x86.md: back out for now as this triggers other regressions.
10125
10126 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10127
10128         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10129         to eax:edx, so ecx can't get allocated to them (bug #80489).
10130
10131 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10132
10133         * mini.c, mini-exceptions.c: enabled running fault handlers
10134         (bug #80469).
10135
10136 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10137
10138         * driver.c: If nothing fail, do not use the string "failed",
10139         because it makes it very annoying to view test result logs on the
10140         web. 
10141
10142 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10143
10144         * debug-debugger.c (mono_debugger_main): Rename "main" to
10145         "main_method" to prevent a warning.
10146
10147         Remove a warning for unused field.
10148
10149 2006-12-28  Martin Baulig  <martin@ximian.com>
10150
10151         * debug-debugger.c
10152         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10153
10154 2006-12-22  Martin Baulig  <martin@ximian.com>
10155
10156         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10157         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10158         seperate `.mdb_debug_info' section, so we can access it from the
10159         debugger even if the binary is stripped.
10160
10161         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10162         from the `.mdb_debug_info' here to prevent the linker from
10163         removing that section.
10164
10165         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10166         mdb-debug-info64.s.
10167
10168 2006-12-19  Robert Jordan  <robertj@gmx.net>
10169
10170         * mini-x86: enable the code to return small structures in
10171         registers for FreeBSD as well. Fixes bug #80278.
10172         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10173
10174 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10175
10176         * mini-x86.c: align the stack when calling the profiler
10177         function instrumenting the prolog (on OSX).
10178
10179 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10180
10181         * mini.c: emit a break opcode where Debugger.Break () is called.
10182
10183 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10184
10185         * mini.c (mono_method_to_ir): Provide useful information on this
10186         assert, to prevent others from debugging like I did.
10187
10188 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10189
10190         * mini.c: enable code which was incorrectly commented
10191         (bug #80235).
10192
10193 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10194
10195         * mini-x86.c: enable on OSX, too, the code to return small
10196         structures in registers.
10197
10198 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10199
10200         * mini-x86.c: remove the use of the dynamic code manager here, too.
10201
10202 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10203
10204         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10205         mono_debugger_create_notification_function() to use
10206         mono_global_codeman_reserve () instead of a dynamic code manager.
10207
10208 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10209
10210         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10211         ves_array_element_address() jit icall and use a generated
10212         managed method instead (which is about 4 times faster for a rank 3
10213         array access).
10214
10215 2006-11-29  Mark Mason  <mason@broadcom.com>
10216
10217         * basic-calls.cs: additional tests for passing
10218         structures as function arguments.
10219
10220 2006-11-29  Mark Mason  <mason@broadcom.com>
10221
10222         * mini-mips.h: disable custom exception handling
10223         * mini-mips.c: throw/rethrow should use jalr to call
10224         exception stubs.  Fixed bug with passing structures
10225         by value. More support for tracing floating point
10226         functions.
10227
10228 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10229
10230         * mini.c: fixed typo in the soft-float ldind.r4 handling
10231         (bug #80086).
10232
10233 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10234
10235         * mini.c, mini.h, driver.c: added --runtime command line
10236         option to select a different runtime than the autodetected one.
10237         * jit.h: added API for embedders to initialize with a specific
10238         runtime version.
10239
10240 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10241
10242         * mini.c: handle also boxing of r4 values (bug #80024).
10243
10244 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10245
10246         * mini-ppc.c: force indirect calls until we reserve
10247         enough address space for all the generated code.
10248
10249 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10250
10251         * exceptions-arm.c: workaround bugs in the libc definition
10252         of struct ucontext.
10253
10254 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10255
10256         * inssel.brg: fixes from me and Mark Mason.
10257
10258 2006-11-23  Dick Porter  <dick@ximian.com>
10259
10260         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10261         semaphore display now we've fixed the initial value
10262
10263 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10264
10265         * inssel.brg: partially revert the last change to fix the build.
10266
10267 2006-11-21  Mark Mason  <mason@broadcom.com>
10268
10269         * inssel.brg: Add and use compare-and-branch macros to support
10270         architectures that do not have condition code registers (ie. MIPS).
10271         * *-mips.{c,brg,md}: Fix copyright statements
10272
10273 2006-11-20  Mark Mason  <mason@broadcom.com>
10274
10275         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10276         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10277         * mini.h: Added declaration for mono_print_ins()
10278         * mini-codegen.c: added ins_spec initializer for MIPS
10279         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10280         vreg to be virtual and hreg to be non-virtual.
10281         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10282         is not yet working/implemented correctly.
10283         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10284         non-static, fixup calls to print_ins() from other parts in the file.
10285
10286 2006-11-20  Mark Mason  <mason@broadcom.com>
10287
10288         * basic-calls.cs: added tests for passing structures as arguments
10289         to calls.
10290
10291 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10292
10293         * inssel-long32.brg: optimize signed division by power of two.
10294
10295 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10296
10297         * mini-arm.c: added support for interworking with thumb code
10298         (mono must be still be built using the ARM instruction encoding).
10299
10300 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10301
10302         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10303         verifier has different rules for it.   Fixes a few verifier issues
10304         in the test suite.
10305
10306         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10307         at the end, so people know what happened.
10308
10309 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10310
10311         * brach-opts.c: in optimize_exception_target() make sure we
10312         are in a catch clause (fixes bug #79871).
10313
10314 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10315
10316         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10317         more soft-float support fixes.
10318
10319 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10320
10321         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10322         that are passed half on the stack and half in registers.
10323
10324 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10325
10326         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10327         more mips integration work from Mark E Mason 
10328         <mark.e.mason@broadcom.com>.
10329
10330 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10331
10332         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10333         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10334         tramp-mips.c: added sources for the mips port, not
10335         integrated in the build yet. Contributed by
10336         Mark E Mason <mark.e.mason@broadcom.com>.
10337
10338 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10339
10340         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10341
10342 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10343
10344         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10345         put the soft-float rules in its own file since it seems to
10346         break s390 compilation.
10347
10348 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10349
10350         * mini-arm.c: fixed wrnings.
10351
10352 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10353
10354         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10355         inssel-arm.brg: ARM support for soft-float.
10356
10357 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10358
10359         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
10360         loads and stores of 32 bit fp values.
10361
10362 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
10363
10364         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
10365
10366         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
10367         works. Fixes #79852 and #79463.
10368
10369 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10370
10371         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
10372         more soft-float support WIP and fixes.
10373
10374 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
10375
10376         * mini-arm.c: some VFP updates.
10377
10378 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10379
10380         * mini-exceptions.c: 0 is a valid local var offset in some
10381         architectures, don't assert (bug #78508).
10382
10383 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
10384
10385         * exceptions-arm.c: fixed off by one error in stack walk code.
10386
10387 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10388
10389         * mini.h, mini.c: more precise tracking of type load exceptions.
10390
10391 2006-11-03  Robert Jordan  <robertj@gmx.net>
10392
10393         * Makefile.am: [WIN32] Add monow.exe target.
10394         * driver.c: [WIN32] Don't detach the console when debugging.
10395         Fixes bug #79797.
10396         
10397 2006-10-30  Miguel de Icaza  <miguel@novell.com>
10398
10399         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
10400
10401 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * aot-compiler.c (emit_method_info): Add a case missed earlier.
10404
10405         * driver.c (mini_regression): Fix --regression with AOT.
10406
10407         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
10408
10409 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
10410
10411         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
10412
10413         * mini-sparc.h: Don't use sigaction on sparc/linux.
10414
10415         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
10416
10417         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
10418
10419         * mini-exceptions.c: Add proper include files for getpid ().
10420
10421 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
10424         address instead of a MonoJitInfo* to avoid decoding the exception info for the
10425         method.
10426
10427         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
10428         name cache to reduce its size.
10429
10430         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10431
10432 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * mini-x86.c: Save/restore the current LMF structure more efficiently using
10435         the mono_lmf TLS variable.
10436
10437         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
10438         trampoline lmf frames.  
10439
10440         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
10441
10442 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
10443
10444         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
10445         the mono_lmf TLS variable.
10446
10447         * mini-exceptions.c: Access the LMF structure through accessors.
10448
10449         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
10450         variable instead of in jit_tls->lmf.
10451
10452         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
10453         
10454         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
10455         trampoline lmf frames.
10456
10457         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
10458
10459 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10460
10461        * mini.c trace.c mini-x86.c: Revert these too.
10462         
10463        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
10464        signature change.
10465
10466 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
10467
10468         * genmdesc.c: removed now dead code.
10469
10470 2006-10-09  Robert Jordan <robertj@gmx.net>
10471
10472         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
10473
10474 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10475
10476         * mini.h: do not leave gaps in the opcode values.
10477
10478 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
10479
10480         * jit-icalls.h: flag functions as internal here, too.
10481
10482 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
10483
10484         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
10485         functions with the internal attribute.
10486
10487 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
10488
10489         * aot-compiler.c: fclose the file descriptor in the profile read loop.
10490
10491 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
10492
10493         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
10494         for soft-float.
10495
10496 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
10499         tail calls as on other platforms.
10500
10501         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
10502
10503         * iltests.il: Add a few tailcall tests.
10504
10505 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10506
10507         * driver.c: fix loop for old compilers (bug #79521).
10508
10509 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
10512
10513         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
10514
10515         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
10516         metadata without any code.
10517
10518         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
10519         more precise debugging information using gdb.
10520
10521 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
10522
10523         * inssel-ia64.brg: Make the helper methods static.
10524
10525 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10526
10527         * inssel-x86.brg: make the helper methods static.
10528
10529 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
10530
10531         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
10532
10533 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10534
10535         * mini.c: updates for monoburg changes.
10536         * inssel.brg: make a few helper functions static as they should.
10537
10538 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
10539
10540         * Makefile.am: Move mini-codegen.c to common_sources.
10541
10542 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10543
10544         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
10545         instructions.
10546         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
10547         mini-ppc.h: port to use the common local register allocator.
10548
10549 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10550
10551         * mini.h: Remove the comment too then.
10552
10553 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
10554
10555         * mini.h: put back backend.data which is to be used shortly and
10556         doesn't increase the size of MonoInst. If any 64 bit arch aligned
10557         pointers on 4 byte boundaries it'd have much bigger issues running
10558         and you can ifdef it out anyway.
10559
10560 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10561
10562         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
10563         MonoInst size by 4 bytes on 64 bit machines.
10564
10565 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10566
10567         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
10568         replacement with more meaningful field names. Arch maintainers, please
10569         check the assigned names are good enough for your arch.
10570
10571 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10572
10573         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
10574         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
10575
10576 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10577
10578         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
10579         relocations and memory requirements, put the optimization flags
10580         definitions in their own file.
10581
10582 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
10583
10584         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
10585
10586         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
10587
10588 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
10589
10590         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
10591
10592 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
10593
10594         * inssel.brg: use the correct function to get the size of an item
10595         in an array, given an element class.
10596         * aot-compiler.c: do not access class->class_size directly.
10597
10598 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10599
10600         * mini.h, debug-mini.c: added a debugging function to print
10601         info about local variables and arguments in a jitted method.
10602
10603 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
10604
10605         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10606
10607         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
10608
10609 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
10612         inner and outer loops when passing vtypes.
10613
10614 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
10615
10616         * mini-ppc.c: take into account the cpu errata for cache flushing
10617         which caused some random errors (bug #79381).
10618
10619 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
10622         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
10623
10624 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
10625
10626         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
10627         loaded.
10628
10629         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
10630         freebsd ports tree.
10631
10632         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
10633         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
10634
10635         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
10636         displacement.
10637
10638 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
10641
10642 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
10645         macro does not have to be changed during debugging.
10646
10647         * 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>.
10648
10649         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
10650
10651         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
10652         
10653         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
10654         MONO_ARCH_NO_EMULATE_MUL is defined.
10655
10656         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
10657
10658         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
10659
10660         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
10661
10662         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
10663         
10664 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
10665
10666         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
10667         stuff to mini-exceptions.c where it is used.
10668
10669         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
10670         setup code, the real one is in mini-exceptions.c.
10671
10672         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
10673         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
10674         some changes from the freebsd ports tree.
10675
10676         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
10677         constants.
10678         
10679         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
10680
10681 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
10682
10683         * mini.c: on Linux, check for /proc to be mounted
10684         (bug# 79351, novell bug#201204).
10685
10686 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
10687
10688         * mini.c: handle cases where pthread_attr_getstack() behaves
10689         incorrectly (bug #78096).
10690
10691 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
10692
10693         * mini-arm.c: support larger stack frames (bug #79272).
10694
10695 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
10698
10699         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
10700         tokens.
10701
10702         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
10703         mono_class_from_name () to find a class from its name.
10704
10705         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
10706
10707 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
10708
10709         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
10710
10711 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
10712
10713         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
10714
10715 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
10716
10717         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
10718         callinfo->trampoline.
10719
10720         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
10721         fixes #79271.
10722         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
10723         future.
10724
10725 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
10726
10727         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
10728
10729 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
10730
10731         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
10732         stats.method_trampolines, it is already done by the generic trampoline code.
10733
10734         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
10735         
10736 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
10737
10738         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
10739
10740         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
10741
10742         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
10743
10744         * mini.c (print_jit_stats): Print mscorlib mempool size too.
10745         
10746         * mini.c (print_jit_stats): Print new stats.
10747
10748         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10749
10750 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
10751
10752         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
10753         Address on two dimensional arrays. Fixes #78729.
10754
10755         * mini.h (MonoCompile): Add a 'skip_visibility' field.
10756
10757         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
10758         a method.
10759
10760         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
10761
10762         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
10763         #79130.
10764         
10765         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
10766         a race condition.
10767         (mini_get_ldelema_ins): Ditto.
10768
10769 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
10770
10771         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
10772         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
10773         Fixes #79213.
10774
10775 2006-08-29 Neale Ferguson <neale@sinenomine.net>
10776
10777         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
10778         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
10779
10780         * exceptions-s390x.c: Cosmetic change.
10781
10782         * tramp-s390.c: Fix warning.
10783
10784         * cpu-s390.md: Correct length of mul_imm.
10785
10786 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
10787
10788         * aot-compiler.c: added binary writer with ELF backend
10789         implementation (only on Linux/x86 for now).
10790
10791 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * Makefile.am: Don't run net 2.0 AOT tests.
10794
10795         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
10796         (mono_compile_assembly): Skip net 2.0 assemblies as well.
10797
10798         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
10799
10800 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
10801
10802         * aot-compiler.c: simplified and refactored the asm-writing code
10803         to allow different backends.
10804
10805 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
10806
10807         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10808
10809         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
10810         little. Share patches of type TYPE_FROM_HANDLE as well.
10811
10812         * mini.c (mono_patch_info_equal): New helper function.
10813         (mono_patch_info_hash): Ditto.
10814
10815         * aot-compiler.c (emit_method_code): Fix s390 build.
10816
10817         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
10818         is not handled because it is stored as a flag and not as a type ctor. Fixes
10819         #79016.
10820
10821 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10822
10823         * aot-compiler.c: Fix computation of GOT slot statistics.
10824         
10825         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
10826         Also remove support for not PIC AOT.
10827
10828         * mini.h: Bump AOT file format version.
10829
10830         * objects.cs: Add a test for #78990.
10831
10832         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
10833         (peter.dettman@iinet.net.au). Fixes #79087.
10834
10835         * basic-long.cs: Add a test for the above.
10836
10837 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
10838
10839         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
10840         
10841         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
10842         code somewhat.
10843
10844 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
10847         exceptions.
10848
10849 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
10850
10851         * mini.c: Don't verify COM proxy invoke calls
10852         
10853
10854 2006-08-10  Dick Porter  <dick@ximian.com>
10855
10856         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
10857         which process is holding semaphores locked.
10858
10859 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
10860
10861         * mini-ia64.c mini-amd64.c: Fix #79027.
10862
10863         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
10864
10865         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
10866
10867         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
10868         implicit arguments in a vararg call. Fixes #79027.
10869
10870 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
10871
10872         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
10873         (mono_get_array_new_va_signature): Ditto.
10874
10875 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * aot-runtime.c: Call init_plt lazily.
10878
10879         * inssel-long.brg: Fix unsigned long->int conversion.
10880
10881         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
10882
10883         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
10884         that most data is now in the .rss/.data section.
10885
10886 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
10887
10888         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
10889
10890         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
10891
10892         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
10893
10894         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
10895
10896         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
10897         virtual call. Fixes #79010.
10898
10899         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
10900         and use the result as the this argument in the real call.
10901
10902         * generics.2.cs: Add a new test for #79010.
10903         
10904 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
10905
10906         * mini-x86.c: Fix a warning.
10907
10908         * aot-compiler.c: Add a bunch of statistics.
10909
10910         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
10911
10912 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
10913
10914         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
10915
10916 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
10917
10918         * 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>.
10919
10920 2006-07-13  Miguel de Icaza  <miguel@novell.com>
10921
10922         * mini.c (mono_method_to_ir): Obtain the original method in the
10923         CIL stream and use this to perform validation.
10924
10925         Fixed: #78816
10926
10927 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
10928
10929         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
10930         (mono_arch_call_opcode): Ditto.
10931
10932         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
10933         #78826.
10934
10935         * mini.c (mono_patch_info_dup_mp): New helper function.
10936         
10937         * aot-compiler.c (compile_method): Fix some of the memory allocated during
10938         compilation. Fixes #78827.
10939
10940 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
10941
10942         * declsec.c: Use original security informations for
10943           MONO_WRAPPER_MANAGED_TO_MANAGED.
10944
10945 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
10946
10947         * mini.c: Allow Com Interop methods/classes and
10948         don't verify COM wrapper calls
10949         
10950
10951 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
10952
10953         * inssel-long32.brg: Fix long->i4 checked conversion.
10954
10955         * exceptions.cs: Add a test for the above.
10956
10957 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
10958
10959         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
10960
10961         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
10962         leaks.
10963
10964         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
10965         #78775.
10966
10967 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * mini.c: Fix solaris/x86 exception handling.
10970
10971         * Makefile.am: Get rid of $(ICU_LIBS).
10972
10973 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
10974
10975         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
10976         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
10977         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
10978
10979         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
10980
10981         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
10982         this function causes a SIGSEGV.
10983
10984 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
10985
10986         * mini.c: Remove unused solaris/x86 includes.
10987
10988 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
10989
10990         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
10991
10992 2006-06-20  Jb Evain  <jbevain@gmail.com>
10993
10994         * cpu-g4.md: fix max length of start_handler instruction.
10995
10996 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
10997         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
10998
10999 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11000         * ssa.c: Fixed bug 78653 for SSA based deadce.
11001         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11002         MonoInst.flags, used in SSA based deadce.
11003         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11004         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11005
11006 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11007
11008         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11009         it can end up using non executable memory on ppc64 systems
11010         running ppc32 userspace (fix from Johannes Berg).
11011
11012 2006-06-14  Dick Porter  <dick@ximian.com>
11013
11014         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11015         4.1.1
11016
11017 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11018         * mini.c: Made so that inline is locally disabled if it would
11019         trigger a .cctor, because too many apps depend on this behavior
11020         (which seems to be also the one of the MS CLR).
11021
11022 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11023
11024         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11025         No idea why this worked before.
11026
11027         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11028         which branch to outer exception clauses since they could skip the
11029         inner finally clauses. Fixes #78633.
11030
11031         * exceptions.cs: Add a test for the above.
11032
11033         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11034         Fixes #78629.
11035
11036         * iltests.il: Add a test for the above.
11037
11038 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11039
11040         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11041         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11042
11043         * iltests.il: Add a test for the above.
11044
11045 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11048         
11049         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11050         methods as instrinsics.
11051
11052 2006-06-09  Wade Berrier <wberrier@novell.com>
11053
11054         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11055         (simple-cee-ops.h ssapre-mini-ops.h)
11056
11057 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11058
11059         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11060         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11061         instruction).
11062         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11063         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11064
11065 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11066
11067         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11068
11069 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11070
11071         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11072         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11073         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11074         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11075         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11076         of opcodes, so that bug 78549 should not happen again.
11077         * ssapre.c: Updated to use the renamed files.
11078
11079 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11080
11081         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11082         in OP_ATOMIC_EXCHANGE_I4.
11083
11084 2006-06-07  Wade Berrier <wberrier@novell.com>
11085
11086         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11087         in mono_debugger_create_notification_function)
11088
11089 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11090
11091         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11092         
11093         * mini.c (type_from_stack_type): Disable some changes which do not
11094         seem to work.
11095
11096         * driver.c: Reenable opts.
11097
11098         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11099         of the evaluation stack.
11100         
11101         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11102         evaluation stack trace at entry to the bblock.
11103
11104         * mini.c (merge_stacks): New function to perform verification of stack merges.
11105         Turned off by default.
11106
11107         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11108         STACK_MP.
11109         
11110 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11111
11112         * local-propagation.c: Fixed bug 78549.
11113
11114 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11117
11118 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11119
11120         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11121         tramp-arm.c, tramp-ia64.c
11122         (mono_debugger_create_notification_function): Update signature to
11123         new signature and use new protocol for creating the notification
11124         function.  
11125
11126         Should fix the build.
11127
11128 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11129
11130         * exceptions-ppc.c (mono_jit_walk_stack)
11131         (ves_icall_get_frame_info): Fix the build
11132
11133 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11134
11135         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11136
11137 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11138
11139         * il2tests.2.il: New file for generics CIL tests.  Add test for
11140         #78019.
11141         * Makefile.am: Update.
11142
11143         Fix #78019
11144         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11145         to nullable types.
11146
11147 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11148
11149         * aliasing.c: Fixed bug 78311.
11150
11151 2006-05-29  Martin Baulig  <martin@ximian.com>
11152
11153         * mini-exceptions.c (mono_find_jit_info): When computing the
11154         native offset, check whether we're actually inside the method's
11155         code; call mono_debug_print_stack_frame() to format the frame.
11156         (ves_icall_System_Exception_get_trace): Call
11157         mono_debug_print_stack_frame() to format the stack frame.
11158         (ves_icall_get_trace): Update to the new debugging API.
11159         (mono_jit_walk_stack_from_ctx): Likewise.
11160         (ves_icall_get_frame_info): Likewise.
11161
11162         * mini.c (get_method_from_ip): Use the new debugging API.
11163         (mono_print_method_from_ip): Likewise.
11164
11165         * exceptions-ppc.c
11166         (mono_jit_walk_stack): Use the new debugging API.
11167         (ves_icall_get_frame_info): Likewise.   
11168
11169 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11172
11173 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11174
11175         * mini.c: Added "limitator" to inline for debugging.
11176
11177 2006-05-24  Martin Baulig  <martin@ximian.com>
11178
11179         * debug-debugger.c (mono_debugger_init): Create a private,
11180         malloc()-based code manager for the notification function and
11181         intentionally leak it on exit.  This fixes the crash-on-exit race
11182         condition.
11183
11184         * tramp-amd64.c
11185         (mono_debugger_create_notification_function): Added
11186         `MonoCodeManager *' argument.
11187
11188         * tramp-x86.c
11189         (mono_debugger_create_notification_function): Added
11190         `MonoCodeManager *' argument.
11191
11192 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11193
11194         * aliasing.c: Fixed 64 bit issue.
11195         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11196         default since all known bugs are fixed (one more time!).
11197
11198 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11199
11200         * mini.c: write barrier support.
11201
11202 2006-05-23  Martin Baulig  <martin@ximian.com>
11203
11204         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11205         check at the top of the file.
11206
11207 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11208
11209         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11210         reverting changes without reason and without changelog entries.
11211
11212 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11213
11214         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11215         to a few opcodes. Fixes #78439.
11216
11217         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11218         consistency with other archs.
11219
11220         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11221
11222 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11223
11224         * debug-debugger.c: fix the build.
11225
11226 2006-05-17  Martin Baulig  <martin@ximian.com>
11227
11228         * debug-debugger.c
11229         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11230         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11231         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11232         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11233
11234 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11235
11236         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11237
11238 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11241         MONO_TYPE_GENERICINST.
11242         
11243         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11244         MONO_TYPE_GENERICINST.
11245
11246 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11247
11248         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11249         #78325.
11250
11251 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11254         mempool.
11255         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11256
11257 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11260         mono_trace_cleanup ().
11261
11262         * iltests.il: Fix problem with the newly added test.
11263
11264         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11265         due to register constraints, free up the previous hreg. Fixes #78314.
11266
11267         * iltests.il: Add new test for #78314.  
11268
11269         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11270         Interlocked.Add. Fixes #78312.
11271
11272         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11273         
11274 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11275
11276         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11277
11278 2006-05-05  Martin Baulig  <martin@ximian.com>
11279
11280         * debug-mini.c (mono_debug_open_block): New method.
11281
11282         * mini-amd64.c
11283         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11284         the beginning of each basic block.
11285
11286         * mini-x86.c
11287         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11288         the beginning of each basic block.
11289
11290 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11291
11292         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11293         default until I understand why they break the build on amd64.
11294
11295 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11296
11297         * mini.c (mini_cleanup): Call mono_cleanup ().
11298
11299         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11300         errors.
11301
11302 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11303
11304         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11305         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11306         default since all known bugs are fixed, and I cannot reproduce bug
11307         77944... I'm asking Matt Hargett to test again after this commit.
11308
11309 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11310
11311         * mini-codegen.c: Fixed typo that thrashed inline.
11312
11313 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11314
11315         * dominators.c (compute_dominators): Avoid using a worklist since
11316         it is not correct in some cases. Instead, iterate over all bblocks as
11317         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11318
11319 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11320
11321         * mini.c (mono_jit_compile_method_inner): Use
11322         mono_prepare_exception_from_error that resets the value
11323         internally.
11324
11325 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11326
11327         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11328         
11329 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11330
11331         * aliasing.c: Fixed bug 78210.
11332
11333 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11334
11335         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11336         default until all their problems (or the ones they trigger) are fixed.
11337
11338 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11339
11340         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11341         
11342         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11343         as loaded only after resolving patches since that could invoke the same method.
11344
11345         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11346
11347         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11348         functions.
11349
11350         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11351         AOT loader.
11352
11353         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11354         stack.
11355
11356         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
11357         made from AOT code through the PLT table.
11358
11359         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
11360         holding the plt offset when a call is made to the aot plt trampoline.
11361         
11362 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11363
11364         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
11365         amd64 AOT support.
11366
11367         * Makefile.am (common_sources): Fix build breakage.
11368
11369         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
11370         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
11371         intra-assembly calls if possible.
11372         
11373         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
11374
11375         * mini-trampolines.c: Handle PLT entries.
11376
11377         * mini.c: Avoid creating a GOT var for calls.
11378
11379         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
11380         from mscorlib code.
11381
11382         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
11383         from mscorlib code.
11384
11385         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
11386         AOT code.       
11387
11388         * mini.h: Bump AOT file format version.
11389         
11390         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
11391         covers more cases.
11392
11393 2006-04-25  Martin Baulig  <martin@ximian.com>
11394
11395         * driver.c: Disable copyprop, consprop and inline when running
11396         inside the debugger.
11397
11398 2006-04-25  Martin Baulig  <martin@ximian.com>
11399
11400         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
11401         with `get_current_thread' and added `detach'.
11402         (MonoDebuggerMetadataInfo): Added `thread_size',
11403         `thread_tid_offset', `thread_stack_ptr_offset' and
11404         `thread_end_stack_offset'.
11405
11406 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11407
11408         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
11409         aot-runtime.c.
11410
11411         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
11412         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
11413
11414         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
11415
11416         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
11417
11418         * aot.c: Add support for ADJUSTED_IID.  
11419
11420 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * aot.c (emit_method_order): Don't align method_order_end.
11423
11424         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
11425         the interface ID changes.
11426
11427 2006-04-21  Dick Porter  <dick@ximian.com>
11428
11429         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
11430         cleaning up a thread.  Fixes the new part of bug 77470.
11431
11432 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
11433
11434         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
11435         to managed wrapper.
11436                      
11437 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
11440         
11441         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
11442         SIGSEGV. Fixes #78072.
11443
11444         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
11445         unregister our SIGABRT handler.
11446
11447 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
11448
11449         * mini.c: Disabled inline where it can alter the call stack in a
11450         way visible from managed code.
11451         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
11452         default.
11453
11454 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
11455
11456         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
11457         on other platforms. Fixes #78089.
11458
11459 2006-04-13  Martin Baulig  <martin@ximian.com>
11460
11461         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
11462         determine whether we're inside the debugger.
11463
11464         * debug-debugger.h
11465         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
11466
11467 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11468
11469         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
11470         handler clauses. Fixes #78024.
11471
11472         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
11473         in the CALL_MEMBASE opcodes. Fixes #78088.
11474         (mono_arch_get_vcall_slot_addr): Ditto.
11475
11476 2006-04-10  Martin Baulig  <martin@ximian.com>
11477
11478         * debug-debugger.c: The thread handling code has now been moved
11479         into ../metadata/threads.c.
11480
11481 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * driver.c (mono_main): Fix --with-gc=none build.
11484
11485         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
11486         (mono_spillvar_offset_float): Ditto.
11487         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
11488         hreg, not when its !global, since on ia64, there is a third category: stacked
11489         registers.      
11490
11491 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
11492
11493         * mini.c: set MonoInst->klass for load field address and a few other
11494         places.
11495
11496 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11497
11498         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
11499
11500 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
11503         the branch opt changes.
11504
11505 2006-04-06  Dick Porter  <dick@ximian.com>
11506
11507         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
11508         
11509         * wapihandles.c (mini_wapi_seminfo): 
11510         * driver.c (mono_main): Add semaphore info option
11511
11512 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
11513
11514         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
11515         branch optimization changes. Fixes #78009.
11516
11517 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11518
11519         * mini.c: ignore accessibility of methods in managed->native wrappers.
11520
11521 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
11522
11523         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
11524         
11525         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
11526
11527 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
11528
11529         * mini.c: Modify the branch optimizations to preserve the invariant that
11530         the entries inside the in_bb and out_bb arrays are unique.
11531         (mono_unlink_bblock): Avoid creation of new arrays.
11532
11533 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
11534
11535         * mini.c (mono_unlink_bblock): Fix regression caused by previous
11536         change (#77992).
11537
11538 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
11539
11540         * mini.c (optimize_branches): Remove the "optimizations" in
11541         the cbranch1/cbranch2 -> branch cases which were causing several
11542         problems in the past. Fixes #77986.
11543
11544 2006-03-31  Chris Toshok  <toshok@ximian.com>
11545
11546         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
11547         default optimizations :(
11548
11549 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
11550
11551         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
11552         branch.
11553
11554 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
11555
11556         * local-propagation.c: Added comments to structs and removed
11557         "Mono" prefixes from local tree mover types.
11558
11559 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
11560
11561         * Makefile.am (arch_sources): Define this for each architecture so 
11562         libmono_la_SOURCES is defined in one place.
11563
11564 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
11565
11566         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
11567         from handles/.
11568
11569 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
11570
11571         * driver.c: print the GC name supplied by configure.
11572
11573 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
11574
11575         * local-propagation.c: Added tree mover, and moved here all the
11576         local propagation code from mini.c
11577         * mini.c: Added support for treeprop, and moved all the local
11578         propagation code to local-propagation.c
11579         * mini.h: Added support for treeprop
11580         * driver.c: Added support for treeprop, enabled consprop, copyprop,
11581         treeprop, inline and deadce by default
11582         * Makefile.am: Added local-propagation.c
11583
11584 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
11585
11586         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
11587
11588 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
11589
11590         * debug-debugger.c: make it compile without the Boehm GC.
11591
11592 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11593
11594         * mini.c: fixed issue with mismatch when an icall is registered
11595         with multiple names but same address.
11596
11597 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11598
11599         * declsec.c, mini-exceptions.c: use write barrier to set reference
11600         fields of managed objects.
11601
11602 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11603
11604         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
11605         (can_access_internals): Fix a warning.
11606
11607         * mini.c (print_method_from_ip): Rename this to 
11608         mono_print_method_from_ip so it gets exported.
11609
11610         * trace.c: Deal with strings inside StringBuilder's containing garbage
11611         and fix memory leaks. Fixes #77848.
11612
11613 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
11616         fixes #77787.
11617
11618 2006-03-16 Neale Ferguson <neale@sinenomine.net>
11619         
11620         * mini-s390.c: Remove OP_X86_TEST_NULL.
11621
11622 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11623
11624         * mini.c: use the correct GetHashCode() for the moving collector.
11625
11626 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
11627
11628         * liveness.c: Regalloc spill cost tuning.
11629
11630 2006-03-15 Neale Ferguson <neale@sinenomine.net>
11631         
11632         * mini-s390x.h: Correct S390_LONG macro.
11633
11634         * mini-s390x.c: Cleanup unused code.
11635
11636 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
11637
11638         * jit-icalls.h: New file.
11639
11640         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
11641         icalls and include that instead of including jit-icalls.c.
11642
11643         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
11644         OP_X86 opcodes.
11645
11646 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
11647
11648         * mini.c: when checking for member accessibility, also check for
11649         friend assemblies and for explicit interface implementations.
11650
11651 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
11652
11653         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
11654
11655         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
11656
11657         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11658         common cases are done first.    
11659
11660         * mini-ops.h: Only define platform specific opcodes on the given platform.
11661
11662         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
11663         branch.
11664         
11665 2006-03-14  Martin Baulig  <martin@ximian.com>
11666
11667         Revert Paolo's change from r57348:
11668
11669         * mini.h: don't use gboolean for bitfields.
11670         * mini.c: verifier changes for fields and methods accessibility.
11671
11672 2006-03-13  Neale Ferguson <neale@sinenomine.net>
11673
11674         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
11675
11676         * mini-s390x.c: Fix conv_r_un.
11677
11678         * cpu-s390, cpu-s390x.md: Fix lengths.
11679
11680 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11681
11682         * mini.c: nested types have access to all the nesting
11683         levels, not just the enclosing types.
11684
11685 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11686
11687         * mini.c: added a few more verification checks.
11688
11689 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
11690
11691         * liveness.c: Merge optimizations from the linear-il branch.
11692
11693 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11694
11695         * mini-ia64.c (emit_call): Add a comment.
11696
11697         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
11698
11699         * tramp-ia64.c: Fix some warnings.
11700
11701 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11702
11703         * mini.h: don't use gboolean for bitfields.
11704         * mini.c: verifier changes for fields and methods accessibility.
11705
11706 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11707
11708         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
11709         lazy icall wrapper changes.
11710
11711         * dominators.c: Replace all the dominator algorithms with faster
11712         ones from the linear-il branch.
11713
11714         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
11715         the mempool.
11716
11717         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11718         common cases are done first.
11719
11720         * mini-amd64.c: Fix some warnings.
11721
11722         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
11723         from the mempool.
11724
11725         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
11726         added code.
11727
11728         * mini.h: Add a missing prototype.
11729
11730 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
11731
11732         * mini.c: Compile icall wrappers lazily.
11733
11734         * mini-codegen.c: Use printf instead of g_print since its much faster.
11735
11736         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
11737         function.
11738
11739         * mini.c (optimize_branches): Cache the negative result from 
11740         remove_block_if_useless ().
11741
11742         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
11743         Also fix some bblock linking issues.
11744
11745         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
11746         assembly files.
11747
11748         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
11749
11750         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
11751         accessed fields first, for better cache behavior.
11752         
11753 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11754
11755         * mini.c: speedup IList<T> array accesses.
11756
11757 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
11758
11759         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
11760         inline_costs counter. Fixes #77190.
11761
11762 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
11763
11764         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
11765         trace messages. Fixes #77706.
11766
11767 2006-03-04  Martin Baulig  <martin@ximian.com>
11768
11769         * tramp-amd64.c, tramp-x86.c
11770         (mono_debugger_create_notification_function): Use
11771         mono_global_codeman_reserve() to allocate a buffer at runtime and
11772         return it.
11773
11774         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
11775
11776         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
11777         notification function at runtime and then call `initialize' in the
11778         `MONO_DEBUGGER__debugger_info' vtable.
11779
11780 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
11781
11782         * iltests.il: Fix a visibility problem.
11783
11784 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
11785
11786         * driver.c, mini.c: add hooks for the counters API.
11787
11788 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11789
11790         * driver.c: show disabled options.
11791
11792 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11793
11794         * linear-scan.c: always use cost-driven selection.
11795
11796 2006-02-28  Raja R Harinath  <rharinath@novell.com>
11797
11798         * jit-icalls.c (helper_compile_generic_method): Revert change from
11799         2006-02-24.
11800
11801 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
11802
11803         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
11804
11805 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
11806
11807         * inssel.brg: style fixes, mostly to force the updated monoburg
11808         to run for people using svn.
11809
11810 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11811
11812         * mini.c: match monoburg changes.
11813
11814 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11815
11816         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
11817         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
11818         declaration in the header file.
11819
11820 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11821
11822         * helpers.c: reduce relocations and mem usage.
11823
11824 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11825
11826         * mini.h, mini-codegen.c: disable logging features if
11827         requested by configure.
11828
11829 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
11830
11831         * mini.c: tiny verifier changes.
11832
11833 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11834
11835         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
11836         cpu-pentium.md: stack alignment changes for osx/x86,
11837         partially from Geoff Norton <gnorton@customerdna.com>.
11838
11839 2006-02-24  Raja R Harinath  <harinath@gmail.com>
11840
11841         * jit-icalls.c (helper_compile_generic_method): Update to changes
11842         in metadata/class.c.
11843
11844 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
11845         
11846         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
11847         
11848         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
11849         interface calls with large offsets.
11850
11851 2006-02-23  Raja R Harinath  <rharinath@novell.com>
11852
11853         * jit-icalls.c (helper_compile_generic_method): Document the
11854         special-case we depend on so that we can inflate the method twice
11855         with the same context with no bad side-effects.
11856
11857 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11858
11859         * mini-x86.c, mini-amd64.c: fix for case when xen support
11860         is disabled.
11861
11862 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11863
11864         * mini-x86.c, mini-amd64.c: generate code to access tls items
11865         in a faster way for Xen systems.
11866
11867 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
11868
11869         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
11870         updates and compilation fixes for the OSX/x86 port, mostly from
11871         Geoff Norton <gnorton@customerdna.com>.
11872
11873 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11874
11875         * inssel.brg: faster interface call implementation
11876         to sync with the interface_offsets MonoVTable changes.
11877
11878 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11879
11880         * mini.c: more verification checks.
11881
11882 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
11883
11884         * mini.c: added a few more verification checks.
11885
11886 2006-02-17      Neale Ferguson <neale@sinenomine.net>
11887
11888         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
11889         facility on the processor and use it if available.
11890
11891 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11892
11893         * driver.c, aot.c, mini.c: throw exception if the IL code is
11894         invalid or unverifiable.
11895
11896 2006-02-17  Raja R Harinath  <rharinath@novell.com>
11897
11898         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
11899         m.StructField.
11900
11901 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
11902
11903         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
11904
11905 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11906
11907         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
11908         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
11909         handling of instantiated generic valuetypes.
11910
11911 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
11912
11913         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
11914         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
11915         instead.
11916
11917         * generics.2.cs: Revert the nullable reftypes tests.
11918
11919 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
11920
11921         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
11922         using __builtin_frame_address (1) as it doesn't work in the presence
11923         of optimizations. Hopefully fixes #77273.
11924
11925         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
11926         -> generics.cs change as it doesn't work with some automake versions.
11927
11928 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11929
11930         * mini.c: handle systems that sue a different way to
11931         retrieve the stack address of the current thread.
11932
11933 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
11936         it specially in the makefile.
11937
11938         * generics.2.cs: Add tests for nullable reference types.
11939
11940 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11941
11942         * mini.c: always handle the case when mono_jit_init()
11943         is called in a thread different from the main thread,
11944         confusing libgc (bug #77309).
11945
11946 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
11947
11948         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
11949
11950 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11951
11952         * mini.c: change optimize_branches () to use a single loop
11953         and introduce a new optimization to simplify some range checks.
11954
11955 2006-02-03  Martin Baulig  <martin@ximian.com>
11956
11957         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
11958         and merged with debugger_thread_manager_add_thread().
11959         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
11960         inform the debugger about the main thread.
11961
11962 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
11963
11964         * basic.cs: Add test for div.un/rem.un constant folding.
11965
11966 2006-02-03  Neale Ferguson <neale@sinenomine.net>
11967
11968         * cpu-s390x.md: correct int_xor_imm length
11969
11970 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
11971
11972         * generics.2.cs: New test for #77442.
11973
11974         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
11975         #77442.
11976
11977 2006-02-02  Martin Baulig  <martin@ximian.com>
11978
11979         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
11980         <mono/metadata/mono-debug-debugger.h>   
11981
11982         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
11983
11984 2006-02-02  Martin Baulig  <martin@ximian.com>
11985
11986         * debug-debugger.h: New header file for debug-debugger.c.
11987
11988         * debug-debugger.c: Big API cleanup; don't run the managed Main()
11989         function is a separate thread anymore; add support for attaching.
11990
11991 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
11992
11993         * tramp-x86.c: Fix a warning.
11994
11995 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
11998         on very large methods.
11999
12000         * aot.c (load_patch_info): Fix a warning.
12001
12002 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12003
12004         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12005         mini-ops.h: alu membase optimizations.
12006
12007 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12008
12009         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12010         to speedup StringBuilder.
12011
12012 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12013
12014         * dominators.c (mono_compute_natural_loops): Fix detection of
12015         loop body start blocks.
12016
12017         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12018
12019 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12020
12021         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12022         #75145.
12023
12024 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12025
12026         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12027
12028 2006-01-25  Martin Baulig  <martin@ximian.com>
12029
12030         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12031         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12032         started to cleanup this file a little bit.
12033
12034 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12035
12036         * mini.c: optimize a codepath frequently happening in generics code.
12037
12038 2006-01-23  Martin Baulig  <martin@ximian.com>
12039
12040         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12041
12042         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12043         functions directly.
12044
12045         * driver.c: debug-debugger.c is only available if
12046         `MONO_DEBUGGER_SUPPORTED' is defined.   
12047
12048 2006-01-23  Martin Baulig  <martin@ximian.com>
12049
12050         * debug-debugger.c: Only enable this on platforms where the Mono
12051         Debugger is working (x86 and x86_64).
12052
12053 2006-01-21  Martin Baulig  <martin@ximian.com>
12054
12055         The Mono Debugger is now using the normal `mono' instead of the
12056         `mono-debugger-mini-wrapper' when executing managed code.
12057
12058         * debug-debugger.c: New file; previously known as
12059         debugger/wrapper/wrapper.c.
12060
12061         * debug-mini.c (mono_init_debugger): Removed.
12062
12063         * driver.c (mono_main): Added new `--inside-mdb' command line
12064         argument which is used when running inside the debugger.
12065
12066 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12067
12068         * liveness.c (mono_analyze_liveness): Remove some unused data
12069         structures.
12070
12071 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12072
12073         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12074
12075 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12076
12077         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12078         depends on implementation details of monobitset.
12079
12080         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12081         Fixes #77271.
12082
12083 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * liveness.c: Update after monobitset changes.
12086
12087 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12090
12091 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12092
12093         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12094
12095         * mini-s390x.c: Remove warning messages.
12096
12097 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12098
12099         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12100
12101 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12102
12103         * generics.2.cs: Add ldelem/stelem_any test.
12104
12105 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12106
12107         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12108
12109 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12110
12111         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12112         
12113 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12114
12115         * generics.2.cs: Reenable vtype tests.
12116
12117         * inssel-x86.brg: Remove an icorrect valuetype rule.
12118
12119 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12120
12121         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12122         initial support for OP_ABS.
12123
12124 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12125
12126         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12127
12128 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12129
12130         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12131         conversion and implement LADD/LSUB.
12132
12133         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12134         architectures.
12135
12136 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12137
12138         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12139
12140         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12141         architectures.
12142
12143 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12144
12145         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12146         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12147         (stack walk problem).
12148
12149 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12150
12151         * aot.c (mono_aot_load_method): Fix a warning.
12152
12153 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12154
12155         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12156
12157 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12158
12159         * iltests.il: Add test for #77148.
12160
12161         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12162         #77148.
12163
12164 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12165
12166         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12167
12168 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12169
12170         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12171         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12172
12173         * basic-long.cs: Add lconv-to-r4/r8 tests.
12174
12175 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12176
12177         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12178
12179         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12180         here as on other archs.
12181
12182 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12183
12184         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12185
12186 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12187
12188         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12189         
12190         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12191
12192         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12193         instrument_prolog; Add memory_barrier instruction.
12194
12195 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12196
12197         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12198
12199 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12200
12201         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12202
12203         * aliasing.c inssel.brg: Fix warnings.
12204
12205         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12206         could skip initialization of some parts of memory.
12207
12208         * mini.c mini-ia64.c: Fix warnings.
12209
12210         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12211
12212 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12215         a crash seen on sparc.
12216
12217         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12218         
12219         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12220
12221 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12222
12223         * mini-ops.h: Add s390_backchain instruction
12224
12225         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12226
12227         * cpu-s390.md: Add s390_backchain instruction
12228
12229         * mini-s390.c: Significant ABI changes
12230
12231         * mini-s390.h: Cater for zero length structures
12232
12233 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12234
12235         * mini-s390.c: ABI fixes
12236
12237         * inssel-s390.brg: Remove debug statements
12238
12239         * cpu-s390.md: Fix length of ATOMIC_xx operations
12240
12241 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12242
12243         * basic-float.cs: Add float<->long conversion tests.
12244
12245 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12246
12247         * mini-s390.c: Fix LOCALLOC processing.
12248
12249         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12250
12251 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12252
12253         * iltests.il: Add tests for some opcodes not covered by the other
12254         tests.
12255
12256 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12257
12258         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12259         register loading for Tail processing; Correct trace output.
12260
12261         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12262
12263         * cpu-s390.md: Correct size of jmp instruction. 
12264
12265 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12266
12267         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12268
12269 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12270
12271         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12272           Bring s390 up to current level.
12273
12274 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12275
12276         * generics.2.cs: Disable the newly added tests as they do not work yet.
12277         
12278         * generics.2.cs: Add valuetype tests.
12279
12280 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12281
12282         * basic-long.cs: Add i4->u8 test.
12283
12284         * objects.cs: Add tests for JIT intrinsic.
12285
12286         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12287         optimizations lost by a mistake.
12288
12289 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * basic-long.cs: Remove a test moved to objects.cs.
12292
12293         * arrays.cs: Add more array tests.
12294
12295 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12296
12297         * arrays.cs: Add new tests for multi-dimensional arrays.
12298
12299 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12300
12301         * Makefile.am (test_sources2): Add generics.2.cs.
12302         (EXTRA_DIST): Add test_sources2.
12303
12304 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12305
12306         Support for boxing and unboxing nullable types as well as the
12307         isinst operation on nullables, per the CLI ammendment.
12308
12309         * inssel.brg (CEE_ISINST): Special case for nullable
12310
12311         * mini.c (handle_unbox_nullable): new method
12312         (handle_box): Special case for nullable types
12313         (mono_method_to_ir): Call handle_unbox_nullable in correct
12314         places.
12315
12316         * generics.2.cs: New test suite
12317
12318         * Makefile.am: Support for regression tests with generics.
12319
12320 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12321
12322         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12323         allocated to registers. Fixes #76800.
12324
12325 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12326
12327         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12328
12329 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12332         of platforms.
12333
12334 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12335
12336         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12337         objects.cs.
12338
12339         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12340         
12341         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12342 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12343
12344         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12345         single precision before storing to a single precision location.
12346
12347 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12348
12349         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12350
12351 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12352
12353         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12354         correct files.
12355
12356         * basic.cs: Remove test_0_byte_compares test which was moved to
12357         objects.cs a long time ago.
12358
12359 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
12360
12361         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12362
12363 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
12364
12365         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
12366         handlers are called.
12367
12368         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
12369         throwing code.
12370
12371          * mini-ia64.c: Add support for the throw->branch exception 
12372         optimization.   
12373
12374         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
12375
12376 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12377
12378         * mini.c: Enabled "fastpath" deadce :-)
12379         
12380 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12381
12382         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
12383         alias analysis pass to support it.
12384         * mini.h: Likewise.
12385         * ssa.c: Likewise.
12386         * liveness.c: Likewise (liveness computation can use aliasing
12387         information to be more accurate).
12388         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
12389         moreover made so that "--compile-all" uses the given optimization
12390         flags and not the default ones.
12391         * aliasing.c: Alias analysis (new file).
12392         * aliasing.h: Likewise.
12393         * Makefile.am: added "aliasing.c" and "aliasing.h".
12394         
12395 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12396
12397         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
12398         OP_L opcodes.
12399
12400 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
12401
12402         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
12403         fp >= end_of_stack exit condition, as it is not needed, and it might
12404         become true for fp eliminated frames.
12405
12406 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12407
12408         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
12409         coded offsets.
12410
12411 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
12412
12413         * mini-arm.c: fixed alignment of doubles/longs to match
12414         the C ABI (bug #76635).
12415
12416 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
12417
12418         * aot.c: fix compilation with --enable-minimal=aot.
12419
12420 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
12421
12422         * mini-arm.c: fixed compatibility with the new
12423         floating point emulator package for compares.
12424
12425 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
12426
12427         * mini.c : reverted sig->pinvoke changes (r51396-51397).
12428
12429 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
12430
12431         * mini-exceptions.c (print_stack_frame): Output to stderr.
12432         (mono_handle_native_sigsegv): Ditto.
12433
12434 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12435
12436         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
12437         OP_LCONV_TO_OVF_I implementation.
12438
12439         * mini-amd64.c: Add support for the throw->branch exception 
12440         optimization.
12441
12442         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
12443         when the catch clause catches a more general exception, i.e. Object.
12444
12445 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
12446
12447         * cpu-ia64.md: Remove unused opcodes.
12448
12449         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
12450         specific defines for architectures defining USE_SIGACTION.
12451
12452         * mini-ia64.c: Fix some warnings.
12453
12454         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
12455         version seemed to skip a frame.
12456
12457 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12458
12459         * mini.c: Clean up the usage of sig->pinvoke flag. Now
12460         only calls which are made to native code use this flag.
12461
12462 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12463
12464         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
12465         varargs methods as well.
12466         
12467         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
12468         which have save_lmf set. Reorganize methods prologs a bit.
12469
12470         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
12471         debugger to the proper place.
12472
12473 2005-10-29  Martin Baulig  <martin@ximian.com>
12474
12475         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
12476         when running inside the debugger until the debugger has support
12477         for it.
12478
12479 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12480
12481         * mini.h: Fix a warning.
12482
12483 2005-10-24  Miguel de Icaza  <miguel@novell.com>
12484
12485         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
12486         we expose publicly, this returns the string.
12487
12488 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
12489
12490         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
12491         with fp elimination.
12492
12493 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12494
12495         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
12496         native stacktrace using the glibc 'backtrace' function if available.
12497
12498 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
12499
12500         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
12501
12502         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
12503         handle SIGSEGVs received while in native code.
12504
12505         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
12506         code, call mono_handle_native_sigsegv which will abort the runtime
12507         after printing some diagnostics, instead of converting it into a
12508         confusing NullReferenceException.
12509
12510 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12511
12512         * cpu-pentium.md: Remove unused opcodes.
12513
12514 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
12515
12516         * mini-amd64.h (MonoLMF): Add rsp field.
12517
12518         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
12519         the lmf too.
12520
12521 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
12522
12523         * mini-codegen.c (get_register_spilling): Fix some warnings.
12524
12525 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
12526
12527         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
12528         elimination during exception handling. Enable fp elimination by
12529         default.
12530
12531         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
12532         elimination.
12533
12534 2005-10-16  Martin Baulig  <martin@ximian.com>
12535
12536         * mini-exceptions.c
12537         (mono_debugger_run_finally): New public method for the debugger.
12538
12539 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12540
12541         * debug-mini.c (mono_debug_init_method): Fix warning.
12542
12543         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
12544         the 'exname' parameter const to fix some warnings.
12545
12546 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
12547
12548         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
12549         introduced by the previous patch.
12550
12551 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
12552
12553         * basic-float.cs: Add test for precision of float arithmetic.
12554
12555         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
12556         when loading/storing single values from/to memory.
12557
12558         * mini.c (mono_jit_compile_method_with_opt): Create the function
12559         pointers in the correct domain.
12560
12561 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12562
12563         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
12564         introduced by previous patch.
12565         
12566         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
12567         when out_filter_idx is NULL.
12568
12569         * mini-exceptions.c: Don't run filter clauses twice during exception
12570         handling. Fixes #75755.
12571
12572 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12573
12574         * aot.c: Add support for ldflda wrappers.
12575
12576         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
12577         #75902.
12578
12579 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
12580
12581         * mini.c, mini.h: do not consider exception handlers blocks when
12582         setting up interface variables.
12583
12584 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
12585
12586         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
12587
12588 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
12589
12590         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
12591         causes a regression.
12592
12593         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
12594
12595 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
12596
12597         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
12598         of the OP_P definitions.
12599
12600         * TODO: Add a proposal for dealing with the CEE/OP mess.
12601
12602         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
12603         optimizations from the x86 port.
12604
12605         * cpu-amd64.md: Ditto.
12606
12607         * basic.cs basic-long.cs: Add tests.
12608
12609 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
12610
12611         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
12612         Patrik Torstensson's implementation of my exception-handling
12613         optimization idea, when the exception object is not used
12614         (bug #62150).
12615
12616 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
12617
12618         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
12619         of the mul_imm optimizations from the old jit.
12620
12621 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
12622
12623         * mini.c, liveness.c: patch by Patrik Torstensson and
12624         Zoltan Varga to improve performance in methods with
12625         exception clauses.
12626
12627 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12628
12629         * driver.c: Remove 'Globalization' entry from --version.
12630
12631 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
12632
12633         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
12634         there is a profiler interested in JIT events.
12635
12636         * aot.c: Load profile files produced by the AOT profiling module, and
12637         reorder methods based on the profiling info. Add a 'method_order' table
12638         to the AOT file to make mono_aot_find_jit_info work with the reordered
12639         methods.
12640
12641         * mini.h: Bump AOT file version info.
12642
12643 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
12644
12645         * mini-arm.h: work around what looks like a gcc bug when optimizations
12646         are enabled.
12647
12648 2005-09-28  Raja R Harinath  <rharinath@novell.com>
12649
12650         * Makefile.am (AM_CFLAGS): Don't use += to append inside
12651         conditionals.  Use ...
12652         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
12653
12654 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
12655
12656         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
12657         to determine the amount of memory to copy when passing valuetypes.
12658
12659         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
12660         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
12661
12662 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
12663
12664         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
12665         information about aot.
12666
12667 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
12668
12669         * *.c: Replace the use of {Enter,Leave}CriticalSection with
12670         macros. This will allow a deadlock debugger to easily be plugged
12671         in.
12672
12673 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
12674
12675         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
12676
12677 2005-09-27  Raja R Harinath  <rharinath@novell.com>
12678
12679         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
12680         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
12681         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
12682         ($(arch_built)) [CROSS_COMPILING]: Error out.
12683
12684 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * aot.c: Add support for the no_special_static flag for classes.
12687
12688 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12689
12690         * Reapply reverted patches.
12691
12692         * *: Revert r50174 as well.
12693
12694         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
12695
12696 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12697
12698         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
12699
12700 2005-09-23  Miguel de Icaza  <miguel@novell.com>
12701
12702         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
12703         part of the SIG_HANDLER_SIGNATURE.  
12704
12705 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12706
12707         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
12708         statistics.
12709
12710         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
12711         introduced by previous patch.
12712
12713 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
12714
12715         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
12716         saved registers too.
12717
12718         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
12719         upon the information returned by get_call_info ().
12720         
12721         * mini-x86.c (add_float): Fix stack size calculation.
12722         (mono_arch_call_opcode): Rewrite this so it works based up the
12723         information returned by get_call_info ().
12724         (mono_arch_get_this_vret_args): Ditto.
12725
12726 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
12727
12728         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
12729         in cinfo to determine the registers which need to be used.
12730
12731 2005-09-20  Miguel de Icaza  <miguel@novell.com>
12732
12733         * driver.c (mono_main): Add --server and --desktop flags. 
12734
12735 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
12736
12737         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
12738         registers as global registers.
12739
12740         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
12741         longer needed with the new register allocator.
12742
12743         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
12744
12745         * cpu-ia64.md: Remove unused opcodes.
12746         
12747         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
12748         
12749 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
12750
12751         * cpu-amd64.md: Remove unused opcodes.
12752
12753         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
12754         needed with the new register allocator.
12755
12756         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
12757         reg-reg moves.
12758
12759 2005-09-16  Raja R Harinath  <rharinath@novell.com>
12760
12761         * Makefile.am (check-local): Don't invoke semdel-wrapper.
12762
12763 2005-09-16  Martin Baulig  <martin@ximian.com>
12764
12765         * exceptions-amd64.c
12766         (throw_exception): Don't call mono_debugger_throw_exception() if
12767         we're a rethrow - see the FIXME in the code.
12768
12769 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
12770
12771         * mini.c (mono_init_exceptions): This only works on some architectures.
12772         
12773 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
12774
12775         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
12776         on ia64.
12777
12778         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
12779
12780         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
12781         now in mini-exceptions.c.
12782
12783 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
12784
12785         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
12786         now in mini-exceptions.c.
12787
12788 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
12789
12790         * exceptions-x86.c: Applied patch from Patrik Torstensson 
12791         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
12792
12793         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
12794         code into mini-exceptions.c. Add some assertions to it.
12795
12796 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
12797
12798         * aot.c (emit_section_change): Applied patch from "The Software Team" 
12799         (<software@solmersa.com>). Fix as errors on windows.
12800
12801 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
12802
12803         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
12804         method info into the LMF.
12805
12806 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
12807         
12808         * mini-ia64.c: Add proper unwind info for method epilogs.
12809
12810         * exceptions-ia64.c: Add some code to help debugging.
12811         
12812         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
12813
12814         * mini-exceptions.c: Fix warning.
12815
12816 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
12817
12818         * mini.c: Really fix build.
12819
12820         * mini-x86.c mini-amd64.c: Fix build.
12821
12822 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
12823
12824         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
12825
12826         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
12827         some Interlocked methods as intrinsics.
12828
12829         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
12830         for Thread methods as well.
12831
12832         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
12833
12834         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
12835
12836         * mini-ia64.c mini-x86.c mini-amd64.c 
12837         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
12838         OP_MEMORY_BARRIER.
12839         
12840         * mini.c (mono_init_exceptions): Fix build breakage.
12841
12842 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
12843
12844         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
12845         of instructions. Use the new ia64_unw_op macros for emitting unwind
12846         info.
12847
12848         * mini.c (mono_init_exceptions): Initialize exception handling
12849         related trampolines at startup.
12850
12851 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
12852
12853         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
12854
12855 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
12856
12857         * mini.c: Handle type loading errors gracefully during compilation and
12858         throw the appropriate exception.
12859
12860 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
12861
12862         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
12863         for the mono binary.
12864
12865 2005-09-09  Martin Baulig  <martin@ximian.com>
12866
12867         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
12868         the release.
12869
12870 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
12871
12872         * mini-arm.h: use emulation for conv.r.un for the release.
12873
12874 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
12875
12876         * mini-arm.c, objects.cs: more fixes and tests for them.
12877
12878 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
12879
12880         * mini-arm.c: align structures to at least 4 bytes to be able
12881         to keep our current optimized memcpy.
12882
12883 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
12884
12885         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
12886
12887 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12888
12889         * mini.c: ignore SIGPIPE.
12890
12891 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
12892
12893         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
12894
12895         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
12896
12897 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
12898
12899         * mini.h: Add prototype for mono_allocate_stack_slots_full.
12900
12901 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
12902
12903         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
12904         exception handling support.
12905         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
12906         patch by Brian Koropoff <briank@marakicorp.com>).
12907
12908 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
12909
12910         * mini.c: revert another 'optimization' which breaks when
12911         items on the eval stack need to be saved at a basic block end
12912         (bug #75940).
12913
12914 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
12915
12916         * jit-icalls.c: for arrays, ensure we always provide
12917         lower bounds.
12918
12919 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
12920
12921         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
12922         
12923         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
12924
12925 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
12926
12927         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
12928         arguments in their original register.
12929
12930 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
12931
12932         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
12933         memset/memcpy.
12934
12935         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
12936         when ssapre is enabled.
12937
12938         * inssel-long.brg: Fix bug in previous patch.
12939
12940         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
12941         multiplication by a constant.
12942
12943 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
12944
12945         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
12946         icc.
12947
12948         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
12949         saving registers.
12950
12951 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
12952
12953         * inssel-arm.brg: apply changes tested by Brian Koropoff
12954         <briank@marakicorp.com>.
12955
12956 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
12957
12958         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
12959         
12960 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
12963         to the same register if dreg is just a base register.
12964         (print_ins): Improve printing of membase opcodes.
12965
12966         * inssel-x86.brg: Add optimized ldind(reg) rules.
12967
12968         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
12969
12970 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
12971
12972         * mini.c: when running under valgrind, set the stack bottom for
12973         the GC at the actual approximate stack for the app (fixes running
12974         mono with valgrind).
12975
12976 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
12977
12978         * mini.c: do no break at the first valuetype to init found
12979         (fixes bug #75791).
12980
12981 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
12982
12983         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
12984
12985 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
12986
12987         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
12988
12989 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
12990
12991         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
12992
12993 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
12994
12995         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
12996
12997         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
12998         code.
12999
13000         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13001         code.
13002
13003         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13004         methods.
13005
13006 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13007
13008         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13009
13010 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13011
13012         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13013         in the tail recursion optimization.
13014
13015         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13016         debug info into the assembly file.
13017
13018         * iltests.il: Add test for filter regions.
13019
13020         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13021         initial stack of filter regions. Fixes #75755.
13022
13023 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13024
13025         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13026         stack requirements.
13027
13028 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13029
13030         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13031         the check for an already compiled method on non-ia64 platforms.
13032         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13033         proper domain.
13034
13035         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13036
13037         * inssel-x86.brg: Add some optimized call rules.
13038
13039 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13040
13041         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13042         method here.
13043
13044         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13045         mono_arch_patch_delegate_trampoline.
13046
13047         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13048
13049         * mini-trampolines.c: Fix build.
13050
13051         * mini-amd64.h: Add delegate trampolines.
13052
13053         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13054
13055         * inssel-amd64.brg: Add optimized call rules.
13056         
13057         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13058
13059         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13060
13061 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13062
13063         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13064         change.
13065
13066         * mini-ia64.c: Remove LMF fixmes.
13067
13068         * mini-ia64.h: Remove most fields from LMF.
13069
13070         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13071
13072         * mini-trampolines.c: Add support for IA64 function descriptors.
13073
13074         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13075         for IA64 function descriptors.
13076
13077 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13078
13079         * tramp-arm.c: patch the vtable for virtual calls. Added
13080         support code to register/unregister the LMF.
13081         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13082         more LMF work.
13083
13084 2005-08-19  Dick Porter  <dick@ximian.com>
13085
13086         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13087         bit value if needed.
13088
13089 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13090
13091         * mini.c (mini_get_method): Move handling of wrapper data here.
13092
13093         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13094
13095         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13096         virtual.
13097
13098         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13099         bblock->code does not remain empty.
13100
13101 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13102
13103         * arrays.cs: Add regression test for #75832.
13104
13105         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13106         rules. Fixes #75832.
13107
13108         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13109         instruction scheduling.
13110
13111 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13112
13113         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13114
13115 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13116
13117         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13118
13119         * mini-codegen.c: Fix VC build.
13120
13121         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13122
13123 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13124
13125         * mini.h: fix signature for mono_register_opcode_emulation.
13126
13127 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13128
13129         * mini.c: Get rid of most of the helper_sig_... constants using
13130         mono_create_icall_signature ().
13131
13132 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13133
13134         * jit-icalls.c (helper_ldstr): New helper function.
13135
13136         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13137
13138         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13139         throw, load the string using a helper call instead of creating a string object.
13140
13141         * aot.c: Update after LDSTR changes.
13142
13143         * mini.h: Bump AOT file version.
13144         
13145         * aot.c: Save class size info into the AOT file. Print more statistics during
13146         compilation.
13147
13148         * mini.h: Bump AOT file version.
13149
13150         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13151         ordering of disasm cases. Fixes #74957.
13152
13153 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13154
13155         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13156         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13157         the generic code needed for the ARM port.
13158
13159 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13160
13161         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13162         inssel-arm.brg: more ARM features and fixes.
13163
13164 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13165
13166         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13167         ARM port work in progress.
13168
13169 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13170
13171         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13172
13173         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13174
13175         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13176
13177         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13178
13179         * *-ia64.*: Ongoing IA64 work.
13180         
13181         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13182
13183 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13184
13185         * TODO: Remove out-of-data todo stuff.
13186
13187         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13188         dead code.
13189
13190         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13191
13192         * mini.h: Bump corlib version.
13193
13194 2005-07-27  Martin Baulig  <martin@ximian.com>
13195
13196         * mini-codegen.c
13197         (create_copy_ins): Added `const unsigned char *ip' argument; set
13198         `copy->cil_code' from it.
13199
13200 2005-07-27  Martin Baulig  <martin@ximian.com>
13201
13202         * mini-exceptions.c (mono_handle_exception): Don't call
13203         mono_debugger_handle_exception() for filters.
13204
13205 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13206
13207         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13208         as well.
13209
13210 2005-07-26  Martin Baulig  <martin@ximian.com>
13211
13212         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13213
13214         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13215         helper_compile_generic_method() if the method is actually virtual
13216         and non-final.
13217
13218 2005-07-26  Martin Baulig  <martin@ximian.com>
13219
13220         * mini.c
13221         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13222         public; this is now accessed directly by the debugger.
13223         (mono_generic_trampoline_code): Removed.
13224
13225         * debug-mini.c
13226         (mono_debug_init_method): Also add interncalls and wrappers.
13227
13228 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13229
13230         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13231
13232 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13233
13234         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13235
13236 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13237
13238         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13239
13240 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13241
13242         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13243         getting TLS offsets on AMD64 too.
13244
13245 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
13246
13247         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13248
13249 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13250
13251         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13252         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13253
13254 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13255
13256         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13257
13258         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13259         to mini.c.
13260
13261         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13262         mono_sparc_is_virtual_call ().
13263         
13264         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13265
13266         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13267         trampoline parameters.
13268
13269         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13270         
13271         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13272         to mono_arch_get_vcall_slot_addr.
13273
13274         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13275         trampoline code.
13276
13277         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13278
13279 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13280
13281         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13282
13283 2005-07-19  Martin Baulig  <martin@ximian.com>
13284
13285         * exceptions-amd64.c (throw_exception): Call
13286         mono_debugger_throw_exception() here like we're doing it on i386.
13287
13288 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13289
13290         * mini-ia64.c: Add optimized TLS access support.
13291
13292 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13293
13294         * mini-exceptions.c: Ongoing IA64 work.
13295
13296         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13297
13298         * mini.c: Use the default optimization set when embedding. Fixes
13299         #75194.
13300
13301 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13302
13303         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13304         of trampolines to a separate file.
13305
13306         * mini-trampolines.c: New file.
13307
13308         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13309         separate file.
13310         
13311         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13312         amd64/ia64 code.
13313
13314         * mini-codegen.c: Fix cygwin build.
13315
13316 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13317
13318         * mini.c: Add some minor changes needed by the IA64 port.
13319
13320         * *-ia64.*: Ongoing IA64 work.
13321
13322 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13323
13324         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13325         trampolines into arch-independent and arch-dependent parts.
13326
13327         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13328
13329 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13330
13331         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13332
13333         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13334         the xp-regalloc-branch for amd64.
13335
13336         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13337         xp-regalloc-branch for x86.
13338
13339 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13340
13341         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13342
13343 2005-07-06  Martin Baulig  <martin@ximian.com>
13344
13345         * mini.c
13346         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13347         (mono_jit_runtime_invoke): Likewise.
13348
13349 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13350
13351         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13352         on x86 too.
13353         
13354         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13355         without loading their metadata. Reorganize the file format so exception handling+
13356         debug info is kept separate from normal method info. Create MonoJitInfo 
13357         structures for methods lazily.
13358
13359         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
13360         loading metadata.
13361         (x86_class_init_trampoline): Patch AOT class init trampolines too.
13362
13363         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
13364
13365         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
13366         in AOT code.
13367
13368         * mini.h: Bump AOT file version.
13369
13370 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
13371
13372         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13373
13374 2005-07-01  Raja R Harinath  <rharinath@novell.com>
13375
13376         * Makefile.am (check-local): Call semdel-wrapper.
13377
13378 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
13379
13380         * mini-x86.c: Revert the last change as it seems to break the build..
13381
13382 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13383
13384         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13385         
13386         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
13387
13388 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
13389
13390         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
13391         outside of the macro, so strange stuff doesn't happen with gcc4
13392         (NEW_AOTCONST_TOKEN): Likewise.
13393
13394 2005-06-28  Martin Baulig  <martin@ximian.com>
13395
13396         * mini.c (mini_class_is_system_array): New static method; use this
13397         instead of `klass->parent == mono_defaults.array_class' everywhere
13398         since this also works for the new generic array class.
13399
13400 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13401
13402         * inssel.brg: Remove warnings.
13403
13404 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
13405
13406         * mini-ia64.c: Ongoing IA64 work.
13407
13408         * basic-float.cs: Add float->i1 conversion test.
13409
13410         * iltests.il: Add conv.u4 test.
13411
13412 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
13413
13414         * inssel-long.brg: Fix bug caused by last change.
13415
13416 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
13417
13418         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
13419         BSDs.  Allows the x86 JIT to work on OSX86
13420
13421 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
13422
13423         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
13424         u4->i8 conversion.
13425
13426         * mini-ia64.c: Ongoing IA64 work.
13427
13428 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13429
13430         * mini-ia64.c: Ongoing IA64 work.
13431
13432         * driver.c: Clean up jit_code_hash as well when using --regression.
13433
13434         * inssel-long.brg: Fix long->i4/u4 conversion rules.
13435
13436         * basic-long.cs: Add tests for long->u4 conversion.
13437
13438 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
13439
13440         * mini.c: Take mono_get_domainvar out of macros. This makes sure
13441         that we do not depend on undefined C behavior: the order stuff
13442         gets evaluated within an expression. Fixes mono when compiled on
13443         GCC 4.
13444
13445 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
13446
13447         * *-ia64.*: Ongoing IA64 work.
13448
13449         * aot.c: Lower memory usage while loading AOT methods.
13450
13451         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
13452
13453         * mini.h: Bump AOT file format version.
13454
13455 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13456
13457         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
13458
13459 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
13460
13461         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
13462         not on callee assembly). Fixed some comments.
13463
13464 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
13465
13466         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
13467         it gets proper disassembly.
13468         (emit_method_info): Remove some dead code.
13469
13470         * mini.c (mini_method_compile): Allways allocate the GOT var in
13471         mono_method_to_ir for emulating opcodes.
13472
13473 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
13474
13475         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
13476         before freeing the code memory. Fixes #74990.
13477
13478         * objects.cs: Add regression test for #74992.
13479
13480         * liveness.c: Extend live ranges of arguments to the beginning of the
13481         method. Fixes #74992.
13482
13483         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
13484         so it points into the faulting instruction.
13485
13486 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
13487
13488         * jit-icalls.c (mono_imul_ovf): Add exception handling.
13489
13490         * *-ia64.*: Ongoing IA64 work.
13491
13492         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
13493
13494 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
13495
13496         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
13497
13498         * *-ia64.*: Ongoing IA64 work.
13499
13500 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
13501
13502         * basic-long.cs: Add tests for add/sub.ovf.
13503
13504         * basic.cs: Add tests for sub.ovf.
13505
13506         * *-ia64.*: Ongoing IA64 work.
13507
13508 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
13509
13510         * *-ia64.*: Ongoing IA64 work.
13511
13512         * basic.cs: Add conv.ovf.i4.un test.
13513
13514 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
13515
13516         * mini.c: (remove_block_if_useless) Fixed bug 75061.
13517         
13518 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13519
13520         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
13521
13522 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
13523
13524         * *-ia64.*: Ongoing IA64 work.
13525
13526 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13527
13528         * trace.[ch]:
13529         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
13530
13531 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
13532
13533         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
13534
13535 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
13536
13537         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
13538
13539         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
13540         of a call is callable by a near call.
13541
13542 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
13543
13544         * mini-ia64.c: Ongoing IA64 work.
13545
13546 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
13547
13548         * genmdesc.c: Make the generated array non-static.
13549
13550         * inssel-long.brg: Fix LSHR_IMM rule.
13551
13552         * *-ia64.*: Ongoing IA64 work.
13553
13554         * *-ia64.*: Ongoing IA64 work.
13555
13556 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13557
13558         * *-ia64.*: Ongoing IA64 work.
13559
13560         * *-ia64.*: Ongoing IA64 work.
13561         
13562         * mini-ia64.c: Ongoing IA64 work.
13563
13564         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
13565
13566 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13567
13568         * objects.cs basic-calls.cs: Move some tests to objects.cs.
13569         
13570         * objects.cs basic-long.cs: Move some tests to objects.cs.
13571
13572 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
13573
13574         * *-ia64.*: Ongoing IA64 work.
13575
13576         * iltests.il: Add a new test.
13577
13578         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
13579         newobj. Fixes #75042.
13580
13581 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
13582
13583         * *-ia64.*: Ongoing IA64 work.
13584         
13585         * *-ia64.*: Ongoing IA64 work.
13586         
13587         * *-ia64.*: Ongoing IA64 work.
13588
13589         * basic.cs objects.cs: Move tests accessing static variables as well.
13590
13591         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
13592
13593 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
13594
13595         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
13596
13597         * driver.c: Always print failed tests.
13598
13599         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
13600         frame pointer.
13601
13602         * *ia64*: Ongoing IA64 work.
13603
13604 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
13605
13606         * basic.cs: Add tests for add.ovf. Fix warnings.
13607
13608 2005-05-18  Miguel de Icaza  <miguel@novell.com>
13609
13610         * driver.c (mono_main): Avoid crash if no argument is passed to
13611         --break;  Do not use g_error, but f_printf.   And fix all other
13612         ocurrences of the same crash.
13613
13614 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
13615
13616         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
13617         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
13618         Fixes #74742.
13619
13620 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
13621
13622         * *-ia64.*: Add beginnings of IA64 backend.
13623
13624         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
13625
13626 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
13627
13628         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
13629         Fixes #74925.
13630
13631         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
13632
13633         * mini-amd64.c: Fix a warning.
13634
13635 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
13636
13637         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
13638         in float_neg. Fixes #74897.
13639
13640         * mini-amd64.c (emit_call): Fix another near call bug.
13641
13642 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
13643
13644         * declsec.c: Keep the appdomain information in the structure. Added a 
13645         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
13646         value gets overwritten).
13647         * declsec.h: Set the default MonoArray for the the stack to 6. Added
13648         an MonoAppDomain member to MonoSecurityFrame.
13649         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
13650         used in the stack walk. Now use a MonoArray which grow (double) when
13651         it gets full.
13652
13653 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
13654
13655         * mini.c: Re-enabled runtime cleanup, since running threads should
13656         now properly stop when exiting.
13657
13658 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
13659
13660         * mini-codegen.c: New file contaning the arch-independent local
13661         register allocator. Not used by any architectures yet.
13662
13663         * mini.h linear-scan.c: Merge some changes from the 
13664         mini-xp-local-regalloc branch.
13665
13666 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
13667
13668         * mini-amd64.c (emit_call): Fix calls to native functions when the
13669         runtime is compiled as a shared library. Fixes #74756.
13670
13671         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
13672         on a literal field. Fixes #74751.
13673
13674 2005-04-25  Raja R Harinath  <rharinath@novell.com>
13675
13676         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
13677
13678 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
13679
13680         * objects.cs: Add missing null casting test.
13681
13682 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
13683
13684         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
13685         in wrapper methods. Also rename 'address' variable to 'offset'.
13686
13687 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
13688
13689         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
13690         warnings.
13691         
13692         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
13693
13694         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
13695         work on windows.
13696
13697 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13698
13699         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
13700
13701 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13702
13703         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
13704         just the last bytes.
13705
13706 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13707
13708         * aot.c (mono_compile_assembly): Fix warning.
13709
13710         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
13711         by the _MSC_VER stuff.
13712
13713 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
13714
13715         * inssel-long.brg: Fix #74588.
13716
13717         * cpu-amd64.md: Fix #74591.
13718
13719         * iltests.il: Add new regression tests.
13720
13721 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
13722
13723         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
13724         valuetype.
13725
13726 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
13727
13728         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
13729
13730         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
13731         from Bill Middleton <flashdict@gmail.com>.
13732
13733 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
13734
13735         * arrays.cs: Add new regression test. Fix warnings.
13736
13737 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
13738
13739         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
13740         and leakage in CKFINITE.
13741
13742         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
13743         this to a null op since it is called on amd64 too.
13744
13745         * exceptions-amd64.c (get_throw_trampoline): Align stack.
13746
13747         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
13748         body since this is not used on amd64.
13749         
13750         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
13751
13752         * mini-amd64.c: Remove obsolete fixmes.
13753
13754         * mini.c (print_method_from_ip): Fix debugging support.
13755
13756 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
13757
13758         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
13759         so that expressions that don't give much gain are not reduced.
13760         * ssapre.h: Likewise.
13761
13762 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
13763
13764         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
13765
13766         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
13767
13768         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
13769
13770 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
13771
13772         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
13773
13774         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
13775
13776 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
13777
13778         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
13779         stack touching.
13780
13781         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
13782
13783         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
13784
13785         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
13786
13787         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
13788         MONO_ARCH_USE_SIGACTION. Fixes #74252.
13789
13790         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
13791
13792         * mini-x86.c: Fix up stack overflow handling.   
13793
13794         * exceptions.cs: Add new regression test.
13795
13796 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
13797
13798         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
13799         mono_jit_thread_attach.
13800
13801         * mini.c (mono_method_to_ir): Verify called method is not abstract.
13802
13803 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
13804
13805         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
13806         avoid calling constructors using callvirt.
13807
13808         * inssel.brg: Fix #74073.
13809
13810 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
13811
13812         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
13813         compilation with non-GCC compilers.
13814         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
13815         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
13816
13817 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
13818
13819         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
13820         klass->interface_offsets (will likely fix bug#74073).
13821
13822 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
13823
13824         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
13825
13826 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
13827
13828         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
13829         to amd64_div_reg_size ().
13830         
13831         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
13832
13833 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
13834
13835         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
13836
13837 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
13838
13839         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
13840
13841 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
13842
13843         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
13844         
13845         * mini.c (mono_precompile_assembly): Load and precompile referenced
13846         assemblies as well. Fixes #74015.
13847
13848 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
13849
13850         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
13851
13852 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
13853
13854         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
13855         a lot of checks and (anyway) permissions cannot work until corlib is 
13856         loaded.
13857
13858 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
13859
13860         * mini-ppc.c: fixed ABI issue on sysv/ppc.
13861
13862 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
13863
13864         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
13865         calls (fixes bug#72824).
13866
13867 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13868
13869         * mini.c: fix tail recursion elimination (see test in bug#73936).
13870
13871 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
13872
13873         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
13874         some fp functions in sse2 mode.
13875
13876 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
13877
13878         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
13879
13880 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
13881
13882         * mini.h mini.c: Add mono_get_jit_tls_key ().
13883
13884         * mini-x86.c: Enable fast TLS support on windows.
13885
13886 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
13887
13888         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
13889         * mini.c: Check for p/invoke method when generating code. If a
13890         p/invoke method, or it's class, isn't decorated with [Suppress
13891         UnmanagedCodeSecurity] then generate code to call System.Security.
13892         UnmanagedDemand (only if the security manager is active).
13893
13894 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
13895
13896         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
13897         last change as it seems to cause strange crashes.
13898         
13899 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
13900
13901         * *.c: handle unsafe function pointers where needed.
13902
13903 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
13904
13905         * mini.c (mono_jit_free_method): Remove the fixme too.
13906
13907 2005-03-15  Miguel de Icaza  <miguel@novell.com>
13908
13909         * mini.c: As discussed, make the code actually free the delegate
13910         thunk now, to enable the debugging of delegate problems, use
13911         MONO_DEBUG=1 when running Mono. 
13912
13913         This takes also care of parts of the leaks as seen by Joe.
13914
13915 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
13916
13917         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
13918         thread_tls_offset calculation.
13919
13920 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
13921
13922         * declsec.c: Reworked linkdemand checks for icall. The previous code
13923         was using the declaration code (untrusted) and didn't work as expected
13924         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
13925         specific case.
13926
13927 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
13928
13929         * iltests.il: Add new localloc test.
13930
13931         * mini-amd64.c: Handle large stack allocations the same way as on
13932         windows if stack overflow handling is working.
13933         
13934         * mini-amd64.c: Allocate the signal stack using mmap.
13935
13936         * mini.c (sigsegv_signal_handler): Fix reading of context.
13937
13938         * mini-exceptions.c: Fix up stack overflow handling.
13939
13940         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
13941
13942         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
13943
13944         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
13945
13946         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
13947
13948         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
13949         tramp_init functions as they are no longer needed.
13950
13951 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
13952
13953         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
13954         
13955         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
13956
13957         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
13958         
13959         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
13960         support that now.
13961
13962         * mini-ops.h: Add OP_LMUL_IMM.
13963
13964         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
13965         long mul/div opcodes as intrinsic.
13966
13967         * mini-amd64.c (emit_call): Handle the case when the callee might be
13968         an AOT method.
13969
13970 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
13971
13972         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
13973         extra safe.
13974         
13975         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
13976
13977         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
13978
13979 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
13980
13981         * mini.c (mono_codegen): Don't leak here, to help people running
13982         monogrind.
13983
13984 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
13985
13986         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
13987         conversions in sse2 mode.
13988
13989         * basic-float.cs: Add regression test.
13990         
13991         * mini-amd64.c: Reenable sse2.
13992
13993 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
13994
13995         * mini-amd64.c: Disable sse2 until some regressions are fixed.
13996
13997 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
13998
13999         * driver.c: Copyright text should include 2005.
14000         
14001 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14002
14003         * cpu-amd64.md (load_membase): Fix more max lengths.
14004
14005 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14006
14007         * cpu-amd64.md (load_membase): Fix max length.
14008
14009         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14010
14011         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14012
14013         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14014         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14015
14016         * basic-float.cs: Add rounding regression test.
14017
14018         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14019
14020 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14021
14022         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14023         structures in registers for pinvoke wrappers.
14024
14025 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14026
14027         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14028
14029 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14030
14031         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14032         wrapper to mono_jit_thread_attach.
14033
14034         * mini.c (mini_jit_thread_attach): New jit icall.
14035
14036         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14037         native->managed wrappers.
14038
14039         * exceptions.cs: Add new regression test.
14040
14041         * mini.c (optimize_branches): Check regions in the cbranch to throw
14042         block case as well. Fixes #73242.
14043
14044 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14045
14046         * mini.c: thread safety fixes.
14047
14048 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14049
14050         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14051         patching stuff, since delegates use jump trampolines so there is
14052         no caller.
14053
14054         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14055         jump trampolines.
14056         
14057         * tramp-amd64.c: Fix build.
14058
14059         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14060         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14061
14062         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14063         Rename this to mono_arch....
14064         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14065
14066         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14067
14068         * mini-amd64.c (emit_call): If both the caller and the callee is
14069         guaranteed to have 32 bit addresses, emit a normal call.
14070
14071         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14072
14073         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14074         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14075         method_ptr inside delegates.
14076
14077 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14078
14079         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14080         invalidated. Fixes #73001.
14081
14082         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14083
14084         * mini-x86.c: Only use stdcall for pinvokes on windows.
14085
14086 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14087
14088         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14089         * mini-x86.c: remove unreliable __thread var offset detection,
14090         use the correct accessors and enable by default.
14091
14092 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14093
14094         * mini.c (mono_jit_free_method): Fix memory leak.
14095
14096 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14097
14098         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14099
14100 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14101
14102         * cpu-amd64.md: Fix lengths of atomic opcodes.
14103
14104 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14105
14106         * driver.c: try to not imply using ICU is any good.
14107
14108 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14109
14110         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14111         functions as inline ops.
14112
14113         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14114         some Interlocked functions as inline ops.
14115
14116         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14117
14118         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14119
14120         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14121
14122         * mini.c: Add support for OP_NOT_TAKEN.
14123
14124         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14125         structures in registers for pinvoke wrappers.
14126
14127         * mini-amd64.c: Fix warnings.
14128
14129 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14130
14131         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14132
14133         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14134
14135         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14136         address instead of loading the address from it.
14137
14138         * mini-x86.c: Add support for returning small structs in registers
14139         on Win32. Fixes part of #70864.
14140         
14141 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14142
14143         * trace.c (get_token): Improve error checking.
14144
14145 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14146
14147         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14148
14149 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14150  
14151         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14152         it can be reused for MonoClass.
14153         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14154         _LINKDEMAND.
14155
14156 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14157
14158         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14159         instead of a MonoReflectionMethod. The method information wasn't used
14160         when displaying SecurityException details (but will be now).
14161
14162 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14163
14164         * Makefile.am : windows build fix.
14165
14166 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14167
14168         * iltests.il: Add new regression test.
14169
14170         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14171         #72522.
14172
14173 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14174  
14175         * mini.c: Moved linkdemand check into helper function check_linkdemand
14176         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14177         LDFTN, LDVIRTFTN).
14178
14179 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14180
14181         * declsec.c: Added statistics counter for different kinds of 
14182         LinkDemands.
14183         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14184         (and commented) declaration.
14185         * mini.c: Added statistics counter for security Demand code 
14186         generation. Added display of security statistics.
14187
14188 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14189
14190         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14191         Fix compilation errors under gcc-2.95.
14192
14193 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14194
14195         * mini.c, driver.c: Use the new jit trampoline hashtable
14196
14197 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14198
14199         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14200
14201 2005-02-11  Martin Baulig  <martin@ximian.com>
14202
14203         * debug-mini.c (mono_debug_close_method): Free the line number array.
14204
14205 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14206
14207         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14208         icalls.
14209
14210         * mini.h: Bump AOT file format version. 
14211
14212 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14213
14214         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14215         APTC and P/Invoke.
14216         * declsec.h: Added macros to get/set lazyly initialized security 
14217         informations about assemblies. Added new enum for different type of
14218         possible LinkDemand violation. Added function to check LinkDemands.
14219         * mini.h: Added a field to MonoCompile to hold any security violation
14220         detected when JITting a method (so it can be thrown later).
14221         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14222         and CEE_CALLVIRT. Added code to throw exception at the end of
14223         mini_method_compile (note: the exception is unhandled right now).
14224
14225 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14226
14227         * mini.c, jit-icalls.c: use the managed implementation of
14228         memset for initobj and memset, to avoid managed <-> unmanaged
14229         transitions.
14230
14231 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14232
14233         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14234         optimization if it would need a GOT var.
14235
14236         * basic.cs: Add tests for constant propagation and switch statements.
14237
14238         * ssa.c: Fix out-of-range constant propagation and switch statements.
14239
14240 2005-02-09    <vargaz@freemail.hu>
14241
14242         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14243
14244 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14245
14246         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14247
14248 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14249
14250         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14251
14252 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14253
14254         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14255         arithmetic operations.
14256
14257 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14258
14259         * mini-ppc.c: add a workaround for broken user code that
14260         DllImports vararg functions with non-vararg signatures.
14261
14262 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14263
14264         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14265         meaningfull error message for assemblies written in Managed C++.
14266
14267         * tramp-amd64.c mini-amd64.h: Add support for 
14268         create_trampoline_from_token ().
14269
14270         * aot.c mini-x86.c abcremoval.c: Applied patch from
14271         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14272
14273 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14274
14275         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14276         which takes a MonoImage/token as parameter instead of a MonoMethod.
14277
14278         * aot.c: Use the new trampoline for initializing vtables.
14279
14280         * aot.c: Add support for ldfld/stfld_remote wrappers.
14281
14282         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14283         rules for compare <MEM>, IMM.
14284
14285         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14286
14287         * aot.c: Handle inherited finalizers correctly.
14288
14289 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14290
14291         * inssel.brg (stmt): Add a missing _setup_... ().
14292
14293         * aot.c: Save some parts of the class state to the AOT file and use it
14294         to recompute that state when a class is initialized.
14295
14296         * mini.c: Install AOT hooks into the runtime.
14297
14298         * mini.h: Bump AOT file format version.
14299         
14300         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14301         Fixes #72148.
14302
14303         * iltests.il: Add new test.
14304
14305 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14306
14307         * mini.c: fix typo.
14308
14309 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14310
14311         * mini.c: setup the statistical profiler in the thread attach
14312         callback to cope with the new single thread code.
14313
14314 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14315
14316         * mini-ppc.c: ensure we have enough room for the profiler
14317         calls (fixed bug#72084).
14318
14319 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14320
14321         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14322         it.
14323
14324 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14325
14326         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14327
14328 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14329
14330         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14331         to succesfully execute parrotbench).
14332         * ssapre.h: Likewise.
14333
14334 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14335
14336         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14337         variable for stores to method arguments (fixes a SSAPRE issue).
14338
14339 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14340
14341         * mini.c: handle value types in dup, fixes gen-112.cs.
14342
14343 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14344
14345         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14346         sequence for calls in dynamic methods to avoid thunks.
14347
14348 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14349
14350         * mini.c: correctly remove dynamic methods from the hashtable.
14351
14352 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14353
14354         * driver.c: Disabled SSAPRE until fix the bug that appears
14355         in IronPython's parrotbench.
14356
14357 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14358
14359         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
14360
14361         * mini.c (mono_method_to_ir): Revert the previous change.
14362         
14363         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
14364         when AOT compiling.
14365
14366         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
14367         mono_jit_info_table_find () etc. when running under valgrind.
14368
14369         * inssel.brg: Fix warnings.
14370
14371         * mini-exceptions.c: Fix warnings.
14372
14373 2005-01-31  Martin Baulig  <martin@ximian.com>
14374
14375         * driver.c (compile_all_methods_thread_main): Don't try to compile
14376         generic methods or anything which has type parameters.
14377
14378 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14379
14380         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
14381
14382         * TestDriver.cs: Add --verbose flags.
14383
14384         * graph.c ssa.c: Fix 64 bit warnings.
14385         
14386         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
14387         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
14388         Fix 64 bit warnings.
14389
14390         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
14391         variable not spotted by gcc.
14392         
14393         * mini-amd64.c inssel-amd64.brg: Applied patch from  
14394         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
14395         X86_COMPARE_MEMBASE opcodes.
14396
14397         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
14398
14399 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14400
14401         * *: MonoMethod->signature might be NULL now. You *MUST* use
14402         mono_method_signature.
14403
14404 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14405
14406         * driver.c (compile_all_methods_thread_main): Compile the methods
14407         without invoking cctors.
14408
14409 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14410
14411         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
14412         * basic-calls.cs: test for the above.
14413
14414 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14415
14416         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
14417         MonoJitInfo changes.
14418
14419 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
14420
14421         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
14422         eagerly if it contains dynamic methods.
14423         
14424         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
14425
14426         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
14427         trace, it is now computed by an icall from trace_ips.
14428         
14429         * mini-exceptions.c: Fix a warning.
14430
14431 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14432
14433         * mini-exceptions.c: don't bother getting stack trace info if
14434         it's not going to be used.
14435
14436 2005-01-27  Raja R Harinath  <rharinath@novell.com>
14437
14438         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
14439         ssapre-mini-ops.h.
14440
14441 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
14442
14443         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
14444
14445         * aot.c: Avoid calling mono_method_get_header () if not needed.
14446
14447         * mini.h: Bump AOT file format version.
14448         
14449         * mini.c (mono_emit_native_call): Allocate a GOT var here.
14450
14451         * mini.c (mono_print_tree): Print more info for calls.
14452
14453 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14454
14455         * declsec.h: Remove warning by adding missing include for marshal.h
14456
14457 2005-01-26  Martin Baulig  <martin@ximian.com>
14458
14459         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
14460         `ip' twice.
14461
14462 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
14463
14464         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
14465         flags.
14466
14467         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
14468
14469         * aot.c (mono_compile_assembly): Fix a warning.
14470
14471 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14472
14473         * declsec.c: Look for security attributes on the original MonoMethod 
14474         (and not the wrapped one). This fix permissions on icalls.
14475
14476 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14477
14478         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14479
14480         * mini.c (mono_allocate_stack_slots): Add a fixme.
14481
14482         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14483
14484 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14485
14486         * inssel.brg: optimize casts of sealed types (more
14487         optimizations waiting for fixes in remoting).
14488
14489 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14490
14491         * inssel.brg (stmt): Add another dummy rule.
14492
14493         * driver.c: Fix warnings.
14494
14495         * driver.c (mono_main): If running under valgrind, instruct glib to use
14496         the system allocation functions so valgrind can track the memory
14497         allocated by the g_... functions.
14498
14499         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
14500
14501         * mini-ops.h: Add OP_DUMMY_STORE opcode.
14502
14503         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
14504
14505         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
14506         variables in try regions.
14507
14508         * mini.c (mini_method_compile): Don't disable optimizations on large
14509         methods when AOT compiling.
14510
14511         * mini.c (mono_allocate_stack_slots): New arch independent method to 
14512         allocate stack slots. Not yet used.
14513
14514 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
14515
14516         * debug-mini.c (mono_debug_close_method): Plug some leaks.
14517
14518 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
14519
14520         * mini-ppc.c: make the branch info relative as the code
14521         buffer can be reallocated.
14522
14523 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
14524
14525         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
14526         * driver.c: Removed the AOT/security restriction. Now initialize the
14527         security manager (in metadata) if --security is used.
14528         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
14529         rather than the pointer to declarative security, when AOT is used.
14530
14531 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
14532
14533         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
14534         basic blocks, reduced intrinsic exception throwing code size.
14535
14536 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
14537
14538         * driver.c (mini_usage): Reorder the usage screen.
14539
14540 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
14541
14542         * mini.c (mono_resolve_patch_target): Fix warning.
14543
14544 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
14545
14546         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
14547         previous patch.
14548
14549         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14550
14551         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
14552         breaks the amd64 build.
14553
14554         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
14555         register allocation. Fixes #71454.
14556
14557         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14558
14559         * arrays.cs: Add new regression test.   
14560
14561 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14562
14563         * ssapre.c: Turned usage of snprintf to GString.
14564         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
14565         (I left it on by mistake in my previous commit).
14566
14567 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
14568
14569         * mini.c, cfold.c, basic-calls.cs: preserve side effects
14570         on cond branch optimization (fixes bug# 71515).
14571
14572 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14573
14574         * abcremoval.c: Fixed bug 71062.
14575         * abcremoval.h: Likewise.
14576
14577 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14578
14579         * mini.c: Added a new functionality to optimize_branches, the removal
14580         of useless basic blocks, and fixed some problem in the removal of
14581         critical edges; some utility functions added for both purposes.
14582         * ssapre.c: Added complex expression support, and fixed bug 70637.
14583         * ssapre.h: Likewise.
14584         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
14585         enabled in SSAPRE.
14586         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
14587         * driver.c: Re-enabled SSAPRE.
14588
14589 2005-01-19  Martin Baulig  <martin@ximian.com>
14590
14591         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
14592         the result of mono_get_method_constrained().
14593
14594 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
14595
14596         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
14597         manager.
14598
14599 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
14600
14601         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
14602         be detected.  Fixes #59296.
14603
14604 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14605
14606         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
14607         which can happen. Fixes #71361.
14608
14609 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14610
14611         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
14612         manager.
14613
14614 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14615
14616         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
14617         appdomain-unload.exe to fail.
14618         
14619         * mini.c: Fix some memory leaks.
14620
14621 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
14622
14623         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
14624         Fixed bug and sped up some codepaths.
14625
14626 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14627
14628         * mini.c: Fix some memory leaks.
14629
14630         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
14631         conversion.
14632
14633         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
14634
14635         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
14636         #71320.
14637
14638         * iltests.il: Add regression test for #71320.
14639
14640 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
14641
14642         * mini.c (mono_codegen): Fix installation of profiler hooks.
14643
14644         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
14645
14646 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini.h, mini.c, cfold.c: optimize access to enum
14649         readonly fields, too. Eval conditional branches if possible
14650         to perform unreachable code removal in more cases.
14651
14652 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
14653
14654         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
14655
14656         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
14657         code manager.
14658
14659         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
14660         WinXP DEP. Fixes #71244.
14661
14662 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
14663
14664         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
14665
14666 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
14667
14668         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
14669
14670 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14671
14672         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
14673         changes.
14674
14675         * mini.h: Bump AOT version.
14676
14677         * mini.h (MonoCompile): Change exvar to a hash table.
14678
14679         * mini.c: Allocate a separate exvar for each handler block.
14680
14681         * mini.c: Get rid of the computation of filter_lengths, its not needed.
14682
14683         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
14684         ex var with the pending exception and only throw if the two are equal.
14685         Fixes #68552.
14686         
14687         * exceptions.cs: Add tests for rethrow and nested catch clauses.
14688
14689         * mini-x86.c: Fix warnings.
14690
14691         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
14692         used by all the ports now.
14693
14694         * aot.c: Add write-symbols and save-temps options.
14695
14696 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
14697
14698         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
14699
14700 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
14701
14702         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
14703         operations.
14704
14705         * tramp-s390.c: Check vtable slot belongs to the domain.
14706
14707         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
14708         as per other platforms.
14709
14710         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
14711
14712 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
14713
14714         * driver.c: we don't run the Main() code in a subthread anymore.
14715
14716 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
14717
14718         * mini.c: added experimental rtc support in the statistical
14719         profiler: if the user has the permission, more accurate statistics
14720         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
14721         The MONO_RTC value must be restricted to what the linux rtc allows:
14722         power of two from 64 to 8192 Hz.
14723
14724 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
14725
14726         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
14727
14728 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
14729
14730         * mini-ppc.c: better icache flush for smp.
14731
14732 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
14733
14734         * mini-amd64.c (emit_move_return_value): Fix memory leak.
14735
14736         * mini-x86.c (get_call_info): Add the get_call_info () code from the
14737         amd64 port, not yet used.
14738
14739 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14740
14741         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
14742         a struct type.
14743
14744 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14745
14746         * driver.c: Added --security option to activate the security manager.
14747         Right now this will allow code generation for declarative demands and
14748         is disabled when AOT is specified.
14749         * mini.c: Add code generation for declarative security demands.
14750         * mini.h: Add mono_use_security_manager as an extern gboolean.
14751
14752 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14753
14754         * aot.c (mono_compile_assembly): Speed up compilation a bit by
14755         emitting more dense assembly code.
14756
14757         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
14758         exception throwing stuff.
14759
14760 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
14761
14762         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
14763         dead code.
14764
14765         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
14766         left in by mistake.
14767
14768         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
14769         fixed.
14770
14771         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
14772
14773         * tramp-*.c: Only patch vtable slots if the object is in the current
14774         domain. Fixes appdomain-unload.exe.
14775
14776         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
14777         
14778         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
14779         x86 branch.
14780
14781 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14782
14783         * mini.c (reverse_branch_op): New helper function.
14784
14785         * mini.c (optimize_branches): Run the new optimization only on 
14786         platforms which support it. Also reverse all kinds of branches.
14787
14788         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
14789
14790         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
14791         a throw statement.
14792
14793         * mini.c (optimize_branches): Reverse not-equals branches if the false
14794         bblock is a throw. This happens a lot of time with argument checking in
14795         corlib.
14796
14797         * mini.c (mono_codegen): Add support for placing basic blocks after
14798         the function epilogue.
14799
14800         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
14801         function epilogue.
14802         
14803 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
14804
14805         * mini.c (setup_stat_profiler): Only set this up if the platform
14806         supports ITIMER_PROF.
14807
14808 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14809
14810         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
14811         previous patch.
14812
14813         * inssel.brg: Fix a warning.
14814
14815 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
14816
14817         * mini.c: added support for statistical profiler 
14818         (run with: --profile=default:stat).
14819
14820 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
14821
14822         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
14823
14824         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
14825
14826         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
14827         related to global registers from the amd64 port.
14828
14829 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
14830
14831         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
14832
14833         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
14834         with global registers.
14835         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
14836
14837         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
14838
14839 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
14840
14841         * debug-mini.c (encode_value): Fix off-by-one.
14842
14843         * aot.c (encode_value): Likewise.
14844
14845         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
14846
14847 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
14848
14849         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
14850         AOT.
14851
14852         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
14853         
14854         * aot.c (emit_method_info): Increase size of temp buffer.
14855
14856         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
14857         the AOT case.
14858
14859 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
14860
14861         * aot.c (emit_method_info): Fix build.
14862         
14863         * aot.c: Further rework of the AOT file format to reduce the size of
14864         the method info data.
14865
14866         * mini.h: Bump AOT file format version.
14867
14868 2004-12-27  Martin Baulig  <martin@ximian.com>
14869
14870         * mini.c (mini_get_method): New static method; call
14871         mono_get_method_full() and mono_get_inflated_method().
14872         (mono_method_to_ir): Use mini_get_method() instead of
14873         mono_get_method_full(). 
14874
14875 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
14876
14877         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
14878
14879 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
14880
14881         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
14882
14883         * inssel-amd64.brg: Add some optimization rules.
14884
14885 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
14886
14887         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
14888         standard not GC'd stuff is fine.
14889
14890 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
14891
14892         * aot.c: Rework the AOT file format to get rid of most of the global
14893         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
14894
14895         * mini.h: Bump AOT file format version.
14896         
14897 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
14898
14899         * mini.h: Bump AOT file format version.
14900
14901         * aot.c (mono_aot_is_got_entry): New function to determine if an 
14902         address is inside a GOT.
14903
14904         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
14905
14906         * cpu-pentium.md: Increase the maximum size of some instructions which
14907         might involve a got access.
14908         
14909         * mini.c (get_method_from_ip): Another debug helper function.
14910
14911         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
14912         when got var accesses are created during the decompose phase.
14913
14914         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
14915
14916         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
14917         argument mini_compile_method and to MonoCompile, and use this to
14918         determine whenever a given method is compiled for AOT. This allows the
14919         other methods compiled during AOT compilation to be free of AOT stuff,
14920         so the backends does not need to add special support for them by
14921         creating a fake GOT etc.
14922
14923         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
14924         longer needed.
14925
14926 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
14927
14928         * mini.c (mono_method_to_ir): It turns out that some of the
14929         x-appdomain wrappers are lax with types, so just ignore this for
14930         all wrappers.
14931
14932         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
14933         at the vtable->klass. If it is non-shared code we can just use the
14934         vtable.
14935
14936 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
14937
14938         * mini-ppc.c: access MonoDomain from tls, too.
14939
14940 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
14941
14942         * declsec.c: Removed unused variable (and related warning ;-)
14943
14944 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
14945
14946         * iltests.il: New test for LDELEMA on an array of ref types.
14947
14948         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
14949         all ldelema's on reftypes.
14950         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
14951         it was the wrong place to put it.
14952
14953         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
14954         register to pop to make this cleaner, at the request of Paolo.
14955
14956 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
14957
14958         * mini-ops.h (OP_GETHASHCODE): New op.
14959
14960         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
14961
14962         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
14963         operation.
14964
14965         For a microbenchmark, this reduces the cost of Hashtable.get_Item
14966         by 25%.
14967         
14968         * mini-x86.c (mono_arch_output_basic_block): Rather than
14969
14970         add ebp, 4
14971
14972         Emit
14973
14974         pop edx
14975
14976         The first is 3 bytes while the second is 1. This saves 36 kb on
14977         mscorlib, quite a big saving. When bootstraping mcs, I was able to
14978         see a small boost because of icache locality.
14979
14980         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
14981
14982 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
14983
14984         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
14985         started code sharing with the generic code.
14986
14987 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
14988
14989         * mini-ppc.c, cpu-g4.md: added code for direct access to
14990         tls data slots.
14991
14992 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
14993
14994         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
14995          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
14996         to OP_TLS_GET.
14997
14998 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
14999
15000         * declsec.c|h: Added functions to cache the declarative stack modifiers
15001         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15002         structure.
15003         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15004         created. Register internal calls for System.Security.SecurityFrame::
15005         _GetSecurityFrame and _GetSecurityStack.
15006         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15007         the definitions for the new stack walk/callback mechanism.
15008         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15009         first security frame for LinkDemands and InheritanceDemands) and
15010         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15011         from lupus.
15012         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15013         walk initialization (lupus).
15014
15015 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15016
15017         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15018         idiom.
15019         (handle_loaded_temps): Do not create a temporary variable for
15020         things that we know are temps. They will never be modified.
15021         (mono_spill_call): Set MONO_INST_IS_TEMP
15022         (mono_emulate_opcode): ditto
15023         (emit_tree): ditto
15024         (mono_method_to_ir.CEE_DUP): ditto
15025
15026 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15027
15028         * mini.c (type_to_eval_stack_type): Make this handle the void type
15029         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15030         (emit_tree): use ip_in_bb to special case some common idioms
15031         Update all callers to pass in the IP.
15032         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15033
15034         This gives us a nice 2% speedup in mcs bootstrap.
15035
15036         * mini-x86.c (peephole_pass): Peephole pass to make
15037         mov  [foo], eax
15038         push [foo]
15039
15040         into
15041
15042         mov [foo], eax
15043         push eax
15044
15045         * mini.c (ip_in_bb): new method.
15046         (mono_method_to_ir): use this method rather than doing the hash
15047         lookup ourselves.
15048
15049         * linear-scan.c (mono_linear_scan): When expiring actives, you
15050         don't need to keep around variables that expire on this
15051         instruction. This makes it so that:
15052              a = b + 1
15053         will turn into:
15054              store (ebx add (ebx, 1))
15055         which will become
15056              add ebx, 1
15057
15058 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15059
15060         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15061         combination to avoid doing two copies. Fix up problems with previous
15062         patch.
15063
15064         * mini.c: Fix 64 bit warnings.
15065
15066         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15067
15068 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15069
15070         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15071         changes from the x86 code.
15072
15073         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15074
15075 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15076
15077         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15078         throwing code to reduce its size, unify the AOT and non-aot code and 
15079         get rid of relocations in the AOT case.
15080
15081         * mini-x86.h mini.c exceptions-x86.c 
15082         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15083         raise corlib exceptions which doesn't require relocations in the 
15084         caller.
15085
15086         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15087
15088 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15089
15090         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15091         needed.
15092
15093         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15094         in the AOT case.
15095
15096 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15097
15098         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15099         with add function when used from Inc/dec atomic 
15100         functions. Re-enabled optimization on x86.
15101         * mini-ops.h: renamed atomic_add functions to
15102         allow _add to match the Interlocked::Add and
15103         _add_next to match Interlocked::Inc/Dec.
15104
15105 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15106
15107         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15108         linking of BBs to the end BB, and enabled SSAPRE also with
15109         consprop and copyprop (which was prevented by that bug).
15110
15111 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15112
15113         * mini-x86.c: disabling the Interlocked optimizing code. 
15114
15115 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15116
15117         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15118         file version check.
15119         
15120 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15121
15122         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15123         interlocked optimization due lack of support on x86, rewrote 
15124         exchange to take into account that base may be in eax.
15125         
15126         xsp works again; activated Interlocked optimizing code.
15127         
15128 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15129
15130         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15131
15132 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15133
15134         * mini-ops.h: Add new opcodes.
15135
15136         * mini.h: Add new patch types. Add got_var to MonoCompile.
15137
15138         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15139         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15140         make it work with all kinds of patchable code.
15141
15142         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15143         address of the GOT, and referencing entries in the GOT.
15144
15145         * mini.c: Add code to load the GOT address if needed by an opcode.
15146
15147         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15148         independent AOT code on the x86 using an elf-style Global Offset Table.
15149
15150 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15151
15152         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15153
15154 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15155
15156         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15157         when running xsp.
15158
15159 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15160
15161         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15162         of Interlocked:Increment/Decrement/Add as inline ops.
15163         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15164
15165 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15166
15167         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15168         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15169
15170 2004-12-12  Duncan Mak  <duncan@ximian.com>
15171
15172         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15173         again. `patch_info->table_size' is no longer valid after Zoltan's
15174         commit #37636.
15175
15176 2004-12-12  Martin Baulig  <martin@ximian.com>
15177
15178         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15179         if we are the "real" method, ie. not an inlined method inside it.
15180
15181 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15182
15183         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15184         before we look in the special fields table. This fixes
15185         ../tests/thread-static-init.cs.
15186
15187 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15188
15189         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15190         for Array get_Rank and get_Length. Fixes bug #70465.
15191
15192 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15193
15194         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15195         separate structure to reduce the size of MonoJumpInfo.
15196
15197 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15198
15199         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15200
15201 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15202
15203         * mini.c (mini_get_inst_for_method): Changed to allow ports
15204         to return a MonoInst instead of opcode 
15205         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15206         
15207         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15208         Allow ports to return a created MonoInst instead of op-code, will enable
15209         new optimizations.
15210         (renamed mini_get_opcode_for_method to better reflected the functionality)
15211
15212 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15213
15214         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15215
15216 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15217
15218         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15219         Fixes #69985.
15220
15221 2004-12-08  Martin Baulig  <martin@ximian.com>
15222
15223         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15224         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15225
15226 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15227
15228         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15229         correctly.
15230
15231         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15232         arithmetic.
15233
15234 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15235
15236         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15237
15238 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15239
15240         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15241         bug introduced by the previous patch.
15242
15243 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15244
15245         * mini-ppc.c, objectc.cs: handle large structs passed by value
15246         (fixes bug #69972).
15247
15248 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15249
15250         * mini-ppc.c: OP_ARGLIST implementation from
15251         Geoff Norton  <gnorton@customerdna.com>.
15252
15253 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15254
15255         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15256         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15257
15258 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15259
15260         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15261
15262 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15263
15264         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15265         support.
15266
15267 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15268
15269         * mini-sparc.c: Zero out localled-ed memory.
15270
15271         * iltests.il: Add tests for zeroing out localloc-ed memory.
15272
15273 2004-12-04  Martin Baulig  <martin@ximian.com>
15274
15275         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15276         mono_method_get_signature_full().       
15277
15278 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15279
15280         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15281         and some utility functions (always for SSAPRE), integrated SSAPRE.
15282         * mini.h: Likewise.
15283         * driver.c: Added ssapre option.
15284         * ssa.c: Small fix on OP_ARG handling.
15285         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15286         * Makefile.am: Likewise.
15287
15288 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15289
15290         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15291         now in the xp code.
15292
15293         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15294         icall.
15295
15296 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15297
15298         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15299         
15300         * cpu-s390.md : Increase instruction length of oparglist.
15301
15302         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15303
15304 2004-11-30  Martin Baulig  <martin@ximian.com>
15305
15306         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15307         virtual generic methods.  We call a special helper_compile_generic_method()
15308         icall to retrieve the method from the vtable, inflate and compile
15309         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15310
15311         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15312
15313 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15314
15315         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15316
15317 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15318
15319         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15320         Fixes #69929.
15321
15322 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15323
15324         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15325         platforms with PIC aot.
15326
15327 2004-11-28  Martin Baulig  <martin@ximian.com>
15328
15329         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15330         Fixes gen-112.cs.
15331
15332 2004-11-28  Martin Baulig  <martin@ximian.com>
15333
15334         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15335         the result of mono_type_get_underlying_type() to check whether
15336         we're byref.
15337
15338 2004-11-26  Martin Baulig  <martin@ximian.com>
15339
15340         * mini.c
15341         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15342         in the g_assert().
15343
15344 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15345
15346         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15347         the same way as the other arguments so they won't get clobbered.
15348
15349         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15350         calls through R11 since it is clobbered by the trampoline code.
15351
15352 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15353
15354         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15355         pick up in-tree mscorlib.dll.
15356
15357 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15358
15359         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
15360
15361         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
15362         runtime data/code are now stored in a table similar to the GOT in ELF. 
15363         This allows the code itself to be position independent.
15364
15365         * aot.c: Fix loading of referenced assemblies after the lazy assembly
15366         loading changes.
15367
15368         * aot.c: Attach ELF type (object/function) directives to all global
15369         symbols.
15370
15371         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
15372
15373         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
15374
15375         * mini-amd64.h: Turn on PIC AOT code.
15376
15377         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
15378         returning the offset within an OP_AOTCONST instruction where the GOT
15379         offset needs to be added.
15380
15381         * mini.h: Bump AOT file format version.
15382
15383 2004-11-25  Martin Baulig  <martin@ximian.com>
15384
15385         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
15386         uninflated generic methods.
15387
15388 2004-11-25  Martin Baulig  <martin@ximian.com>
15389
15390         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
15391
15392 2004-11-24  Martin Baulig  <martin@ximian.com>
15393
15394         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
15395         original klass (this only applies for generic instances).
15396
15397 2004-11-24  Martin Baulig  <martin@ximian.com>
15398
15399         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
15400         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
15401         that array).
15402
15403 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15404
15405         * mini.c (mono_method_to_ir): Disable inlining for methods containing
15406         localloc. Fixes #69678.
15407
15408         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
15409         
15410 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
15411
15412         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
15413         used SSE registers on pinvoke calls. Fixes #69774.
15414
15415 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
15416
15417         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
15418         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
15419
15420 2004-11-23  Raja R Harinath  <rharinath@novell.com>
15421
15422         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
15423         Refer directly to the mcs/ tree.
15424
15425 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15426
15427         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
15428         Check if a trampoline for a synchronized method is required. 
15429
15430 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
15431
15432         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
15433         with localloc if needed. Throe arithmetric exception in
15434         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
15435         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
15436
15437 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
15438
15439         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
15440         types before switching on type.  Fixes #69622.
15441
15442 2004-11-19  Raja R Harinath  <rharinath@novell.com>
15443
15444         * Makefile.am (check-local): New.  Integrate into 'make check'.
15445         (MCS,RUNTIME): Define using in-tree mono and mcs.
15446         (ILASM): New.
15447         (%.exe): Use $(ILASM).
15448
15449 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
15450
15451         * mini-ppc.c: adjust initial prolog size (bug #69691).
15452
15453 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
15454
15455         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
15456         #69664.
15457
15458 2004-11-17  Raja R Harinath  <rharinath@novell.com>
15459
15460         * Makefile.am (clean-local): Rename from 'clean'.
15461
15462 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15463
15464         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
15465         to mono_arch_is_int_overflow. 
15466         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
15467         SIGFPE events.
15468
15469 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15470
15471         * declsec.c|h: New files to support declarative security attributes.
15472         Added function to check if a method has (applicable) security.
15473         * mini.c|h: Add check for declarative security attributes in
15474         mono_method_check_inlining.
15475         * Makefile.am: Added declsec.c and declsec.h to the build.
15476
15477 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15478
15479         * mini.c, mini.h: update to keep dynamic code info per-domain.
15480
15481 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15482
15483         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
15484         (mini_init): Get rid of it from here too.
15485
15486 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
15487
15488         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
15489         implemented OP_RETHROW (patch by Geoff Norton
15490         <gnorton@customerdna.com>).
15491
15492 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
15493
15494         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
15495         between appdomains.  Fixes appdomain-unload on PPC.
15496
15497 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
15498
15499         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15500         mini-exceptions.c: handle the new wrapper types.
15501         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
15502         token value as a MonoClass* when compiling a wrapper.
15503         mono_jit_create_remoting_trampoline now takes an additional
15504         MonoRemotingTarget parameter.
15505         
15506 2004-11-10  Martin Baulig  <martin@localhost>
15507
15508         * mini.c (mono_method_to_ir): Use `generic_container->context'
15509         rather than creating a new one.
15510
15511 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15512
15513         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
15514
15515         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
15516
15517 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
15518
15519         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
15520         the experimental aot cache stuff.
15521
15522 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15523
15524         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15525         mini-exceptions.c: update to exception clause structure changes.
15526
15527 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15528
15529         * exceptions-x86.c (throw_exception): Fix warnings.
15530
15531         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
15532         for OP_RETHROW.
15533
15534 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15535
15536         * exceptions-sparc.c (get_throw_exception): Really fix this.
15537
15538 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15539
15540         * tramp-*.c: we no longer support icalls without wrappers, so
15541         a bit of code can be removed here
15542
15543 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
15544
15545         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
15546         patch.
15547
15548         * cpu-sparc.md: Add op_rethrow.
15549
15550         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
15551
15552         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
15553
15554         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
15555         * mini-ops.h: Add OP_RETHROW.
15556
15557         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
15558
15559         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
15560
15561 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15562         
15563         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
15564         Makes the output much easier to read
15565
15566 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
15567
15568         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
15569         prevents another huge leak when compiling with ssa. Secondly, the
15570         performance of doing this rather than freeing the lists is much
15571         better. GList does a lock every time you allocate a list link,
15572         so that it can use a memory pool. So, it is better to just use
15573         a memory pool of our own.
15574         
15575         * ssa.c, linear-scan.c: replace g_list_remove_link with
15576         g_list_delete.  The remove one does not free the GList, so we were
15577         leaking memory. On -O=all --compile-all with corlib, this cut down
15578         3 MB of allocations.
15579
15580 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15581
15582         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
15583
15584         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
15585
15586         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
15587         into a new function mono_create_jit_trampoline ().
15588
15589 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15590
15591         * trace.c (get_spec): Allow tracing of classes without a namespace.
15592
15593 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
15594
15595         * mini.c: Fix pointer overwrite in mini_method_compile.
15596
15597 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
15598
15599         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
15600         The darwin ABI needs some special handling for 1 and 2 byte structs
15601         Lets use lbz/lhz instead of lwz everywhere.
15602         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
15603         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
15604         Use stb/sth for the former, and put the latter always on stack instead of in
15605         argument registers.
15606
15607 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
15608
15609         * trace.c (is_filenamechar): Add '_'.
15610
15611 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
15612
15613         * mini-s390.c: Fix prolog length to allow for large trace requirements.
15614
15615         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
15616
15617 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
15618
15619         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
15620         depends on libmonogc. Fixes #68805.
15621
15622 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
15623
15624         * mini.c (mono_jit_free_method): Provide extra information for
15625         this error.  Currently this leaks, but will be turned into a
15626         developer option in the future.
15627
15628 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
15629
15630         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
15631
15632 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15633
15634         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
15635         boundary. Fixes reading of PATCH_INFO_R4 and R8.
15636         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
15637
15638 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
15639
15640         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
15641         trampolines for AOT code.
15642
15643 2004-10-22    <vargaz@freemail.hu>
15644
15645         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
15646         constructed types. Fixes #68136.
15647
15648 2004-10-21  Martin Baulig  <martin@ximian.com>
15649
15650         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
15651         if it returns true, unwind the stack to the call instruction.
15652
15653 2004-10-21    <vargaz@freemail.hu>
15654
15655         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
15656
15657         * mini.h: Bump AOT version number.
15658
15659         * objects.cs: Add another test for unbox trampolines.
15660
15661         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
15662         valuetype methods.
15663
15664 2004-10-20    <vargaz@freemail.hu>
15665
15666         * driver.c: Add SHARED to the set of optimizations tested.
15667
15668         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
15669
15670         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
15671         used by CEE_NEWARR.
15672
15673         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
15674
15675 2004-10-20  Martin Baulig  <martin@ximian.com>
15676
15677         * mini-exceptions.c (mono_handle_exception): Call
15678         mono_debugger_handle_exception() to tell the debugger about
15679         catch/finally clauses.
15680
15681 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15682
15683         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
15684
15685         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
15686         #68447.
15687
15688 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
15689
15690         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
15691         methods as their native size, fixed bug #57543, #57545.
15692         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
15693         This saves a temporary register and mullw call down into 1 (minor perf
15694         increase for cases like sum = sum * 5;  This use to translate into:
15695             li r11,5
15696             mullw r28,r28,r11
15697         It now translates to
15698             mulli r28,r28,5
15699
15700 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
15701
15702         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
15703         #68388.
15704
15705 2004-10-11  Martin Baulig  <martin@ximian.com>
15706
15707         * mini.c (mono_method_to_ir): If we're a generic method, get the
15708         MonoGenericContainer from our MonoMethodNormal and create a
15709         MonoGenericContext from it.
15710
15711 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
15712
15713         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
15714
15715         * basic-long.cs: Add test for checked i8->i2 cast.
15716
15717 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15718
15719         * inssel-ppc.brg: added a couple of speedup rules.
15720
15721 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
15722
15723         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
15724         to speed up rebuilds.
15725
15726 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15727
15728         * mini-s390.c: Minor fix to OP_OR_IMM.
15729
15730 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
15731
15732         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
15733         better. Fixes appdomain-unload.exe on sparc.
15734
15735 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
15736
15737         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
15738         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
15739         see bug 67324.
15740
15741 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
15742
15743         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
15744
15745 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
15746
15747         * mini.c: Always generate a field read/write wrapper for members
15748         of the class MarshalByRefObject since the actual instance could
15749         be a CBO.
15750
15751 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15752
15753         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
15754
15755 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15756
15757         * driver.c mini.h trace.c: Move the setting of the main assembly into
15758         a separate function called mono_trace_set_assembly () and call it after
15759         actually loading the main assembly. Fixes #66872.
15760
15761 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
15762
15763         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
15764         using the code manager.
15765
15766 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
15767
15768         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
15769
15770 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15771
15772         * cpu-amd64.md: Fix bug in previous patch.
15773         
15774         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
15775         #66650.
15776
15777 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
15778
15779         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15780         mini-exceptions.c: updates for changed stack walk interface.
15781
15782 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15783
15784         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
15785
15786 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15787
15788         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
15789
15790 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15791
15792         * driver.c (mini_regression_list): Do not call mono_assembly_close 
15793         since assemblies can't be unloaded.
15794         
15795 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15796
15797         * cpu-amd64.md: Fix more instruction lengths.
15798
15799         * cpu-amd64.md: Fix lengths of some instructions.
15800
15801 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
15802
15803         * inssel.brg: Make the array ldelema check aot friendly.
15804
15805 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15806
15807         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
15808
15809         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
15810
15811 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15812
15813         * mini-x86.c: Fix build.
15814
15815         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
15816         mono_type_get_underlying_type () helper function to simplify code.
15817         
15818 2004-09-09  Martin Baulig  <martin@ximian.com>
15819
15820         * mini-amd64.c: Don't access `type->data.klass' directly, call
15821         mono_class_from_mono_type() instead since the type may be a
15822         generic instance.
15823
15824 2004-09-09  Martin Baulig  <martin@ximian.com>
15825
15826         * mini-amd64.c (get_call_info): Fix support for generic instances.
15827         (add_valuetype): Use mono_class_from_mono_type() to get the class
15828         since we can be a generic instance.
15829
15830 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
15831
15832         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
15833
15834 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15835
15836         * liveness.c: reset spill costs on each scan: bug 62107
15837
15838 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
15839
15840         * exceptions-sparc.c (mono_arch_find_jit_info): remove
15841         unnecessary line that doesn't compile
15842
15843 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15844
15845         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
15846         trampolines, make them call an error function so people can fix their
15847         code.
15848
15849 2004-09-06  Martin Baulig  <martin@ximian.com>
15850
15851         * mini.c (mono_method_to_ir): When initializing locals, handle a
15852         generic instances like a valuetype if it's a valuetype and like a
15853         class if it's a class.
15854
15855 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15856
15857         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
15858         stack. Fixes #64674.
15859
15860         * exceptions.cs: Add test for unwinding of call arguments.
15861
15862 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
15863
15864         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
15865         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
15866         set the carry/borrow flag). The sparc and s390 implementations
15867         can now use optimized versions (and simplify the code). ppc bugfixes.
15868
15869 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
15872
15873 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
15874
15875         * inssel-amd64.brg: Remove leftover 32 bit rule.
15876
15877         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
15878
15879 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
15880
15881         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
15882         mono_arch_find_jit_info functions into a new function. Fix a memory
15883         leak.
15884
15885         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
15886         refactored code.
15887         
15888 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15889
15890         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
15891         as well.
15892         
15893         * exceptions.cs: Add array size tests.
15894
15895         * mini.c: Allocate a separate icall wrapper for each arity of 
15896         mono_array_new_va. Fixes #59509.
15897
15898         * exceptions.cs: Add testcase for 64578.
15899
15900         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
15901
15902         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
15903         
15904 2004-09-02  Martin Baulig  <martin@ximian.com>
15905
15906         * mini.c (mono_method_to_ir): When initializing the locals, call
15907         handle_initobj() on the generic instance itself, not its
15908         underlying type.
15909
15910 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15911
15912         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
15913         MonoJitInfo for dynamic methods.
15914
15915         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
15916
15917         * mini.c: Add support for freeing JIT data for dynamic methods.
15918         
15919 2004-09-01  Martin Baulig  <martin@ximian.com>
15920
15921         * mini-x86.c (is_regsize_var): Added support for generic
15922         instances.
15923         (mono_arch_emit_prolog): Make this compile again, use
15924         `x86_push_imm_template (code)'.
15925
15926 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
15927
15928         * mini-x86.c: make all push_imm instructions that get
15929         patched always emit the long form
15930
15931 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
15932
15933         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
15934         in a per-domain hash.
15935
15936         * mini-amd64.c (merge_argument_class_from_type): Handle generic
15937         types.
15938
15939 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
15942         work.
15943         
15944         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
15945         work.
15946
15947         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
15948         Beginnings of SSE2 support.
15949
15950         * exceptions.cs: Add more tests for checked int<->uint casts.
15951
15952 2004-08-28  Martin Baulig  <martin@ximian.com>
15953
15954         * mini-x86.c (mono_arch_instrument_epilog): Added support for
15955         generic instances.
15956
15957         * mini.c
15958         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
15959         Handle generic instances recursively.
15960
15961 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
15962
15963         * iltests.il: test for conv.u8 on a constant
15964
15965 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
15966
15967         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
15968         LCONV_x4 (shrun_32 (membase)).
15969
15970 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
15971
15972         * inssel-x86.brg: c&p rules for push/setret of long
15973
15974 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
15975
15976         * inssel-x86.brg: c&p rules for compare (base, regvar) and
15977         compare (regvar, base)
15978
15979         * inssel-x86.brg: more burg love
15980
15981         * inssel.brg: more cleanup
15982
15983         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
15984
15985 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
15986
15987         * basic-long.cs, basic-calls.cs: new tests for optimization.
15988
15989 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
15990
15991         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
15992         patch.
15993
15994 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
15995
15996         * mini-amd64.c (read_tls_offset_from_method): Add another case.
15997         
15998 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
15999
16000         * inssel.brg (mini_emit_memcpy): use 
16001         NO_UNALIGNED_ACCESS to disable memcpy optimization
16002
16003 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16004
16005         * mini-amd64.c: Handle generic types in various places.
16006
16007         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16008
16009 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16010
16011         * mini.c (handle_box): Fix warning.
16012
16013         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16014
16015         * mini-amd64.h: Enable the emit_state optimization.
16016
16017         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16018
16019         * mini-amd64.c: Add some new 64 bit peephole opts.
16020
16021         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16022
16023         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16024
16025         * mini-amd64.c: Register allocator fixes.
16026
16027         * mini.c: Add an optimization to emit_state to avoid allocation of new
16028         registers on some platforms.
16029
16030 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16031
16032         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16033
16034         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16035         allocation. Fixes #63085.
16036
16037         * basic-long.cs: Add new regression test.
16038
16039         * mini-amd64.c: Register allocator improvements.
16040
16041 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16042
16043         * mini-amd64.c (read_tls_offset_from_method): Add another code
16044         sequence.
16045
16046         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16047         instruction sequence for nullifying class init trampolines.
16048
16049         * objects.cs: Add new regalloc test.
16050
16051         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16052
16053 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16054
16055         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16056         
16057         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16058         arguments.
16059
16060         * driver.c: Fix profiling after TLS changes.
16061         
16062         * driver.c (mono_main): Set mono_stats.enabled if needed.
16063
16064         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16065         CEE_BOX.
16066
16067 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16068
16069         * mini-x86.c: use a 1 op rather than a 2 op tls access
16070         instruction -> faster.
16071
16072 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16073
16074         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16075         x86 backend.
16076
16077 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16078
16079         * exceptions-sparc.c (throw_exception): fix typo
16080
16081 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16082
16083         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16084         set tree->dreg correctly with tls. Allow any
16085         register to be used.
16086
16087         * mini-x86.c (read_tls_offset_from_method): add new code
16088         generation pattern seen with GCC.
16089
16090
16091 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16092
16093         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16094         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16095         exceptions-sparc.c: fix some performance issues in exception
16096         handling and setting of the stack trace for exceptions that were
16097         already thrown.
16098
16099 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16100
16101         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16102         x86 backend.
16103         
16104         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16105         registers.
16106
16107 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16108
16109         This patch inlines tls access, when possible.
16110         
16111         * mini.h: new arch functions for TLS intrinsics.
16112         All platforms updated with a stub.
16113
16114         * mini.c: use the new intrinsics
16115
16116         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16117         arch specific intrinsic for tls variables
16118
16119 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16122         under windows.
16123
16124 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16125
16126         * mini.c: thread local allocation
16127
16128 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16129
16130         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16131
16132         * Makefile.am: Link against the static version of libmonogc.
16133         
16134         * Makefile.am: Link the static versions of the convenience libraries
16135         into the mono executable.
16136
16137         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16138
16139 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16140
16141         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16142         on integer overflow.
16143
16144         * mini-amd64.c: Reorganize function call code.
16145
16146         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16147
16148 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16149
16150         * inssel-x86.brg: use xor eax,eax.
16151         
16152         * basic.cs: new tests
16153
16154 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16155
16156         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16157         in exception throwing code.
16158         
16159 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16160
16161         * inssel-x86.brg: use xor esi,esi.
16162
16163 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16164
16165         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16166         can trace methods compiled during mini_init () too.
16167
16168         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16169         CEE_CONV_U4.
16170
16171 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16172
16173         * Makefile.am: static link on x86 (r=zoltan)
16174
16175 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16176
16177         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16178         code since it causes some programs to fail.
16179
16180 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16181
16182         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16183
16184 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16185
16186         * mini.c: ovfops_op_map - add STACK_OBJ case for
16187         CONV_I 
16188         * basic.cs: add test_0_pin_string as test
16189         case for above.
16190
16191 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16192
16193         * Makefile.am: build C# if srcdir != builddir
16194
16195 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16196
16197         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16198         fall-through blocks.
16199
16200 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16201
16202         * driver.c: enable loop by default again and include abcrem in -O=all.
16203
16204 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16205
16206         * iltests.il: Add some localloc tests.
16207
16208         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16209
16210         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16211         Fixes #62574.
16212
16213         * inssel-amd64.brg: Add some optimizations.
16214
16215         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16216         for gcc-3.4.
16217
16218         * Makefile.am: Statically link mono against libmono on AMD64.
16219         
16220         * mini-amd64.c inssel-amd64.brg: Optimizations.
16221
16222 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16223
16224         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16225
16226         * tramp-amd64.c: Patch calling code in trampolines.
16227
16228 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * mini-amd64.c: pinvoke struct passing fixes.
16231
16232 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16233
16234         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16235         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16236
16237 2004-08-05  Duncan Mak  <duncan@ximian.com>
16238
16239         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16240         CEE_LDELEM_ANY.
16241
16242 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16243
16244         * mini-amd64.c (emit_move_return_value): Move return value for normal
16245         calls too.
16246
16247 2004-08-05  Martin Baulig  <martin@ximian.com>
16248
16249         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16250         `type->type'; just modify `type' itself when dealing with enums
16251         and generic instances.
16252         (check_call_signature): Make `simple_type' a `MonoType *'.
16253
16254 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16255
16256         * mini.c: Use OP_PADD to add offsets to addresses.
16257
16258         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16259
16260 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16261
16262         * mini-sparc.c (mono_arch_emit_epilog): fix check
16263         for folding last op into restore instruction
16264
16265 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16266
16267         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16268         helper methods using the code manager.
16269         
16270         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16271
16272         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16273
16274 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16275         
16276         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16277           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16278
16279         * mini-s390.c: fix tail processing
16280
16281 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16282
16283         * mini-ppc.c: mul.ovf.un exception name fix.
16284
16285 2004-08-03  Martin Baulig  <martin@ximian.com>
16286
16287         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16288         instances; before jumping to `handle_enum', also modify `ptype'.
16289
16290 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16291
16292         * cpu-sparc.md: fcall maximal length too small.
16293
16294 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16295
16296         * mini-amd64.c mini.h: Add initial support for passing/returning 
16297         structures to/from pinvoked methods.
16298
16299 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16300
16301         * mini-ppc.c: reg allocator fix.
16302
16303 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16304
16305         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16306
16307         * inssel.brg: Optimize memset on 64 bit machines.
16308
16309         * mini-amd64.c: Fix some vararg cases.
16310
16311 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16312
16313         * mini-s390.c: Corrected macro in emit_float_to_int
16314
16315         * s390-abi.cs: Tests to exercise the s390 ABI
16316
16317 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16318
16319         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16320         caller saved regs.
16321
16322         * basic.cs: Add a test for add.ovf.un.
16323
16324 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16325
16326         * mini-sparc.c: add case for OP_IDIV_UN
16327
16328 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16329
16330         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16331         
16332         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16333
16334 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16335
16336         * basic.cs: regression tests.
16337
16338         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16339         regressions.
16340
16341 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16342
16343         * basic.cs: Add a new test.
16344
16345         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16346         and AOT. Various fixes and optimizations.
16347
16348         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16349
16350 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16351
16352         * mini-ppc.c: make sure temp regs are not used for global reg
16353         allocation.
16354
16355 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16356
16357         * cpu-sparc.md: conv_i8 fix for 64bits
16358
16359         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
16360
16361 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
16362         
16363         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
16364         add opcode for cmp BYTE PTR [eax], imm.
16365
16366         * inssel.brg: Make memcpy and memset takes bases.
16367
16368 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16369
16370         * *-amd64.*: More AMD64 work.
16371         
16372 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16373
16374         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
16375         add a compare-not-equal opcode.
16376         
16377 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16378
16379         * mini.c: Use mono_init_from_assembly instead of mono_init.
16380         
16381 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16382
16383         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
16384
16385         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
16386
16387         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
16388
16389         * inssel.brg: 64 bit fixes.
16390
16391         * mini.h (MonoCallInst): Add some AMD64 specific data.
16392
16393         * mini.h: Add some OP_P opcodes.
16394
16395 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16396
16397         * basic.cs: tests for 61797 and 61740
16398
16399 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16400
16401         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
16402         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
16403
16404 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
16405
16406         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
16407
16408         * *-amd64*.*: Ongoing AMD64 work.
16409
16410 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
16411
16412         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
16413
16414         * *-amd64*: Ongoing AMD64 work.
16415
16416         * mini-arch.h: Add AMD64 support.
16417
16418         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
16419
16420         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
16421
16422         * mini-ops.h: Add new opcodes.
16423
16424         * Makefile.am: Add AMD64 support.
16425
16426         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
16427         rules into the inssel-long*.brg files.
16428
16429         * *-amd64.*: Add beginnings of AMD64 backend.
16430
16431 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
16432
16433         * mini.c (print_dfn): commenting out the code that prints
16434         the cil. With -O=deadce, this makes -v -v crash.
16435         
16436         * cpu-pentium.md: make checkthis have a length of 2
16437
16438 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
16439
16440         * mini-sparc.h: fix implementations of __builtin
16441         functions for Sun compiler for V9.
16442
16443 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16444
16445         * mini.c: use the new stelem.ref wrapper
16446         * exceptions.cs, arrays.cs: new stelem.ref tests
16447
16448 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16449
16450         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
16451         new XSP should work with these changes).
16452
16453 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
16454         
16455         * inssel-{long32,x86,}.brg: trivial optimizations.
16456         
16457 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16458
16459         * mini.c: load value when emitting box operation in
16460         constrained calls.
16461
16462 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
16463
16464         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
16465         is one byte shorter than cmp DWORD PTR [eax], 0.
16466
16467 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16468
16469         * inssel-ppc.brg: arguments on the stack are always
16470         relative to the stack pointer (spotted by Neale Ferguson).
16471
16472 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16473
16474         * exceptions-x86.c: delay appending the method name to the trace until
16475         after mono_jit_info_table_find is called, as this gets the real
16476         MonoMethod.
16477
16478 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16479
16480         * aot.c: register roots
16481
16482 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16483
16484         * aot.c : I could just use PLATFORM_WIN32 flag.
16485
16486 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16487
16488         * aot.c : Reverting the previous fix. This time it broke linux build.
16489
16490 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16491
16492         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
16493
16494 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16495
16496         * mini.c (handle_stack_args): Remove some more debugging code.
16497         
16498         * mini.c (handle_stack_args): Remove debug output left in by mistake.
16499
16500         * driver.c mini.h aot.c: Allow additional options to be specified with
16501         --aot and pass them to mono_compile_assembly.
16502
16503         * aot.c: Add experimental code to AOT compile all loaded assemblies
16504         on demand and save the code into a cache in the filesystem.
16505
16506         * aot.c: Add support for more wrapper methods.
16507         
16508         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
16509         58863.
16510
16511         * cpu-*.md: Remove removed opcodes.
16512
16513         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
16514         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
16515         related icalls to marshal.c.
16516
16517 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
16518
16519         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
16520
16521         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
16522
16523         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
16524
16525 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16526         * liveness.c: If liveness is recomputated we need to reset the information
16527         for each variable. This way, if the liveness range has been narrowed
16528         by optimizations that happened after the last computation, we can return
16529         a smaller range.
16530         
16531         For example, if you have
16532         
16533         {
16534                 int i = 0;
16535                 
16536                 // Tons of code that does not affect i
16537                 
16538                 i = foo ();
16539                 ...
16540         }
16541         
16542         i = 0 is dead code and will be removed by SSA. However, when
16543         linear scan gets to the code, i will still appear to be live
16544         throughout the entire block. This prevents good register allocation.
16545
16546 2004-07-06  Martin Baulig  <martin@ximian.com>
16547
16548         * debug-mini.c (mono_debug_init_method): Allow
16549         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
16550         (mono_debug_add_icall_wrapper): New method.
16551
16552         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
16553
16554 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16555
16556         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
16557         optimization.
16558
16559 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16560
16561         * aot.c (mono_aot_load_method): Fix loading of debug info.
16562
16563 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16564
16565         * aot.c: Add logging support.
16566
16567 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16568
16569         * mini.h: Add prototype for mono_print_method_from_ip.
16570
16571         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
16572
16573         * inssel.brg: 64 bit fixes.
16574
16575         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
16576         inssel-long32.brg.
16577
16578         * Makefile.am: Add SPARC64 support.
16579
16580 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16581
16582         * aot.c: Fix alignment problems on 32 bit platforms.
16583
16584 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16585
16586         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
16587         SPARC64.
16588
16589         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
16590         problems.
16591
16592         * mini.h: Bump AOT file version. Some 64 bit fixes.
16593
16594 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16595
16596         * inssel-sparc.brg: Add new rule to avoid register moves.
16597
16598         * inssel.brg: Add ldind_to_load_membase helper function.
16599
16600 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16601
16602         * mini.c: OffsetToStringData intrinsic.
16603         
16604 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16605
16606         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
16607
16608         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
16609         regression tests.
16610
16611         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
16612 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
16613
16614         * mini.c: reinstated mono_compile_get_interface_var()
16615         on x86, too, since the change breaks the Gtk# build there as well.
16616
16617 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16618
16619         * driver.c: remove loop from the default optimizations: it seems to
16620         interact badly with some of the other options (see bug #60613).
16621
16622 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
16623
16624         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
16625         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
16626
16627 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
16628
16629         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
16630         vararg-using methods.
16631
16632 2004-06-21  Martin Baulig  <martin@ximian.com>
16633
16634         * mini/mini-exceptions.c
16635         (mono_handle_exception): Added `gpointer original_ip' argument.
16636         After calling mono_unhandled_exception(), call
16637         mono_debugger_unhandled_exception() and if that returns true,
16638         restore the context and return.
16639
16640 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16641
16642         * mini-ppc.c: prefer the use of relative branches so
16643         they won't need to be patched in aot code (patch from Patrick Beard).
16644
16645 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
16646
16647         * aot.c: patch from Patrick Beard to make the output assembly
16648         more correct for the MacOSX assembler. Small tweak to
16649         generate sane images on Linux/PPC, too.
16650
16651 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16652
16653         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
16654         case until bug #59509 is fixed (shows up in #60332).
16655
16656 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16657
16658         * mini.c: make sure the needed wrappers are compiled, too, with
16659         precomp.
16660
16661 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
16662
16663         * driver.c: remove NPTL reference in --version output.
16664
16665 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16666
16667         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
16668         generate valid assembly for the Mach-O assembler.
16669
16670 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
16671
16672         * driver.c: don't include abcrem in the all optimization specifier
16673         since it slows down jit compilation too much for now.
16674
16675 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
16676
16677         * mini.c: use BIGMUL only if both operands have the same signage.
16678         * iltests.il: Test for bug 60056. (errors related to signage in
16679         BIGMUL).
16680
16681         r=lupus.
16682
16683 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
16684
16685         * mini.c, aot.c: memory leak fixes.
16686
16687 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16688
16689         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
16690
16691 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
16692
16693         * Makefile.am: remove the -static hack completely, it links in
16694         statically glib as well.
16695
16696 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
16697
16698         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
16699         * exceptions.cs: make it compile with new mcs/csc.
16700
16701 2004-06-03 Massimiliano Mantione <massi@ximian.com>
16702         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
16703         and added relevant test case.
16704
16705 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
16706
16707         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
16708         regressions in gtk-sharp.
16709
16710 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
16711
16712         * exceptions.cs: New regression tests.
16713
16714         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
16715
16716 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
16717
16718         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
16719
16720 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
16721
16722         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
16723
16724         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
16725
16726 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
16727
16728         * mini.c (mono_jit_runtime_invoke): Init class in this
16729         method instead of trusting mono_jit_compile_method to
16730         do the work (because wrappers can be in object class)
16731
16732 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
16733
16734         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
16735
16736         * basic-long.cs: New regression test.
16737
16738 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
16739
16740         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
16741         and div/rem checks.
16742
16743 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
16744
16745         * Makefile.am: fix miguel's change to build mono statically against
16746         libmono (track build dependencies).
16747
16748 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16749
16750         * cfold.c: Some glib versions do not have G_MININT32.
16751
16752 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
16753
16754         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
16755         with precision of tan, atan, sin and cos, and implemented related
16756         regressions tests (fixes bug 54467, but one new problem appeared and
16757         is not fixed yet).
16758
16759 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16760
16761         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
16762
16763         * exceptions.cs: Add test for constant folding && division by zero.
16764
16765         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
16766         since driver.c is in libmono too, so the optimization was useless.
16767
16768         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
16769         variable to driver.c so the compiler can emit more efficient code to
16770         access them.
16771
16772 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16773
16774         * Makefile.am: don't distribute generated inssel.[ch] files.
16775
16776 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16777
16778         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
16779         into the default appdomain. Fixes #58707.
16780
16781         * jit-icalls.c: Remove the broken approximation for truncl, doing
16782         no conversion is better.
16783
16784         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
16785         Fixes #58863.
16786
16787 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
16788
16789         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
16790         of the mcrxr instruction which is not available on some processors
16791         even if it's documented to be. Implement add and sub overflow correctly
16792         (still not complete for long unsigned). Speed up icalls a bit.
16793
16794 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
16795
16796         * mini.c (mono_jit_compile_method_with_opt): Make sure that
16797         we run .cctor in the current domain instead of target_domain.
16798         
16799         Fixes bug #58558, .cctor not being called in -O=shared.
16800
16801 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16802
16803         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
16804
16805 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
16806
16807         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
16808         which can be done with an imm8, do it that way.
16809         (mono_arch_output_basic_block): ditto for a jmp
16810         (mono_arch_emit_prolog): Computate maximum offset of a label.
16811
16812 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
16813
16814         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
16815         now tries to allocate prefered physical reg's for virtual
16816         regs. This reduces the number of emited spills/loads with
16817         20-30% on our core assemblies.
16818
16819 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16820
16821         * jit-icalls.c: truncl() is not needed and trunc() is
16822         the correct thing to do anyway (bug #58287).
16823
16824 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
16825
16826         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
16827         if available.
16828
16829 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16830
16831         * driver.c: enable loop optimizations by default.
16832
16833 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
16834
16835         * mini-x86.c: fix calc of max loop size when aligning loops start.
16836
16837 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
16838
16839         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
16840         the stack.
16841
16842 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
16843
16844         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
16845         should set carry.
16846
16847         * basic-long.cs: Add tests for add/subtract of immediates with carry.
16848
16849         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
16850         
16851         * mini.c (inline_method): Allways inline some wrappers even if the cost
16852         is too large. Fixes #58785.
16853
16854         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
16855         
16856 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
16857
16858         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
16859         (crichton@gimp.org). Beginning of support for sparc/linux.
16860
16861         * mini-sparc.c: Optimize retrieval of LMF address.
16862
16863 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
16864
16865         * exceptions-ppc.c:  handle alloca in methods with clauses.
16866
16867 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
16868
16869         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
16870
16871 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
16872
16873         * mini.c: Delegate most of the abort signal work to 
16874           mono_thread_request_interruption, which also handles Stop and Suspend
16875           states.
16876
16877 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
16878
16879         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
16880         supports the save/restore lmf opcodes.
16881
16882 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
16883
16884         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
16885         by gcc-3.4 as well.
16886
16887         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
16888
16889 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16890
16891         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
16892         methods which contain array accesses.
16893
16894         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
16895         boundaries. Fixes #58537.
16896
16897         * iltests.il: Add regression test for #58537.
16898
16899 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
16900
16901         * mini-x86.c (mono_arch_local_regalloc): Last part of
16902         fix for bug #58633 (releasing register to early).
16903
16904 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
16905
16906         * basic-long.cs: Add new regression test.
16907
16908 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
16909
16910         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
16911         register too early on the chain.
16912
16913 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16914
16915         * mini.c (create_helper_signature): Use a helper function to reduce
16916         the code which needs to be written. Also set the calling convention of
16917         icalls on windows. Fixes #57840.
16918
16919 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
16920
16921         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
16922         exceptions-ppc.c: added helper function to get the instruction address
16923         from a signal handler context.
16924
16925 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16926
16927         * helpers.c: use g_get_tmp_dir. Invokes happyness 
16928         from gonzalo.
16929
16930 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16931
16932         * helpers.c: Add new env variable to pass args to objdump.
16933         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
16934
16935 2004-05-17  Radek Doulik  <rodo@ximian.com>
16936
16937         * Makefile.am (common_sources): added abcremoval.h so it get
16938         disted and daily mono packages on go-mono.com will build again
16939
16940 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
16941
16942         * abcremoval.c: Fixed coding style, added copyright header.
16943
16944         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
16945
16946         * mini.h: Added prototype for abc removal main function.
16947
16948         * build_relations_propagation_table.pl: Added copyright header.
16949
16950 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
16951
16952         * basic-long.cs: reg test for complex ceq_long bug.
16953
16954 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
16955
16956         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
16957         reg in long and clob case (bug #58343). Fixed/added comments.
16958
16959 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
16960
16961         * mini.c (mono_jit_runtime_invoke): Follow new convention
16962         of calling the invoke method with an function pointer.
16963
16964 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
16965
16966         * ChangeLog: Fix author of memory leak patch.
16967
16968 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
16969
16970         * Makefile.am: fix make dist as well...
16971
16972
16973 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
16974
16975         * cfold.c: Made so that conversions from pointer to int4 are no-ops
16976         on archs where pointers are 4 bytes long.
16977
16978         * Makefile.am: Added abcremoval.c source file.
16979
16980         * abcremoval.c: Added abcremoval.c.
16981
16982         * abcremoval.h: Added abcremoval.h.
16983
16984         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
16985
16986         * inssel.brg: Enabled bounds check removal.
16987
16988         * mini.c: Added support for abcrem optimization.
16989
16990         * mini.h: Added abcrem optimization label.
16991
16992         * driver.c: Added support for abcrem optimization.
16993
16994         * propagated_relations_table.def: Added propagated_relations_table.def.
16995
16996 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
16997
16998         * mini.c, cfold.c: fix style.
16999
17000 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17001
17002         * mini.c: handle issue with the low-level implementation of
17003         some long opcodes (bug #54209).
17004
17005 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17006
17007         * basic.cs: test for my new cmov stuff.
17008
17009 2004-05-13      Patrik Torstensson
17010
17011         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17012         opt and added peephole documentation.
17013
17014 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17015
17016         * tramp-ppc.c: rewrote the generic trampoline code.
17017
17018 2004-05-11      Patrik Torstensson
17019
17020         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17021
17022 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17023
17024         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17025
17026         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17027         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17028
17029         * mini.c: Add new icalls for AsAny marshalling.
17030
17031 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17032
17033         * tramp-ppc.c, mini-ppc.c: more cleanups.
17034
17035 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17036
17037         * mini.c: no warnings.
17038
17039 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17040
17041         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17042
17043 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17044
17045         * mini.c: In the thread abort signal handler, if the thread is in the
17046         process of being stoped, don't throw the Abort exception, just stop the
17047         thread.
17048
17049 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17050
17051         * tramp-ppc.c: removed old code.
17052
17053 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17054
17055         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17056         do some simple speed optimizations on ppc.
17057
17058 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17059
17060         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17061         and large offsets in load/store.
17062
17063 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17064
17065         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17066         it causes regressions.
17067
17068 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17069
17070         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17071         support.
17072
17073 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17074
17075         * jit-icalls.c: remove warnings.
17076         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17077         speedups for unsafe code.
17078
17079 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17080
17081         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17082
17083 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17084
17085         * basic-calls.cs: Add new regression test.
17086
17087         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17088         more portable.
17089
17090         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17091
17092         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17093         is no longer used.
17094
17095 2004-05-06      Patrik Torstensson
17096
17097         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17098         long reg allocation in any reg (not only eax:edx) and implemented 
17099         long shl/shr ops in asm instead of helpers.
17100
17101 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17102
17103         * mini-sparc.h: Fix warnings.
17104
17105         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17106         stack.
17107
17108         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17109         separate statement for clarity.
17110
17111         * mini-sparc.c: Update status.
17112
17113 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17116         here.
17117
17118 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17119
17120         * inssel-ppc.brg: another small pre-release workaround:
17121         we don't do overflow detection for long_sub_un.
17122
17123 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17124
17125         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17126         (also works around a weird ppc bug: 57957).
17127
17128 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17129
17130         * tramp-ppc.c: trampoline fixes.
17131
17132 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17133
17134         * mini-ppc.c: fixed typos.
17135
17136 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17137
17138         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17139         at the top of the stack. Fixed typos. Use a frame registers
17140         for all the methods with exception clauses.
17141
17142 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17143
17144         * exceptions-ppc.c: restore fp registers.
17145
17146 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17147
17148         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17149         order from the stack top (moved the stack room to save the
17150         return value for trace after the param area). Fixed corruption
17151         in restoring registers on unwind.
17152
17153 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17154
17155         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17156
17157 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17158
17159         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17160         and prolog/epilog for methods that use it. Allow
17161         enough param area room for varargs methods. Fix miguel's
17162         breakage in exception handling.
17163
17164 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17165
17166         * Makefile.am: run genmdesc only on current arch.
17167
17168 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17169
17170         * exceptions-x86.c:
17171         * mini-x86.h: fix the build on windows.
17172
17173 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17174
17175         * 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.
17176
17177         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17178
17179         * mini-exceptions.c: New file.
17180         
17181         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17182         Move some parts of the x86 exception handling code to an 
17183         arch-independent file so it can be shared with other ports.
17184
17185 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17186
17187         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17188
17189 2004-04-26  David Waite  <mass@akuma.org>
17190
17191         * driver.c: remove comma from end of enumeration declaration
17192
17193 2004-04-26  Jackson Harper  <jackson@ximian.com>
17194
17195         * driver.c: parse config file before loading first assembly. This
17196         allows the user gac to be enabled/disabled. 
17197         
17198 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17199
17200         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17201         simpler mechanism: we do not care what is encoded initially
17202         (branch absolute or relative), we care about the code and its
17203         target.  I kept the old code for reference for now.
17204
17205         The new code tries first to determine if the jump is anywhere in
17206         the -/+32 absolute meg range, if it succeeds, it encodes using the
17207         absolute branch;  If not, it tried to find something in the
17208         relative range, if not, it uses the handle_thunk code. 
17209
17210 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17211
17212         * exceptions-ppc.c: use the correct ip register on macosx.
17213
17214 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17215
17216         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17217
17218 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17219
17220         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17221         Raise exception on integer divide by zero by hand since the hw
17222         doesn't support it. Handle NaNs in FP compares.
17223
17224 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17225
17226         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17227         code reducing duplication between the platforms and enabled
17228         signal exception handling (on linux for now).
17229
17230 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17231
17232         * exceptions-ppc.c: more macosx support.
17233
17234 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17235
17236         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17237
17238 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17239
17240         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17241
17242 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17243
17244         * iltests.il: more tests.
17245
17246 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17247
17248         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17249         vars as well.
17250
17251 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17252
17253         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17254
17255 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17256
17257         * liveness.c: Mark variables as volatile in all basic blocks reachable
17258         from exception clauses.
17259
17260 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17261
17262         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17263         inlining.
17264
17265 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17266
17267         * iltests.il, basic.cs: more tests for regalloc.
17268
17269 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17270
17271         * iltests.il: Some tests for register allocation modifications
17272         I have locally.
17273
17274 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17275
17276         * exceptions.cs: Add regression test for bug #56782.
17277
17278         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17279         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17280         the beauty of fixing the same thing in 5 different files...
17281
17282 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17283
17284         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17285         methods.
17286
17287 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17288
17289         * mini.c: Add support for STRWLPARRAY marshalling convention.
17290
17291 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17292
17293         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17294         to init the context to setup the regs pointer).
17295
17296 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17297
17298         * exceptions-ppc.c: more exceptions work.
17299
17300 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17301
17302         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17303         not allowed.
17304
17305 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17306
17307         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17308         can use the memory directly.
17309
17310         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17311
17312         add x86_add_membase, x86_sub_membase, x86_mul_membase
17313
17314 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17315
17316         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17317         GENERAL_REGS they were also hardcoded for all PPC ports.
17318
17319         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17320
17321         Remove hard-coded limit for floating point registers, use
17322         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17323
17324         Notice that in MacOS X calling conventions you can fit a lot more
17325         floating point values in registers, so I should update the PInvoke
17326         test to excercise the passing of floating point values on the
17327         stack (currently broken).
17328         
17329 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17330
17331         * tramp-ppc.c (create_trampoline_code): Added
17332         JUMP_TRAMPOLINE_SIZE. 
17333         (ppc_magic_trampoline): Follow the pattern from
17334         x86_magic_trampoline: if code is set to zero, return. 
17335         (create_trampoline_code): Always pass MonoMethod to the jump
17336         trampoline, before it was passing a null.
17337         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17338         share the code with mono_arch_create_jit_trampoline. 
17339
17340         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17341         implemented.
17342         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17343         implemented.  
17344
17345         * cpu-g4.md: Added length for jmp instruction, the worst case
17346         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17347         for save_lmf).
17348
17349 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17350
17351         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17352
17353 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17354
17355         * mini.c: Only set bblock->real_offset when adding a new bblock, and
17356         before each IL instruction.
17357
17358         * mini.c (CEE_BOX): Fix warnings.
17359
17360 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17361
17362         * mini.c: removed a few unused vars and extra whitespace.
17363
17364 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
17365
17366         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
17367         checks.
17368         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
17369         index.
17370         (OP_GETCHR): use the above
17371         (CEE_LDELEMA): use the above.
17372
17373         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
17374         version of the generic impl.
17375         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
17376         (CEE_LDELEMA): use the above.
17377
17378 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17379
17380         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
17381         Fixes #56317.
17382
17383         * iltests.il: Added new regression test for #56317.
17384
17385 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17386
17387         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
17388         under NetBSD. Fixes #56450.
17389
17390         * liveness.c (update_gen_kill_set): Fix previous patch.
17391
17392 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17393
17394         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
17395
17396 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17397
17398         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
17399         ldsfld and ldsflda.
17400
17401         * inssel-sparc.brg: Add more optimizations.
17402
17403         * mini-sparc.c: Replace multiply/divide with shifts if possible.
17404
17405 2004-04-01  Martin Baulig  <martin@ximian.com>
17406
17407         * mini.c (handle_box): New static function; moved the
17408         implementation of CEE_BOX here.
17409         (mono_method_to_ir): Added `constrained_call' variable.
17410         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
17411         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
17412         mono_method_get_constrained() to get the method.
17413
17414 2004-04-01  Martin Baulig  <martin@ximian.com>
17415
17416         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
17417         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
17418         (mono_method_to_ir): We don't need these macros anymore since
17419         mono_class_get_full() already takes care of it. 
17420
17421 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17422
17423         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
17424         use @function (as doesn't accept #function here) and check the return
17425         value of system and stop if fails.
17426
17427 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17428
17429         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
17430
17431 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
17432
17433         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
17434
17435         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
17436
17437         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
17438         #56223.
17439
17440         * basic-long.cs: Add test for negation of Int64.MinValue.
17441
17442 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
17443
17444         * mini-sparc.c: Update status.
17445
17446         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
17447
17448         * exceptions-sparc.c: Fix return value in filters.
17449
17450         * inssel-sparc.brg: Fix register allocation in some rules.
17451
17452 2004-03-28  Martin Baulig  <martin@ximian.com>
17453
17454         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
17455         if neccessary.  
17456
17457 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17458
17459         * mini-x86.c (mono_arch_patch_code): Fix warnings.
17460         
17461         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
17462         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
17463         remove unused conv_u4 opcode.
17464
17465         * mini-x86.c: Remove valgrind workaround since it slows down things
17466         even when mono is not run under valgrind.
17467
17468 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
17469
17470         * mini-sparc.c: Update status.
17471
17472         * inssel-sparc.brg: Add some optimizations.
17473
17474         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
17475         future delay slot filling. Add support for varargs, tail calls and JMP.
17476
17477         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
17478         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
17479
17480         * inssel.brg: Fix register allocation in OP_ARGLIST.
17481
17482         * inssel.brg: Fix warnings.
17483
17484 2004-03-25  Martin Baulig  <martin@ximian.com>
17485
17486         * mini.c (inflate_generic_field): Removed.
17487         (mini_get_method): Removed, use mono_get_method_full(),
17488         (mini_get_class): Removed, use mono_class_get_full().
17489         (mono_method_to_ir): Pass our generic context to
17490         mono_field_from_token().        
17491
17492 2004-03-25  Martin Baulig  <martin@ximian.com>
17493
17494         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
17495         of a `MonoMethod *'.
17496         (mini_get_method): Take a `MonoGenericContext *' instead
17497         of a `MonoMethod *'.
17498         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
17499         a new local variable called `generic_context' which holds the
17500         current `MonoGenericContext *'; use it to lookup things.
17501
17502 2004-03-24  Martin Baulig  <martin@ximian.com>
17503
17504         * mini.c (mini_get_class): New static method; if we're inside a
17505         generic instance, inflate the class if neccessary.
17506         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
17507
17508 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17509
17510         * iltests.il: New regression test for #55976.
17511
17512         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
17513         #55976.
17514
17515 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17516
17517         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
17518         output.
17519
17520 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17521
17522         * liveness.c: Consider SSA stores as well as loads when making vars
17523         volatile.
17524
17525         * exceptions.cs: New regression tests for register allocation.
17526         
17527 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17528
17529         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
17530         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
17531           domain lock only to protect puntual access to data structures.
17532           Added access lock for sighash, jit_icall_hash_name, 
17533           jit_icall_hash_addr and domain->code_mp.
17534
17535 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
17536
17537         * driver.c: Print SIGSEGV handling method.
17538
17539         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
17540
17541         * mini.c (setup_jit_tls_data): Handle case when this is called
17542         multiple times for a thread.
17543
17544         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
17545         is different from fbxx_un. Fixes #54303. Also use constants instead of
17546         magic numbers in a lot of places.
17547
17548 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
17549
17550         * exceptions.cs: Fix cctor test when --regression is used.
17551
17552 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
17553
17554         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
17555         for Linux/ppc.
17556
17557 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17558
17559         * inssel-ppc.brg: fixed register assignments for some rules.
17560
17561 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17562
17563         * exceptions.cs: Add test for exceptions in static constructors.
17564
17565         * mini.c (mono_jit_compile_method_with_out): Move the calling of
17566         static constructors outside the domain lock. Fixes #55720.
17567
17568 2004-03-17  Martin Baulig  <martin@ximian.com>
17569
17570         * mini.c (get_generic_field_inst): Removed, this'll never happen.
17571         (inflate_generic_field): Take the `MonoMethod *' instead of the
17572         `MonoClass *' and added support for generic method.
17573         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
17574         have a `field->parent->gen_params', only inflate the field if it's
17575         an open constructed type.
17576
17577 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17578
17579         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
17580         exception object instead of the preconstructed ones.
17581
17582 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17583
17584         * mini.c: reverted changed to sigsegv_signal_handler commited
17585         accidentally in the previous patch.
17586
17587 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17588
17589         * mini.c:
17590         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
17591         running --aot with an old assembly.
17592
17593 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17594
17595         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
17596         point values.
17597
17598         * mini-sparc.c: Add support for v9 branches with prediction.
17599
17600 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
17601
17602         * mini.c (mini_init): #warning is GNUC only
17603
17604         * mini-sparc.h: implement __builtin_frame_address
17605         and __builtin_return_address for Sun C compiler
17606
17607 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
17608
17609         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
17610
17611 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17612
17613         * basic-calls.cs: Add test for unaligned byref long argument passing.
17614
17615         * mini-ops.h: Add sparcv9 compare and branch instructions.
17616
17617         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
17618         v9 instructions if we have a v9 cpu.
17619
17620         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
17621         registers for global allocation.
17622
17623         * exceptions-sparc.c: Fixes.
17624         
17625 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
17626
17627         * liveness.c (mono_analyze_liveness): Optimized version.
17628
17629         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
17630
17631         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
17632         sparc work.
17633
17634         * basic-float.cs basic-calls.cs: New regression tests.
17635
17636 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
17637
17638         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
17639         sigaltstack implementation.
17640
17641         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
17642         
17643         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
17644         stuff if SIGSEGV_ON_ALTSTACK is not defined.
17645
17646 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17647
17648         * mini.c: Fix warnings.
17649         
17650         * mini.c (mono_resolve_patch_target): New function which contains the
17651         arch independent part of the patching process.
17652
17653         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
17654         patching code to a separate function.
17655
17656 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
17657
17658         * mini.c (add_signal_handler): ifdef out on Windows
17659
17660 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
17661
17662         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
17663         cpu-sparc.md: Add exception handling support + other fixes.
17664
17665         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
17666         typed GC detection in --version.
17667
17668         * basic.cs exceptions.cs: New regression tests.
17669
17670         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
17671         the arch specific code can store data during a compilation.
17672
17673         * mini-ops.h: Add OP_SETFRET.
17674
17675         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
17676         function, register a separate icall for each arity, so the icalls can
17677         get a wrapper.
17678         
17679         * mini.c (mono_print_tree): Print negative offsets in a more readable
17680         form.
17681         
17682         * mini.c: Make signal handling work on sparc.
17683         
17684         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
17685
17686         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
17687
17688         * jit-icalls.c: Emulate truncl by aintl on solaris.
17689
17690         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
17691
17692 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
17693
17694         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
17695
17696 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
17697
17698         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
17699         a MarshalByRef type, inline a method that performs the check, taking into
17700         account that the object can be a proxy. Also implemented tow new opcodes:
17701         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17702         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
17703         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17704
17705 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
17706
17707         * mini-ppc.c: if a relative branch displacement is too big
17708         but it points to and area reachable with an absolute branch, 
17709         avoid the thunks.
17710
17711 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
17712
17713         * mini.c: optimize small copies in cpblk.
17714
17715 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
17716
17717         * basic-calls.cs basic-float.cs: New regression tests.
17718
17719         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
17720         negative offsets from %fp. Implement localloc. Fix local register 
17721         allocation. Fix the case when the this argument needs to be saved to
17722         the stack. Implement some missing opcodes.
17723
17724 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
17725
17726         * mini.c (mini_method_compile): Reenable global regalloc in methods
17727         with exception handlers.
17728
17729         * linear-scan.c (mono_varlist_sort): Fix warning.
17730
17731         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
17732
17733         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
17734         regalloc costs.
17735
17736         * liveness.c: Make all variables uses in exception clauses volatile, to
17737         prevent them from being allocated to registers. Fixes #42136.
17738
17739 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
17740
17741         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
17742         causes regressions.
17743
17744         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
17745         argument to mono_arch_regalloc_cost.
17746
17747         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
17748         precisely.
17749
17750 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
17751
17752         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
17753         Make the cost of allocating a variable to a register arch dependent.
17754
17755         * basic-calls.cs: Fix compilation of tests.
17756         
17757         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
17758         helper function to cut back on the number of #ifdefs needed.
17759
17760         * mini-ppc.c: Fix compilation.
17761
17762         * basic-calls.cs: New regression tests.
17763
17764         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
17765
17766         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
17767         of l0 since that is callee saved.
17768
17769         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
17770         to virtual calls.
17771
17772         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
17773         of delay instruction.
17774
17775         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
17776
17777         * mini.h (MonoCallInst): Add 'virtual' flag.
17778
17779         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
17780
17781 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
17782
17783         * *.cs: New regression tests.
17784
17785         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
17786         work.
17787
17788         * mini.c (mono_runtime_install_handlers): Fix build.
17789
17790         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
17791         'signal_stack_size' members.
17792
17793         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
17794         alternate signal stack.
17795
17796         * exceptions-x86.c: Add stack overflow handling.
17797
17798         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
17799         functions to arch independent code.
17800
17801         * mini.c (mono_print_tree): Print more detailed info for load_membase
17802         opcodes.
17803         
17804 2004-02-23  Martin Baulig  <martin@ximian.com>
17805
17806         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
17807
17808 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17809
17810         * mini-x86.c: fixed reg allocation for div/rem.
17811
17812 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
17813
17814         * driver.c (mono_main): Report some configuratio options on --version.
17815
17816 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
17817
17818         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
17819         low in the address space. Correctly flush memory in thunks where we
17820         output native code.
17821
17822 2004-02-20  Martin Baulig  <martin@ximian.com>
17823
17824         * mini.c (mini_get_method): New static method; inflate all generic
17825         methods and methods in open generic instances.
17826         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
17827         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
17828
17829 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
17830
17831         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
17832
17833         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
17834
17835 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
17836
17837         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
17838
17839         * mini-sparc.c (flushi mono_arch_output_basic_block): make
17840         it compile using Sun's compiler.
17841
17842 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
17843
17844         * 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.
17845
17846         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
17847
17848 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17849
17850         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
17851         code.
17852         * mini-ppc.c: handle calls outside of the allowed range with thunks
17853         allocated using the code manager.
17854         * tramp-ppc.c: use the code manager to hold generated native code.
17855         Fixed the magic trampoline to just patch vtable entries.
17856
17857 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
17858
17859         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
17860         independent file.
17861
17862 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
17863
17864         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
17865         PPC.
17866
17867         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
17868         if we have a working __thread implementation.
17869
17870         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
17871         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
17872
17873 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * mini-x86.c: Fix compilation under gcc 2.
17876         
17877 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
17878
17879         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
17880         contains a call to the wrapped function.
17881
17882         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
17883         OP_<CALL>_IMM opcodes, and use them under X86.
17884         
17885         * mini.c (mono_jit_find_compiled_method): Fix warning.
17886
17887         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
17888
17889         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
17890
17891         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
17892         functionality to mini.c.
17893
17894         * mini.c (mono_create_jump_trampoline): New function to create a jump
17895         trampoline. Return a compiled method instead of a trampoline if it
17896         exists. Add a cache for jump trampolines.
17897
17898         * mini.c (mono_jit_find_compiled_method): New function to return a
17899         compiled method if it exists.
17900
17901         * mini-x86.c: Call mono_create_jump_trampoline instead of 
17902         mono_arch_create_jit_trampoline.
17903
17904         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
17905         a jump trampoline. Fixes #52092.
17906         
17907 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
17908
17909         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
17910         which is not up-to-date. Add check_corlib_version () instead.
17911
17912         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
17913         have to call it.
17914         
17915         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
17916         since newer valgrind versions do not need it.
17917
17918         * mini.c (mono_jit_compile_method_with_opt): New helper function to
17919         compile a method with a given set of optimizations.
17920
17921         * mini.c: Compile icall wrappers on-demand instead of at startup.
17922
17923         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
17924         wrapper for an icall.
17925
17926 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
17929         #54063.
17930
17931         * iltests.il: Add test for non-empty stack before switch instruction.
17932
17933 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
17934
17935         * mini.c: Add support for new stringbuilder marshalling conventions.
17936
17937         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
17938
17939 2004-02-01  Martin Baulig  <martin@ximian.com>
17940
17941         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
17942         in `ginst->mtype_argv'.
17943
17944 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
17945
17946         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
17947         facilitate grepping.
17948
17949 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
17950
17951         * mini.c: fixed buglet in initobj generic implementation for references.
17952
17953 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
17954
17955         * Makefile.am: make the version script conditional.
17956         * jit-icalls.c: handle missing truncl().
17957
17958 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
17959
17960         * exceptions.cs: Add more tests for double->int conversion.
17961
17962         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
17963         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
17964
17965 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
17966
17967         * driver.c: make --verbose --version emit an error
17968         if the loaded corlib doesn't match the runtime version.
17969
17970 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
17971
17972         * mini-ppc.h: export ppc_patch().
17973         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
17974         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
17975         on par or better than on MacOSX.
17976
17977 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
17978
17979         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
17980         mono_lookup_pinvoke_call.
17981
17982         * mini-x86.c: Under windows, the default pinvoke calling convention is
17983         stdcall. Fixes #52834.
17984
17985         * mini.c (optimize_branches): Add an upper bound to the number of
17986         iterations to prevent infinite loops on strange loops. Fixes #53003.
17987
17988 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
17989
17990         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
17991         and ISINST. Fixes #52093.
17992
17993         * objects.cs (test_0_vector_array_cast): New tests.
17994         
17995 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
17996
17997         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
17998         checking in Array.Set ().
17999
18000         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18001         #52590.
18002
18003         * object.cs (test_0_multi_array_cast): New regression test.
18004
18005 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18006
18007         * exceptions-ppc.c: fix build on Linux/PPC.
18008
18009 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18010
18011         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18012         running under valgrind.
18013         (x86_magic_trampoline): Fix build bustage.
18014
18015         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18016         negative values as well. This is needed for the encoding of the line number
18017         info, since sometimes the line numbers are not in increasing order.
18018
18019 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18020
18021         * cpu-pentium.md (localloc): Increase the size of the localloc 
18022         instruction since it is a loop under Win32.
18023
18024         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18025         allocation.
18026
18027 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18028
18029         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18030         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18031         Max Horn (max@quendi.de). Fix file names in comments.
18032
18033 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18034
18035         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18036         avoid stack overflow.
18037         (replace_usage): Avoid uninitialized variable warnings.
18038
18039         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18040         and taking the address of valuetype variables.
18041
18042 2004-01-03  Patrik Torstensson
18043
18044         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18045         for other purposes than FP later on.
18046
18047 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18048
18049         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18050         of tail calls.
18051
18052 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18053
18054         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18055
18056 2003-12-30  Patrik Torstensson <p@rxc.se>
18057
18058         * mini-x86.h: Decreased number of availiable fp regs.
18059         Solves corner cases with FP spilling.
18060
18061 2003-12-23  Patrik Torstensson <p@rxc.se>
18062
18063         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18064         for floating point stack tracking / spilling on x86. 
18065         Fixes bug #49012.
18066         
18067         * basic-float.cs: added float mul overflow test.
18068
18069 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18070
18071         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18072
18073 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18074
18075         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18076         supports for cond branches that overflow the immediate
18077         overflow offset. mcs can compile simple programs.
18078
18079 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18080
18081         * exceptions-ppc.c: exception handling support wip:
18082         finally handlers get run on exception.
18083
18084 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18085
18086         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18087         profiling.
18088
18089 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18090
18091         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18092         initial support for stack walking and unwinding.
18093
18094 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18095
18096         * driver.c (mono_main): Make corlib-out-of-sync message more 
18097         descriptive. Also remove verify_corlib call.
18098
18099 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18100
18101         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18102         not overlap with other call's arguments, too.
18103
18104 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18105
18106         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18107         move to arch-specific code the choice of arch-specific
18108         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18109         * mini.c: ensure emulation calls will not interleave
18110         with other calls.
18111
18112 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18113
18114         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18115         the magic trampoline stack frame is dropped before executing
18116         the new method.
18117
18118 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18119
18120         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18121         and integer to fp conversions. Added support for overflowing
18122         arguments on the stack. Reserve a couple more registers as temps.
18123         Added support for aot compilation (as output still needs to be
18124         tweaked, though).
18125
18126 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18127
18128         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18129         Don't overwrite return register in some corner cases.
18130
18131 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18132
18133         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18134         static constructors when AOT compiling.
18135
18136         * driver.c (mono_main): Call mono_check_corlib_version.
18137
18138 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18139
18140         * cpu-g4.md, basic.cs: fixed div target register.
18141
18142 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18143
18144         * mini-ppc.c, basic.cs: shl_imm fix with test.
18145
18146 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18147
18148         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18149         structures by value. Misc fixes.
18150         * objects.cs: more tests.
18151
18152 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18153
18154         * mini-ppc.c: lconv.ovf.i implemented.
18155
18156 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18157
18158         * mini.c:
18159         (mini_init): don't error out if someone already called g_thread_init.
18160
18161 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18162
18163         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18164         to be any type per the spec. Fix abnormal memory usage when
18165         the same object is repeatedly thrown.
18166
18167 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18168
18169         * mini.c: check for overruns in IL code.
18170
18171 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18172
18173         * TODO: Add/remove some todo entries.
18174
18175 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * driver.c (mono_main): Call mono_verify_corlib.
18178
18179 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18180
18181         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18182         This has been moved to mini.c
18183         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18184         type being casted is marshalbyref it could be a proxy, so instead of
18185         emitting the type check code, emit a call to a runtime method that will
18186         perform the check by calling CanCastTo if needed.
18187
18188 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18189
18190         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18191         methods with large stack frames under Win32.
18192
18193 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18194
18195         * Makefile.am: Distribute regression tests.
18196
18197         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18198         at the end instead of inserting each variable into the sorted list.
18199
18200         * linear-scan.c (mono_varlist_sort): New helper function.
18201         
18202 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18203
18204         * mini.c: ensure arguments and locals are within bounds.
18205
18206 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18207
18208         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18209         related fixes.
18210
18211 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18212
18213         * mini.c (mono_cprop_copy_values): Fix crash.
18214
18215         * aot.c: Set verbosity back to 0.
18216         
18217 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18218
18219         * regalloc.c: complete memory leak fix by Laurent Morichetti
18220         (l_m@pacbell.net).
18221
18222 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18223
18224         * driver.c (main_thread_handler): Revert the previous patch.
18225
18226         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18227         under valgrind.
18228
18229         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18230         memory from the memory pool.
18231
18232         * driver.c (main_thread_handler): Turn on all optimizations when
18233         --aot is used.
18234
18235         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18236         an array for better performance.
18237
18238         * regalloc.c (mono_regstate_assign): Fix memory leak.
18239
18240         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18241         serialize the debug info.
18242
18243         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18244         debug info from the serialized representation.
18245
18246         * aot.c: Save debug info into the generated file and load it when 
18247         loading a method.
18248
18249         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18250
18251 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18252
18253         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18254         More FP-related fixes.
18255
18256 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18257
18258         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18259         and register allocation buglet. Hello world now runs.
18260
18261 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18262
18263         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18264         * tramp-ppc.c: fixed class init trampoline.
18265         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18266
18267 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18268
18269         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18270         mini.c: more ppc changes/fixes.
18271
18272 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18273
18274         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18275         Also optimize the case when the arguments are the same in the caller 
18276         and in the callee.
18277
18278         * iltests.il: Add tests for tail calls with valuetype arguments.
18279
18280 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18281
18282         * mini-ppc.c: fixes for struct return type.
18283
18284 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18285
18286         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18287         mono_spillvar_offset() to arch-specific code.
18288
18289 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18290
18291         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18292
18293 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18294
18295         * exceptions-x86.c: Fix stack space leaks.
18296         
18297         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18298         registers from the lmf if the method has save_lmf set.
18299
18300 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18301
18302         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18303         of icall wrappers into InvokeInDomain, since these are now per-domain.
18304
18305 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18306
18307         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18308         make some opcode emulation and intrinsic ops enabled/disabled 
18309         according to the architecture. More fixes.
18310
18311 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18312
18313         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18314
18315 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18316
18317         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18318         arch-specific handling for 'this' and struct return type to
18319         arch-specific code.
18320
18321 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18322
18323         * aot.c: prevent divide by zero error when reporting (it happened with
18324         Accessibility.dll).
18325
18326 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18327
18328         * mini.h (inst_switch): Remove unused macro.
18329
18330 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18331
18332         * aot.c:
18333         (load_aot_module): free 'info->methods' and 'info' properly. No more
18334         "free(): invalid pointer blah" messages when you have an old aot
18335         compiled assembly.
18336
18337 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18338
18339         * jit-icalls.c, mini.c: Added support for context static fields.
18340
18341 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18342
18343         * mini.c (mono_method_blittable): Methods which set LastError are not 
18344         blittable either. Fixes #51108.
18345         
18346 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18347
18348         * mini.c: flush icache.
18349         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18350
18351 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18352
18353         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18354
18355 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18356
18357         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
18358         safe on IA32.
18359
18360         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
18361         vararg calls.
18362
18363         * inssel.brg (CEE_MKREFANY): Fix AOT case.
18364
18365 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18366
18367         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
18368         instruction when the result is discarded.
18369
18370         * iltests.il (test_0_div_regalloc): New regression test.
18371
18372         * arrays.cs: Fix compilation error.
18373
18374 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
18375
18376         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
18377         float rules to inssel-x86.brg: sane architectures with FP registers
18378         don't need to implement these rules.
18379
18380 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18381
18382         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
18383
18384 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18385
18386         * mini.h, inssel-long32.brg: fixed endianess issues in int64
18387         implementation of 32 bit systems.
18388
18389 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18390
18391         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
18392         (Jeroen Zwartepoorte).
18393
18394 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18395
18396         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
18397         the caller and the callee matches.
18398         
18399         * mini.c (mono_method_to_ir): Add comment.
18400
18401         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
18402         signbit is missing on some platforms.
18403
18404 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
18407
18408         * mini.c (setup_jit_tls_data): Call the new function.
18409         
18410         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
18411
18412         * mini-x86.c: Add experimental support for fast access to the lmf
18413         structure under NPTL/Linux 2.6.x.
18414
18415 2003-11-06  Martin Baulig  <martin@ximian.com>
18416
18417         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
18418         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
18419         the debugger.
18420
18421 2003-11-02  Martin Baulig  <martin@ximian.com>
18422
18423         * mini.c (inflate_generic_field): New static method.
18424         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
18425         generic instance and the field is declared in a generic type, call
18426         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
18427
18428 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18429
18430         * mini.h mini.c (mono_method_same_domain): New function to return
18431         whenever the caller and the callee are in the same domain.
18432
18433         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
18434
18435 2003-10-30  Martin Baulig  <martin@ximian.com>
18436
18437         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
18438         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
18439         method parameters.
18440         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
18441         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
18442
18443 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
18444
18445         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
18446         propagation.
18447
18448         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
18449         object here, so it is in the correct appdomain etc.
18450
18451 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18452
18453         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
18454         already done.
18455         (mono_method_to_ir): Avoid freeing the type created returned from
18456         mono_type_create_from_typespec, since it is put into an internal cache
18457         by the function. Fixes pointer.exe.
18458
18459         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
18460         trampolines for icalls and pinvokes as well. Fixes #33569.
18461
18462 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18463
18464         * mini.c: Update after appdomain changes.
18465
18466         * mini.c (mono_jit_compile_method_inner): Allways compile native
18467         method wrappers in the root domain, since there can only be one
18468         instance of them, whose address is stored in method->info.
18469
18470 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18471
18472         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
18473         environment variable. Instead detect automatically whenever running
18474         under valgrind using the magic macro RUNNING_ON_VALGRIND from
18475         valgrind.h.
18476
18477 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
18478
18479         * trace.c, trace.h: New files that implement the new trace option
18480         parsing. 
18481
18482         * driver.c: Document new --trace options.
18483
18484         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
18485         mini-x86.c: Apply:
18486
18487         -       if (mono_jit_trace_calls)
18488         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
18489
18490         * mini.h: prototypes.
18491         
18492 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18493
18494         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
18495
18496         * mini.c inssel.brg: Implement typedefbyref opcodes.
18497
18498         * mini.c (mono_jit_compile_method): Remove unused local variable.
18499
18500         * mini.c (mono_jit_compile_method_inner): Ditto.
18501         
18502 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
18503
18504         * tramp-x86.c (x86_class_init_trampoline): Fix build.
18505         
18506         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
18507
18508 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18509
18510         * mini.c (mono_no_aot): Remove unused global variable.
18511
18512         * mini.c: Thread safety fixes.
18513
18514 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * mini.c (mono_create_class_init_trampoline): Add a lock around
18517         class_init_hash_addr.
18518
18519         * arrays.cs (test_0_newarr_emulation): Add new regression test for
18520         #30073.
18521
18522         * mini.c: Decompose the NEWARR instruction before decomposing its
18523         arguments. Fixes #30073.
18524
18525 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
18526
18527         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
18528         convention.
18529
18530 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
18531
18532         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
18533
18534         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
18535
18536         * driver.c: Add support for compiling icall wrappers to --compile.
18537
18538 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
18539
18540         * inssel.brg: The empty value in class->interface_offsets is -1, not
18541         0. Fixes #49287.
18542
18543 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
18544
18545         * objects.cs: New test for 'is' operator on an array of interfaces.
18546
18547 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18548
18549         * tramp-ppc.c: update trampoline code to support jumps
18550         and class initialization.
18551
18552 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
18553
18554         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
18555
18556         * inssel.brg (OP_UNBOXCAST): Fix #46027.
18557
18558         * inssel.brg (OP_UNBOX): Remove unused rule.
18559
18560         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
18561         region instead of one for each method. Fixes #47813.
18562
18563 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
18564
18565         * exceptions.cs (test_0_nested_finally): New regression test for
18566         nested exception handlers.
18567
18568         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
18569
18570         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
18571
18572         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
18573         inlining.
18574
18575         * mini.c (mono_method_check_inlining): Make the inlining limit 
18576         configurable by an environment variable.
18577         
18578         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
18579
18580         * mini.h: Bump AOT file version.
18581
18582         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
18583         token, store the image along with the token, since the token might not 
18584         refer to the same image as the method containing the relocation, 
18585         because of inlining.
18586
18587 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
18588
18589         * mini.c (mono_precompile_assemblies): New function to compile
18590         all methods in all loaded assemblies.
18591
18592         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
18593
18594         * regalloc.h regalloc.c (MonoRegState): Change the type of 
18595         iassign and fassign to int*, since they can contain large negative
18596         values if the register is spilled. Also added some comments. Fixes
18597         #45817.
18598
18599         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
18600         under Win32. Fixes #42964.
18601
18602 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
18603
18604         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
18605
18606         * aot.c: Added support for AOT compiling methods which contain calls
18607         to wrappers. Currently, only remoting-invoke-with-check wrappers are
18608         handled.
18609         
18610         * driver.c (compile_all_methods): Run the compilation in a thread
18611         managed by mono. Fixes #44023.
18612
18613         * mini.c (mono_codegen): Print full method name in verbose output.
18614
18615         * mini-x86.c (mono_arch_patch_code): Fix warning.
18616         
18617         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
18618         jumps, since the method we are jumping to might be domain-specific.
18619
18620         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
18621
18622 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18623
18624         * inssel.brg: string chars are unsigned.
18625
18626 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
18627
18628         * TODO: New todo item.
18629
18630         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
18631         which calls mono_runtime_class_init and patches the call site to
18632         avoid further calls.
18633         (mono_arch_create_class_init_trampoline): New arch specific function 
18634         to create a class init trampoline.
18635         (create_trampoline_code): Generalized so it can create
18636         class init trampolines as well.
18637
18638         * mini.c (helper_sig_class_init_trampoline): New helper variable.
18639         (mono_create_class_init_trampoline): New function to create and cache
18640         class init trampolines.
18641         (mono_find_class_init_trampoline_by_addr): New function to lookup the
18642         vtable given the address of a class init trampoline. Used by the
18643         patching process.
18644         (mono_codegen): Generate a call to a trampoline instead of
18645         mono_runtime_class_init in LDSFLD[A].
18646         (mono_codegen): Add relocations for the new trampoline.
18647         
18648         * mini.h mini-x86.c aot.c: Added a new relocation type: 
18649         MONO_PATCH_INFO_CLASS_INIT.
18650
18651         * mini.h: Bump AOT version number.
18652
18653         * aot.c: Create a copy of the loaded code instead of using the original
18654         so methods which call each other will be close in memory, improving
18655         cache behaviour.
18656         
18657         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
18658         patch since it breaks the regression tests.
18659         
18660         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
18661         for the register saving instruction sequence since the 
18662         frame_state_for function in glibc 2.3.2 don't seem to detect it.
18663
18664 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * TODO: Fix todo item && remove another.
18667
18668 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
18669
18670         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
18671         previous checkin.
18672
18673         * aot.c: Moved the check for MONO_LASTAOT into the initialization
18674         function of the module.
18675
18676         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
18677         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
18678         --no-aot command line option.
18679
18680 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
18681
18682         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
18683         by Bernie Solomon (bernard@ugsolutions.com).
18684
18685         * inssel.brg: Refactor the interface offset table related code into
18686         its separate functions and add support for the AOT case.
18687
18688 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
18689
18690         * aot.c (mono_aot_get_method_inner): Fix memory leak.
18691         
18692         * aot.c: Added mono_aot_verbose variable and made all debugging
18693         output depend on the value of this variable.
18694
18695         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
18696         method_label and info_label.
18697
18698         * mini.h mini-x86.c aot.c: Added a new relocation type 
18699         MONO_PATCH_INFO_IID for klass->interface_id.
18700
18701         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
18702         the MonoJitInfo structure.
18703
18704         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
18705         a non-root appdomain in shared mode.
18706
18707 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
18708
18709         * aot.c: make aot loader less verbose. Remove free of unused variable.
18710
18711 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
18712
18713         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
18714
18715         * .cvsignore: Added *.dll.
18716
18717         * mini.c (mono_print_tree_nl): New function callable while debugging.
18718
18719         * mini.c (mono_print_code): Export this.
18720
18721         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
18722         patched code.
18723
18724 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
18725
18726         * mini.h (MonoCompile): Added 'jit_info' field.
18727
18728         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
18729         the cfg structure, since it is needed by the AOT compiler.
18730
18731         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18732
18733         * aot.c: A major rewrite. Changes include:
18734         - save exception tables for methods which have them.
18735         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
18736         to g_module_symbol.
18737         - reworked the file format so it is now much smaller and needs
18738         fewer relocation entries.
18739         
18740 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
18741
18742         * aot.c (load_aot_module): Fix build bustage on platforms without
18743         Boehm GC.
18744
18745 2003-09-04  Martin Baulig  <martin@ximian.com>
18746
18747         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
18748
18749 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
18750
18751         * TODO: Some new optimization ideas.
18752
18753         * aot.c: Move AOT module loading logic here from mono_assembly_open.
18754
18755         * aot.c: Save the optimization flags used to compile the code into
18756         the AOT module.
18757
18758         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
18759         support emitting domain specific code.
18760         
18761         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
18762         no longer domain neutral. It can be made domain neutral by compiling 
18763         with --optimize=shared.
18764
18765         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
18766         between appdomains.
18767
18768         * driver.c mini.h mini.c: New --no-aot debugging option which disables
18769         loading of AOT code.
18770
18771         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
18772         
18773         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
18774         if there is no domain neutrality information.
18775
18776 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
18777
18778         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
18779         format version into the generated library.
18780
18781         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
18782         callee method into the caller since one of them could be shared.
18783
18784         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
18785         system exceptions from AOT code now works.
18786
18787         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
18788         method if it is domain neutral and the callee is not.
18789
18790         * graph.c (cfg_emit_one_loop_level): Fix warning.
18791
18792 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
18793
18794         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
18795         last checkin.
18796
18797 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
18798
18799         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
18800         is needed  by code which is executed before mono_runtime_init ().
18801         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
18802         
18803         * mini.c (mono_thread_abort): Fix warning.
18804         (mono_jit_compile_method): Call static constructor in the AOT case too.
18805
18806         * aot.c (mono_compile_assembly): Fix warning.
18807
18808 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18809
18810         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
18811
18812 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
18815
18816         * cpu-pentium.md: Fix the length of call opcodes so they include the
18817         ESP restoring instruction. Fixes #47968.
18818
18819 2003-08-28  Martin Baulig  <martin@ximian.com>
18820
18821         * mini-x86.c (mono_arch_call_opcode): Added support for
18822         MONO_TYPE_GENERICINST.
18823
18824         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
18825
18826 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
18827
18828         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
18829         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
18830
18831         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
18832         metadata_section.
18833
18834 2003-08-26  Martin Baulig  <martin@ximian.com>
18835
18836         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
18837         when reporting an error, set this to the actual error location.
18838         (mono_method_to_ir): Report the correct error location if
18839         get_basic_blocks() returned an error.
18840
18841 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
18842
18843         * mini.c (mono_type_blittable): OBJECT is not blittable.
18844         (mono_method_blittable): Methods which have marshalling descriptors
18845         are not blittable either. Fixes #47842.
18846
18847 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
18848
18849         * driver.c mini.c: Use an environment variable instead of a global 
18850         variable. Also fix the build.
18851
18852         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
18853         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
18854         reporting this. 
18855
18856         * driver.c mini.c: Added --with-valgrind option to turn off some
18857         code which prevents mono from running under valgrind.
18858
18859         * mini.c (mono_emit_call_args): Fixed warning.
18860
18861         * mini.c (mono_emulate_opcode): Fixed warning.
18862
18863 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18864
18865         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
18866         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
18867         regalloc.c, regalloc.h: specify available registers in arch-specific
18868         code and support floats in the regallocator (patch by Laurent Morichetti 
18869         <l_m@pacbell.net>)
18870
18871 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
18872
18873         * mini.c: mono_thread_current() can be called only after
18874         mono_runtime_init(): rearrange code to not call it early on.
18875
18876 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
18877
18878         * mini.c: allocate jump tables in the code mempools.
18879
18880 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
18881
18882         * mini.c, mini.h: make sure per-thread data allocated by the jit is
18883         freed.
18884
18885 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
18886
18887         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
18888         12 to 16.  This fixes bug #47453.
18889
18890
18891 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
18892
18893         * mini-ppc.c: fixed indexed load and unsigned compares.
18894
18895 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
18896
18897         * mini.c: reenabled installation of handler for
18898           thread abort signal.
18899
18900 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18901
18902         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
18903         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
18904         until it's fixed and actually useful.
18905
18906 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
18907
18908         * inssel-long32.brg: couple more opcodes implemented.
18909
18910 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
18911         
18912         * mini-sparc.c: Even more opcodes implemeted.
18913
18914 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
18915
18916         * mini-sparc.c: More opcodes implemented.
18917
18918 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
18919
18920         * mini-sparc.c: More opcodes implemented.
18921
18922 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
18923
18924         * inssel-sparc.brg: Add some needed rules.  Direct
18925         copy from PPC.
18926         * Makefile.am: Use inssel-sparc.brg
18927         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
18928         an assert happy for now.
18929
18930 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
18931
18932         * mini-sparc.c: Fixed compile errors.
18933         * exceptions-sparc.c: Same.  We now produce a mono binary 
18934         on sparc-linux.  Yea.
18935
18936 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
18937
18938         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
18939         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
18940         They compile, but do not work.
18941
18942 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
18943
18944         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
18945         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
18946         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
18947         (ct@gentoo.org).
18948
18949 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18950
18951         * mini.c: more opcodes implemented and better support for generics.
18952
18953 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
18954
18955         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
18956         * mini.c, mini.h: first cut at generics support: some new instructions 
18957         added and changed the behaviour of some of the existing ones.
18958
18959 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
18960
18961         * mini.c: Removed definition of metadata_shared mutex here.
18962
18963 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
18964
18965         * mini-x86.c: make vararg calls work for instance methods.
18966
18967 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
18968
18969         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
18970         returns the arguments in a separte list, now.
18971
18972 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
18973
18974         * aot.c, mini.c: updates for array type representation changes.
18975
18976 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
18977
18978         * mini.c: register function to perform jit shutdown.
18979
18980 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
18981
18982         * mini.c: use a faster allocator if possible.
18983
18984 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
18985
18986         * aot.c: some cleanups and portability changes.
18987
18988 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
18989
18990         * mini.c: use faster allocation for CEE_BOX if possible.
18991
18992 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
18993
18994         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
18995         Moved inlined mempcy code to its own function so that is can be
18996         reused. Added an inline memset function as well (optimized initobj).
18997         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
18998
18999 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19000
19001         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19002
19003 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19004
19005         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19006         arch code can setup the cpu for CLR execution, if needed.
19007         We use it on x86 to set the precision of FP operations.
19008
19009 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19010
19011         * mini.c: disable some optimizations if we can guess they'll cost too
19012         much for a given method.
19013
19014 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19017         
19018 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19019         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19020         info collection support.
19021
19022 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19023
19024         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19025         is now implemented in the profiling API. Get rid of a couple of
19026         unnecessary global variables.
19027
19028 2003-06-15  Nick Drochak <ndrochak@gol.com>
19029
19030         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19031         * cpu-g4.md: add op_bigmul and op_bigmul_un
19032         * cpu_pentium.md: add op_bigmul_un
19033         * inssel-long32.brg: add rule for unsigned bigmul
19034         * mini-ops.h: define OP_BIGMUL_UN
19035         * mini-x86.c: THE BUG: handle (un)signed properly
19036         * mini.c: choose unsigned opcode if needed.
19037         This set of patches fixes bug #44291
19038
19039 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19040
19041         * mini.c (optimize_branches): improved to handle all kinds of
19042         conditional branches.
19043
19044 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19045
19046         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19047         don't raise exceptions.
19048
19049 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19050
19051         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19052         to arch-specific files.
19053
19054 2003-06-09  Martin Baulig  <martin@ximian.com>
19055
19056         * Makefile.am (libs): Added $(LIBGC_LIBS).
19057
19058 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19059
19060         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19061         and OP_ATAN (fixes bug#44293).
19062
19063 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19064
19065         * Makefile.am, mini-x86.c: rename cpu description array to
19066         pentium_desc, since some compilers define the 'pentium' preprocessor
19067         symbol.
19068
19069 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19070
19071         * mini.c (mini_select_instructions): add explicit branch if the
19072         following block is not the false target of a conditional branch -
19073         we need this with any optimization that reorder or remove bblocks
19074
19075         * mini.c (optimize_branches): bug fixes
19076
19077 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19078
19079         * mini.c (mono_method_to_ir): inline static readonly fields
19080
19081         * ssa.c (fold_tree): start cfold support for long (very simple
19082         cases only)
19083
19084         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19085
19086 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19087
19088         * inssel.brg: fixed memcpy (bug #44219).
19089
19090 2003-06-05  Dick Porter  <dick@ximian.com>
19091
19092         * driver.c: Set the glib log levels to not abort if g_message
19093         recurses.
19094
19095         g_set_prgname() has to happen before mini_init() so that the
19096         process handle gets the info.
19097         
19098 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19099
19100         * driver.c: add intrins to the default optimizations to get wider
19101         exposure.
19102
19103 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19104
19105         * mini.h: some large basic blocks will overflow a 16-bit
19106         integers for symbolic registers.
19107
19108 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19109
19110         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19111         (mono_arch_output_basic_block): fix bug 43499 
19112
19113 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19114
19115         * mini.c: kill duplicated definition of mono_debug_format.
19116
19117 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19118
19119         * mini-x86.c, arrays.cs: fixed register allocation bug.
19120
19121 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19122
19123         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19124
19125         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19126
19127 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19128
19129         * mini.c:
19130         (print_method_from_ip): also print source location information if
19131         available.
19132
19133 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19134
19135         * mini.c (mono_find_block_region): bug fix in region code
19136         (mini_method_compile): enable removing unreachable code again, but
19137         only in methods without exception clauses.
19138
19139 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19140
19141         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19142         Implemented arglist opcode and handling of TypedReference type.
19143         Fixed x86 call convention when a structure is returned.
19144         Minimal support for calling static vararg methods.
19145
19146 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19147
19148         * mini.c (mini_method_compile):  always remove unreachable code,
19149         because the code in them may be inconsistent  (access to dead
19150         variables for example).
19151
19152 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19153
19154         * driver.c, debug-mini.c: warning fixes.
19155
19156 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19157
19158         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19159
19160 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19161
19162         * mini.c: thread-static fields are registered in mono_class_vtable(),
19163         so ensure the function is called before checking for them.
19164
19165 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19166
19167         * mini.c (optimize_branches): fix for bug 43586
19168
19169         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19170         overflow (fixes Bug #43639)
19171
19172 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19173
19174         * mini.c, objects.cs: allow the use of stobj for primitive types.
19175
19176 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19177
19178         * mini.c: be less strict about argument checking until we support
19179         running the verifier.
19180
19181 2003-05-27  Nick Drochak <ndrochak@gol.com>
19182
19183         * basic-long.cs: tests for (ulong)int * (ulong)int also
19184         * mini.c: use the same trick for (ulong)int * (ulong)int
19185
19186 2003-05-27  Nick Drochak <ndrochak@gol.com>
19187
19188         * basic-long.cs: add regression test for (long)int * (long)int
19189         * cpu-pentium.md: add op_bigmul specification
19190         * inssel-long32.brg: add OP_BIGMUL rule
19191         * mini-ops.h: add OP_BIGMUL
19192         * mini-x86.c: register allocator: handle case where src1 needs to be
19193         in EAX.
19194         * mini.c: substitute special BIGMUL opcode in the tree for 
19195         (long)int * (long)int
19196
19197 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19198
19199         * jit-icalls.c: call the type ctor on field access if needed.
19200
19201 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19202
19203         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19204         to a method (including results of ldelema, bug#43207).
19205
19206 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19207
19208         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19209         colors to show exception handler blocks.
19210
19211         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19212         (fix for pinvoke7.cs).
19213
19214 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19215
19216         * mini.h, mini.c: ensure correct initialization order for types that
19217         require it. Prepare for lazy compilation of jit icall wrappers.
19218         Provide a name for opcode emulation to reduce unneeded mallocing.
19219
19220 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19221
19222         * mini-x86.c: better register restoring code and profiling
19223         support for tail calls.
19224
19225 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19226
19227         * mini.h, driver.c: prepare for leaf methods optimization.
19228
19229 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19230
19231         * mini.c: get targets of branches before converting a method.
19232
19233 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19234
19235         * mini.c (optimize_branches): added some experimental code (disbaled) 
19236
19237 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19238
19239         * mini.c (optimize_branches): fix branch to branch optimization 
19240
19241         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19242
19243         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19244
19245         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19246
19247         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19248         if needed.
19249
19250 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19251
19252         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19253         enable use of interface variables again.
19254
19255         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19256         I1 to registers because there is no simply way to sign extend 8bit
19257         quantities in caller saved registers on x86.
19258
19259         * inssel-float.brg: set costs of some rules to 2 so
19260         that monobure always select the arch. specific ones if supplied,
19261         regardless of the order we pass the files to monoburg.
19262
19263 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19264
19265         * mini.c, mini-x86.c: since the magic trampoline for jumps
19266         can't patch the code directly, we do it as soon as the
19267         method gets compiled.
19268
19269 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19270
19271         * mini-x86.c, mini.h: introduce a new patching method
19272         to support CEE_JMP and tail calls.
19273         * mini.c: obey tail.call. Don't precompile methods target
19274         of CEE_JMP.
19275         * tramp-x86.c: new trampoline code to handle methods
19276         reached through a jump.
19277
19278 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19279
19280         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19281         bit values to registers
19282
19283 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19284
19285         * mini.c (mono_compile_get_interface_var): share interface
19286         variables if possible.
19287
19288 2003-05-16  Martin Baulig  <martin@ximian.com>
19289
19290         * debug-mini.c (mono_init_debugger): New function to initialize
19291         the debugger.  This is not in the debugger since it needs to
19292         access some of mini's internals.
19293
19294 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19295
19296         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19297
19298 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19299
19300         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19301         for value type handling.
19302
19303 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19304
19305         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19306         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19307
19308 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19309
19310         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19311           the constructor through a proxy.
19312
19313 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19314
19315         * jit-icalls.c, inssel.brg: fixes to array element address
19316         calculations.
19317
19318 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19319
19320         * mini-x86.c (is_regsize_var): allocate pointer to registers
19321
19322 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19323
19324         * driver.c: fixed typo, added intrins to the set of optimizations
19325         tested with regressions.
19326
19327 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19328
19329         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19330         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19331         test case.
19332
19333 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19334
19335         * inssel.brg: remove some common pop instructions without side effects
19336
19337 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19338
19339         * inssel-x86.brg: fixed thinko in int to double conversions.
19340
19341 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19342
19343         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19344
19345 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19346
19347         * inssel-long32.brg: two more missing instructions.
19348
19349 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19350
19351         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19352         if not already set.
19353
19354 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
19357         correctly.
19358
19359         * basic-float.cs: Added tests for negative zero.
19360
19361 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19362
19363         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
19364         a couple of missing operations for long casts, with test cases.
19365
19366 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19367
19368         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
19369
19370 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
19371
19372         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
19373         code size estimation.
19374
19375 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19376
19377         * mini.c (mono_jit_create_remoting_trampoline): make it work with
19378         abstract methods (fix bug 42542)
19379
19380         * aot.c: add ability to handle array types
19381         
19382 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
19383
19384         * mini.c: Call the _specific versions of the object allocation
19385         functions if possible.
19386
19387 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19388
19389         * driver.c: call setlocale ().
19390
19391 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19392
19393         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
19394         windows build.
19395
19396 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19397
19398         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
19399
19400         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
19401         wrappers (fix bug 42122)
19402
19403 2003-05-04  Martin Baulig  <martin@ximian.com>
19404
19405         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
19406
19407         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
19408         s/mini_set_defaults/mono_set_defaults/g.
19409
19410 2003-05-04  Martin Baulig  <martin@ximian.com>
19411
19412         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
19413
19414 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19415
19416         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
19417         (reported by Don Roberts).
19418
19419 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19420
19421         * mini.c: temporarily work around two bugs for this release.
19422
19423 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19424
19425         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
19426         that contains -export-dynamic and it makes using the ld script
19427         useless.
19428         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
19429
19430 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19431
19432         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
19433         specific cpu.
19434
19435 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19436
19437         * mini.c: make sure leave calls all the needed finally blocks,
19438         even when the target jumps out of multiple exception clauses.
19439
19440 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19441
19442         * ldscript, Makefile.am: add linker script to reduce the number of
19443         exported symbols (should also fix the issues with libwine defining
19444         some of the same symbols in io-layer).
19445
19446 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
19447
19448         * driver.c (mini_main): Avoid assertion when no file name is given on 
19449         the command line.
19450
19451 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
19452
19453         * driver.c: added --version/-V command line option.
19454         Added the inline optimization in the regression tests.
19455
19456 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19457
19458         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
19459         to the type in the method signature (fixes bug#42134).
19460
19461 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
19462
19463         * mini.c: when inlining, check this is not null only when needed (bug #42135).
19464
19465 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
19466
19467         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
19468
19469 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19470
19471         * driver.c: fixed bug #42100.
19472
19473 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19474
19475         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
19476
19477 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19478
19479         * mini.c: moved most of the code required to do inlining to its own
19480         function so it can be reused. Inline also ctors if appropriate.
19481
19482 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19483
19484         * Makefile.am: Link with -export-dynamic so shared libs loaded by
19485         the runtime can call mono API functions.
19486
19487 2003-04-27  Martin Baulig  <martin@ximian.com>
19488
19489         * debug-mini.c (mono_debug_init_method): Added
19490         `guint32 breakpoint_id' argument; if the method has a breakpoint,
19491         send a notification to the debugger.
19492
19493         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
19494         running in the Mono Debugger, just pass the breakpoint number to
19495         mono_debug_init_method().
19496
19497         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
19498
19499 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
19500
19501         * mini.c: allow some more unsafe compares.
19502
19503 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19504
19505         * mini-x86.c, Makefile.am: make distcheck works (partially from
19506         a patch by Richard Lee <r.h.lee@attbi.com>).
19507         * regset.c, regset.h: removed, they are unused.
19508
19509 2003-04-25  Dick Porter  <dick@ximian.com>
19510
19511         * driver.c: Usage reports the name as 'mono' not 'mini'
19512         * exceptions-x86.c: Build and run on freebsd
19513
19514 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19515
19516         * Makefile.am: install the program with the 'mono' name and
19517         the library as libmono instead of mini and libmini.
19518
19519 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19520
19521         * driver.c: provide the APIs for the embedding interface of the old jit.
19522
19523 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
19524
19525         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
19526
19527 2003-04-23  Martin Baulig  <martin@ximian.com>
19528
19529         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
19530
19531         * driver.c: Added `--debug' command line argument to enable
19532         debugging support.
19533
19534 2003-04-23  Martin Baulig  <martin@ximian.com>
19535
19536         * debug.[ch]: Removed.  The code is now in
19537         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
19538
19539         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
19540         last six months.
19541
19542 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
19543
19544         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
19545
19546 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19547
19548         * mini.c:
19549         (mini_cleanup): moved mono_runtime_cleanup call after the call to
19550         mono_domain_finalize.
19551         (mini_method_compile): use mono_method_profile* if the the option is
19552         enabled.
19553
19554 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
19555
19556         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19557         methods with their wrapper.
19558
19559         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19560         methods with their wrapper.
19561
19562         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
19563         their wrapper.
19564
19565         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
19566         wrapper.
19567
19568         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
19569         methods.
19570
19571 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
19572
19573         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
19574
19575 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
19576
19577         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
19578         of the mempool. This is slightly faster and uses less memory
19579
19580 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19581
19582         * mini.c: avoid O(n) allocation for variables.
19583
19584 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19585
19586         * mini.c: handle items on the stack after inlining methods.
19587
19588 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19589
19590         * mini.c: make the method->opcode optimization dependent
19591         on MONO_OPT_INSTRINS and do it lazily.
19592
19593 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19594
19595         * driver.c: print overall results at the end of regression run.
19596
19597 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19598
19599         * inssel.brg: don't overwrite symbolic registers.
19600
19601 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19602
19603         * inssel-x86.brg: fix conversion from long to float.
19604
19605 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
19606
19607         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
19608
19609 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
19612
19613         * driver.c: Added --print-vtable option as in the old JIT.
19614
19615 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19616
19617         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
19618
19619 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19620
19621         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
19622
19623 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
19624
19625         * mini.c regalloc.c regalloc.h: Fix memory leak.
19626
19627 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
19628
19629         * aot.c (mono_aot_get_method): register all used strings
19630
19631 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19632
19633         * mini.c: always intern strings references with ldstr at compile time.
19634
19635 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19636
19637         * Makefile.am: add BUILT_SOURCES.
19638
19639 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19640
19641         * driver.c: give a better error message when the assembly to execute
19642         doesn't have an entry point.
19643
19644 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
19645
19646         * Makefile.am: added hack for automake
19647
19648         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
19649         correct sematics.
19650
19651         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
19652
19653 22003-04-07  Martin Baulig  <martin@ximian.com>
19654
19655         * Makefile.am: Added Makefile.am.
19656
19657         * debugger-main.c: Removed, this is now in the debugger where it
19658         belongs.
19659
19660         * mini.pc.in: Call this package `mini' for the moment.
19661
19662
19663
19664
19665
19666
19667
19668
19669
19670
19671
19672
19673
19674
19675