* Makefile.am (version.h): Fix issues when built out of tree.
[mono.git] / mono / mini / ChangeLog
1 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2
3         * Makefile.am (version.h): Fix issues when built out of tree.
4         Remove some redundant 'grep's piped through 'sed's.
5
6 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
7
8         This patch is contributed under the terms of the MIT/X11 license
9
10         * mini-ppc.c (mono_arch_output_basic_block):
11         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
12         for bits 32-47 with signed load/store diplacements for bits
13         48-63.  Use prefered base/offset order for indexed form.
14         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
15         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
16         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
17         OP_LOADI2_MEMBASE): Same.
18         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
19         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
20         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
21         indexed form.
22         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
23         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
24         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
25         OP_LOADI1_MEMINDEX): Same
26         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
27         OP_STORER8_MEMINDEX): Same
28         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
29         computations.
30         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
31         for bits 32-47 with signed load/store diplacements for bits
32         48-63.  Use prefered base/offset order for indexed form.
33
34 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
35
36 This patch is contributed under the terms of the MIT/X11 license
37
38         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
39         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
40         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
41         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
42         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
43         cfg->stack_usage to avoid size warnings.
44         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
45         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
46         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
47         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
48         to convert.
49         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
50         after code varible is initialized.
51         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
52         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
53         (mono_arch_emit_epilog): 
54         Move Use ppc_load32 for cfg->stack_usage to avoid size
55         warnings.
56
57 2009-07-24  Mark Probst  <mark.probst@gmail.com>
58
59         * method-to-ir.c: The write barrier doesn't do the store anymore,
60         so we have always to emit it.  Also, emit the wbarrier after the
61         store.
62
63 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
64
65         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
66         for argument count 3 too.
67
68 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
69
70         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
71         the caller handle the exceptions.
72         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
73         method. Fixes #524498.
74
75 2009-07-22  Geoff Norton  <gnorton@novell.com>
76
77         * mini-exceptions.c: Fix build on ia64.
78
79 2009-07-22  Mark Probst  <mark.probst@gmail.com>
80
81         * mini-exceptions.c (ves_icall_get_frame_info): Use write
82         barriers.
83
84 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
85
86         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
87         code.
88
89 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
90
91         * basic-simd.cs (Main): Pass args to the test driver.
92
93 2009-07-20  Geoff Norton  <gnorton@novell.com>
94
95         * mini-x86.h: Fix the x86 version guards to use Apple's
96         properly defined macros.
97
98 2009-07-20  Geoff Norton  <gnorton@novell.com>
99
100         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
101         aligned access.
102
103 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
104
105         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
106         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
107         the information which is needed for invokes, so only one locking+hash table
108         lookup is needed.
109
110         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
111         
112         * aot-compiler.c (add_generic_instances): Emit instances of 
113         GenericComparer<T> for primitive types.
114
115 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
116
117         * mini-posix.c: Fix linux build.
118
119 2009-07-19  Geoff Norton  <gnorton@novell.com>
120
121         * mini.h: Add prototypes for mono_runtime_syscall_fork and
122         mono_gdb_render_native_backtraces
123         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
124         so we implement the sane semantics to the runtime here
125         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
126         so we need to call it differently (mono_gdb_render_native_backtraces)
127         * mini-posix.c: Move the old semantics from mini.c to the prototypes
128         here for default implementations.
129         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
130         support Apple's weird syscall (SYS_fork) implementation and not busy
131         loop in abort() on native crashes on OSX anymore.
132
133 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
134
135         * aot-runtime.c (load_method): Change the handling of the
136         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
137         are used.
138
139         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
140
141 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
142
143         * mini.c (mono_patch_info_equal): Revert the last change for now as it
144         seems to break the aot tests.
145         
146         * mini.c (mono_patch_info_equal): Fix the handling of 
147         MONO_PATCH_INFO_RGCTX_FETCH.
148
149 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
150
151         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
152
153         * mini.c (mono_patch_info_hash): Fix the handling of 
154         MONO_PATCH_INFO_INTERNAL_METHOD.
155         (mono_patch_info_equal): Ditto.
156
157 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
158
159         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
160         in a few places.
161         
162         * mini-llvm.c: Add some infrastructure for AOT support.
163
164 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
165
166         * mini-llvm-cpp.c: Update to the latest llvm api.
167         
168         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
169         option to false to prevent llvm from installing signal handlers which
170         trip up the gc.
171         
172 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
173
174         * cpu-x86.md:
175         * cpu-amd64.md: Revert previous change as those instructions
176         take 2 separate arguments. Remember to read the arch docs more
177         carefully next time.
178
179 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
180
181         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
182
183 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
184
185         * mini-ppc.c: exploit multiple load/store units if available (rest of
186         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
187         http://bugzilla.novell.com/show_bug.cgi?id=487846).
188
189 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
190
191         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
192         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
193
194 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
195
196         * cpu-x86.md: Fix missing clobbering from trancendental simd
197         ops.
198
199         * cpu-amd64.md: Same.
200
201 2009-07-14 Jerry Maine <crashfourit@gmail.com>
202
203         Contributed under the terms of the MIT/X11 license by
204         Jerry Maine <crashfourit@gail.com>.
205
206         * basic-simd.cs: Added tests for single and doulble indexers.
207
208         * cpu-amd64.md: Added simd opcode information.
209
210         * mini-amd64.c: Added IR to native simd generation code.
211         Added simd register names and function that returns them.
212
213         * mini-amd64.h: Added marcos to turn on simd code compilation in
214         amd64. Added max simd register count marco. Added caller/callee
215         register mask marcos. Added marcos to use simd register bank.
216
217         * mini.h: Added helper marco for shufling dwords and simple
218         floats.
219
220 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
221
222         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
223
224         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
225
226         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
227         the length of the native code as well.
228
229         * basic-simd.cs: Add a test for #521662.
230
231 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
232
233         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
234
235 2009-07-13  Mark Probst  <mark.probst@gmail.com>
236
237         * mini.c: Register function for getting the IP from a signal
238         context with metadata.
239
240 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
241
242         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
243         call a generic class init trampoline if needed. Fixes #519336.
244
245         * generics.cs: Add a test.
246         
247 2009-07-09  Mark Probst  <mark.probst@gmail.com>
248
249         * method-to-ir.c: When doing a call which might be remote from
250         shared generic code to other shared code with open type arguments,
251         get the remoting invoke wrapper from the RGCTX and do an indirect
252         call to it.
253
254 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
255
256         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
257         after the unbox trampoline in the full-aot case.
258
259 2009-07-02  jonas echterhoff <jonas@unity3d.com>
260         
261         * mini.c: Move initialization of jit_mutex before debugger initialization
262         
263         to avoid crashes.
264         
265         
266         * Info.plist: added Info.plist and link flag to enable the mono executable
267         to access other processes. Requires codesigning of the executable to work.
268         
269         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
270         
271         compile on OS X.
272         
273
274 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
275
276         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
277
278 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
279
280         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
281         when the generic instance is an instantiation of a subclass of the
282         methods class. Fixes #517166.
283
284 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
285
286         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
287         code.
288
289         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
290         AOTed code.
291
292         * CMakeLists.txt: Add minimal support for installation.
293
294 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
295
296         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
297         determine whenever a method is directly callable to a separate function.
298
299         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
300         needed ones as a result of the previous change.
301
302         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
303         type of register arrays.
304
305         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
306         type of register arrays.
307
308 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
309         
310         Contributed under the terms of the MIT/X11 license by
311         Jerry Maine <crashfourit@gail.com>.
312
313         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
314
315 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
316
317         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
318
319 2009-06-24  Neale Ferguson <neale@sinenomine.net>
320
321         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
322         dump of structure return value. Fix some formatting.
323         * cpu-s390x.md: Fix lengths of instruction sequences.
324         * mini-s390.c: Minor formatting changes.
325
326 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
327
328         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
329         Use sigaction on freebsd as well.
330
331 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
332
333         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
334         uses #ifdef on it.
335         
336         * mini.c (mini_init): Revert a change which breaks cross-compilation.
337
338 2009-06-22  Mark Probst  <mark.probst@gmail.com>
339
340         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
341
342 2009-06-22  Mark Probst  <mark.probst@gmail.com>
343
344         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
345
346 2009-06-20  Martin Baulig  <martin@ximian.com>
347
348         * debug-mini.c
349         (MonoDebuggerThreadFlags): New enum typedef.
350         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
351         (mono_debugger_thread_created): Added `gpointer func' argument;
352         initialize the new `thread_flags' field.
353
354 2009-06-18  Martin Baulig  <martin@ximian.com>
355
356         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
357         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
358
359         * debug-debugger.c
360         (mini_debugger_set_attach_ok): New function; sets the attach-ok
361         flag in `MONO_DEBUGGER__info.runtime_info'.
362
363         * driver.c
364         (mono_main): Call mini_debugger_set_attach_ok() if generics
365         sharing is disabled.
366
367 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
368
369         * aot-compiler.c (add_wrappers): Fix a warning.
370
371         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
372         the ppc load/store macro changes.
373
374 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
375
376         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
377
378         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
379         not just the got symbol.
380
381         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
382         on ppc.
383
384         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
385         ppc.
386         
387         * aot-compiler.c: Remove some fixmes.
388
389         * driver.c (mono_main): Print a helpful message when cross-compiling.
390
391         * mini.c (mini_init): Disable signal handlers when cross-compiling.
392
393         * method-to-ir.c (initialize_array_data): Do the optimization if the
394         target byte order is little endian, instead of the host byte order.
395
396         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
397         wrappers into the mscorlib image, Emit a unique plt symbol for each
398         image, emit symbols for plt entries.
399
400         * image-writer.c (img_writer_emit_symbol_size): New function to emit
401         a .size directive.
402         
403 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
404
405         * aot-compiler.c (add_wrappers): Avoid calling 
406         mono_marshal_get_type_info () since it can assert for some types.
407
408         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
409         ldtoken are used inside wrappers.
410
411         * helpers.c: Add support for prefixing tools with the arch name.
412
413         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
414         quantities when using ilp32.
415
416         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
417         spill slots. Use sizeof(mgreg_t) for the spill slot size.
418
419         * image-writer.c: Use .long on ilp32.
420
421         * aot-compiler.c: Use 32 bit loads on ilp32.
422         
423 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
424
425         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
426
427         * mini-ops.h: Use TARGET_POWERPC define for consistency.
428
429         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
430
431         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
432         second got slot of every aot image.
433         
434         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
435         aot on platforms with function pointers.
436
437         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
438         support for aot/full aot on ppc/ppc64.
439         
440         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
441         arguments which are needed on ppc.
442
443         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
444         argument.
445
446         * mini-trampolines.c aot-runtime.c: Update after the above changes.
447         
448         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
449
450         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
451
452         * aot-compiler.c (emit_got_info): Fix reading unused memory.
453
454         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
455
456 2009-06-17  Geoff Norton  <gnorton@novell.com>
457
458         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
459
460 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
461
462         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
463         to control whenever the dwarf writer is in xdebug or aot mode.
464         (emit_class_dwarf_info): Use a separate abbrev for structures without
465         children.
466
467         * aot-compiler.c: Pass the appending parameter to 
468         mono_dwarf_writer_create ().
469
470         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
471         falls through to its next bblock. Fixes #513931.
472
473         * iltests.il: Add a test.
474
475         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
476         infor even if emit_line is FALSE, as the apple linker seems to require it.
477
478         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
479
480         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
481         gcc does.
482         (emit_fde): Ditto.
483
484 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
485
486         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
487         mips build.
488
489 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
490
491         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
492         'has_call_handler' fields.
493
494         * method-to-ir.c (mono_method_to_ir): Set them if needed.
495
496         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
497         first bblock if not needed. Fixes #512790.
498         
499 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
500
501         * aot-compiler.c (mono_compile_assembly): Fix a warning.
502         
503         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
504         wrappers.
505
506         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
507         remoting-invoke-with-check wrappers, which are not needed when running with
508         full-aot, since it doesn't support remoting.
509         
510 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
511
512         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
513
514         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
515         method info, it is not used anymore.
516
517         * mini.h: Bump AOT file format version.
518         
519         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
520         word smaller.
521
522         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
523         change above.
524         
525         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
526
527         * mini.h: Bump AOT file format version.
528         
529 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
530
531         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
532         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
533         iphone.
534
535         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
536         of CKFINITE and FBGE for VFP.
537
538 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
539
540         * aot-compiler.c: Don't align code to 16 bytes on arm.
541         
542         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
543         before the methods they belong to.
544
545         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
546         the full-aot case if possible, since the trampoline will be called right 
547         away.
548
549         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
550         trampolines to 1024 after the change above.
551
552         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
553         trampoline to save 8 bytes per trampoline.
554
555         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
556         change above.
557
558 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
559
560         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
561
562 2009-06-08  Martin Baulig  <martin@ximian.com>
563
564         * debug-mini.c
565         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
566         (_mono_debugger_throw_exception): Don't make this static.
567         (_mono_debugger_unhandled_exception): Likewise.
568         (mono_debugger_handle_exception): Moved to mini-exceptions.c
569
570         * debug-mini.c
571         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
572         (_mono_debugger_throw_exception): Add function prototype.
573         (_mono_debugger_unhandled_exception): Likewise.
574
575         * mini-exceptions.c
576         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
577         arg; return the first exception handler if the exception is caught
578         and we're running inside the debugger.
579         (mono_debugger_handle_exception): Moved here from debug-mini.c;
580         improve exception handle inside runtime-invoke, check whether the
581         exception is actually caught in the method being invoked and not
582         by the runtime-invoke-wrapper.
583
584 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
585
586         * image-writer.c: Improve support for the osx assembler.
587
588         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
589         support them.
590
591 2009-06-08  Martin Baulig  <martin@ximian.com>
592
593         * debug-mini.c
594         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
595         (_mono_debugger_throw_exception): Don't make this static.
596         (_mono_debugger_unhandled_exception): Likewise.
597         (mono_debugger_handle_exception): Moved to mini-exceptions.c
598
599         * debug-mini.c
600         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
601         (_mono_debugger_throw_exception): Add function prototype.
602         (_mono_debugger_unhandled_exception): Likewise.
603
604         * mini-exceptions.c
605         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
606         arg; return the first exception handler if the exception is caught
607         and we're running inside the debugger.
608         (mono_debugger_handle_exception): Moved here from debug-mini.c;
609         improve exception handle inside runtime-invoke, check whether the
610         exception is actually caught in the method being invoked and not
611         by the runtime-invoke-wrapper.
612
613 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
614
615         * image-writer.c (append_subsection): Don't align subsections of the
616         debug_line section as a workaround.
617
618         * dwarfwriter.c: Emit line number info in the AOT case as well.
619
620 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
621
622         This patch is contributed under the terms of the MIT/X11 license
623
624        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
625        code_len <= code_size
626
627 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
630
631 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
632
633         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
634         invoke wrappers, we now use trampolines instead.
635
636 2009-06-04  Mark Probst  <mark.probst@gmail.com>
637
638         * mini-darwin.c: The exception thread must not be registered with
639         the GC.
640
641 2009-06-04  Mark Probst  <mark.probst@gmail.com>
642
643         * mini-gc.c: Disable the code because it makes SGen crash.
644
645 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
646
647         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
648         instead of asserting.
649
650 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
651
652         * aot-compiler.c (mono_compile_assembly): Move the creation of the
653         output file after the code has been compiled.
654
655 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
656
657         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
658
659 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
660
661         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
662         entries distinction to simplify the code.
663
664         * mini.h: Bump AOT file format version.
665         
666 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
667
668         * objects.cs: Fix the signature of one of the tests.
669
670         * mini.c (mini_create_ftnptr): New helper function, moved here from
671         object.c.
672         (mini_get_addr_from_ftnptr): Ditto.
673         (mini_init): Install the new helpers.
674
675 2009-05-28  Martin Baulig  <martin@ximian.com>
676
677         Correctly initialize the debugger when embedding Mono.
678
679         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
680         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
681         see documentation in mini_debug_running_inside_mdb().
682
683         * debug-debugger.c
684         (mini_debug_running_inside_mdb): New function to check whether
685         we're running inside mdb.
686
687         * mini.c (mini_init): Call mini_debugger_init() if we're running
688         inside the debugger.
689
690         * driver.c (mono_main): Moved the call to mini_debugger_init()
691         into mini_init() to make this work when embedding Mono.
692
693         * debug-debugger.c (mini_debugger_init): Warn about duplicate
694         calls to mini_debugger_init().
695
696         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
697         mono_debugger_main() -> mini_debugger_main() and put them inside a
698         `MONO_DEBUGGER_SUPPORTED' conditional.
699
700 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
701
702         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
703         this is no longer in use.
704         * mini.h: Same.
705
706 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
707
708         * mini-sparc.c (add_outarg_load): Fix the sparc build.
709
710         * aot-compiler.c (emit_method_code): Always write out C style symbols for
711         methods.
712
713 2009-05-27  Martin Baulig  <martin@ximian.com>
714
715 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
716
717         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
718         long_conv_to_r_un to 64 bits.
719
720         * cpu-x86.md: Increase the instruction size due to the changes.
721
722         * iltests.il.in: Add regression test.
723
724         Fixes #467201.
725
726 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
727
728         * objects.cs: Move the previous test from basic.cs to here.
729
730 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
731
732         * basic.cs: Add regression test for #506915.
733
734 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
735
736         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
737         optimization we must check the bb of the first byte of stobj as
738         it's the only one set in cil_offset_to_bb.
739
740         Fixes #506915.  
741
742 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
743
744         * image-writer.c: Fix pointer directive on ppc64.
745
746 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
747
748         * image-writer.c (asm_writer_emit_section_change): Avoid using
749         .bss subsections on ppc too.
750
751 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
752
753         * image-writer.c: Fix the definition of TARGET_ASM_....
754         
755         * image-writer.c: Fix the emission of assembler directives in the last
756         change.
757
758         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
759         exception throwing code to accomodate ppc64.
760
761         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
762         size to work on ppc64 too.
763
764         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
765         too.
766
767         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
768         the assembler dialect instead of using platform specific defines.
769
770 2009-05-22  Geoff Norton  <gnorton@novell.com>
771
772         * mini-arm.c (get_call_info): If a structure is split between the stack
773         and argument registers, we should not advance the stack pointer by the entire
774         native size, but just by the amount that spilled.
775
776 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
777
778         * mini-arm.c (get_call_info): Handle structures with alignment requirements
779         correctly.
780
781 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
782
783         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
784         wrappers normally.
785         
786         * aot-compiler.c (add_extra_method): Fix up the collection of extra
787         methods so wrapper don't get added twice.
788         (add_generic_instances): Don't add methods of arrays.
789
790         * generics.cs: Mark one test as !FULLAOT.
791
792 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
793
794         * mini-x86.c (emit_move_return_value): Remove unused vars.
795
796 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
797
798         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
799         decomposing 8 bytes structs into a LCALL.
800
801         * mini-x86.c (emit_move_return_value): We no longer push the vtype
802         pointer for where to store the returned regs.
803
804         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
805         state the concern.
806
807         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
808
809 2009-05-20  Miguel de Icaza  <miguel@novell.com>
810
811         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
812         without getenv.
813
814 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
815
816         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
817
818         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
819         generics.
820
821 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
822
823         * local-propagation.c (mono_local_cprop): Avoid local propagation
824         across paired add/sub if the first instruction dest reg is it's
825         source reg. For example:
826
827         int_add_imm R12 <- R12 [1] clobbers: 1
828         int_sub_imm R42 <- R12 [1] clobbers: 1
829
830         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
831         maintain the math identify.
832
833         Fixes #505375.
834
835 2009-05-20  Andreia Gaita  <avidigal@novell.com>
836
837         * Makefile.am: avoid going on the network just to get the revision,
838         use git log instead
839
840 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
841
842         Fixed estimate for short branches on amd64 (they were off mark, and
843         enabling call prolog-epilog instrumentations caused assertions).
844         * mini.h (struct MonoBasicBlock): added max_length field to hold the
845         estimate for the maximum length of this basic block.
846         * mini-amd64.c:
847         - mono_arch_emit_prolog: compute max_length for each basic block
848           (instead of max_offset), and inflate size estimate also for entry bb
849           in case of code instrumentation.
850         - mono_arch_output_basic_block: get rid of "cpos" (the current
851           estimated "position" in the code), and always use "offset" instead,
852           which is accurate; at the beginning of the function quickly recompute
853           max_offset for all the remaining blocks, starting from the current
854           cfg->code_len (which is correct, and not estimated) and using the
855           estimated block lengths computed previously.
856
857 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
858
859         * exceptions-ppc.c: Remove the caching from the trampoline creation 
860         functions, it is already done in the caller.
861
862         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
863
864         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
865         MONO_ARCH_GSHARED_SUPPORTED define.
866
867         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
868
869         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
870         function.
871
872 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
873
874         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
875         call to mono_marshal_get_rgctx_invoke ().
876
877         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
878         mono_marshal_get_static_rgctx_invoke (), all platforms which support
879         gshared use the static rgctx trampolines now.
880         
881         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
882         platform supports it.
883
884 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
885
886         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
887
888         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
889
890 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
891
892         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
893
894         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
895         for ppc.
896
897 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
898
899         Made it possible for mono_arch_instrument_epilog to preserve
900         argument registers, otherwise instrumenting the "epilogue" before
901         a tail call would clobber them.
902         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
903         if like mono_arch_instrument_epilog but with an additional parameter
904         that states if argument registers must be preserved.
905         * mini.c: implemented mono_arch_instrument_epilog as a call to
906         mono_arch_instrument_epilog_full without asking to preserve argument
907         registers (this makes the existing code work as usual).
908         * mini-amd64.c:
909         - mono_arch_instrument_epilog: add parameter to transform it into
910         mono_arch_instrument_epilog_full, and preserve argument registers
911         when required.
912         - mono_arch_output_basic_block, OP_TAILCALL case: call
913         mono_arch_instrument_epilog_full.
914         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
915         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
916         only transformed mono_arch_instrument_epilog into
917         mono_arch_instrument_epilog_full.
918
919 2009-05-15  Geoff Norton  <gnorton@novell.com>
920
921         * mini-darwin.c: This works on arm now.
922
923 2009-05-14  Geoff Norton  <gnorton@novell.com>
924
925         * jit.h, driver.c: Allow full-aot to be decided programatically by the
926         embedding api.
927
928 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
929
930         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
931         label names.
932
933         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
934         wrappers during full aot mode correctly.
935
936         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
937         methods correctly.
938
939         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
940         mono_metadata_type_hash ().
941
942 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
943
944         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
945         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
946         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
947         Removed MONO_INST_BRLABEL from the instruction flags, and the
948         remaining code that used it, because we do not support branches inside
949         basic blocks (and branch target labels) anymore.
950         * Makefile.am: As part of the above cleanup, remove reference to
951         BURG files which don't exist anymore.
952
953 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
954
955         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
956         osx.
957
958         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
959         to use mono_arch_throw_corlib_exception.
960
961         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
962         mono_arch_throw_corlib_exception for throwing corlib exceptions.
963
964         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
965         domain mempool.
966
967         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
968
969         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
970         for the got to make debugging easier and to avoid confusing it with the
971         system got.
972         
973         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
974         method so a breakpoint can be set when using gdb.
975
976 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
977
978         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
979         on mono_method_get_imt_slot ().
980
981         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
982         num_decodes variables.
983
984         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
985         change as it doesn't seem to work.
986         
987         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
988         wrappers.
989
990 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
991
992         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
993         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
994
995         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
996         builder when using full aot.
997
998         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
999         here, it is already handled.
1000         
1001         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
1002         correctly for IMT.
1003
1004         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
1005
1006         * mini-arm.h: Enable IMT for full aot.
1007         
1008         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
1009         arch doesn't support it.
1010
1011         * mini.c (mini_init): Don't disable IMT for full aot if the
1012         architecture supports it.
1013
1014         * mini.h (MonoAotTrampoline): New enum containing the different types
1015         of 'numerous' trampolines.
1016         (MONO_AOT_FILE_VERSION): Bump this.
1017
1018         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
1019         static rgctx trampolines. Add support for full-aot IMT thunks.
1020
1021         * mini-amd64.h: Enable IMT for full aot.
1022
1023         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
1024         to exclude tests belonging to a category.
1025
1026         * generics.cs: Mark some tests with a !FULLAOT category.
1027
1028         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
1029         generics tests.
1030
1031 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
1034         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
1035         (emit_plt): Fix a warning.
1036
1037 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
1038
1039         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
1040         back into aot-compiler.c to a place where the other functions shared by
1041         the runtime and aot compiler are.
1042         
1043         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
1044         as done previously, instead of in MonoAotFileInfo, since pointers might have
1045         alignment requirements.
1046
1047         * mini.h: Bump AOT file format version.
1048
1049 2009-05-10  Miguel de Icaza  <miguel@novell.com>
1050
1051         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
1052         that is used at runtime from the aot-compiler.c, this makes it
1053         work on setups that remove the AOT compiler from the output
1054         image. 
1055
1056 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
1057
1058         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
1059         PPC.
1060
1061         * mini-ppc.h: Enable static rgctx trampolines for ppc.
1062
1063         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
1064
1065         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
1066         stuff to mono_arch_decompose_long_opts ().
1067         (mono_decompose_opcode): Remove some dead code.
1068
1069 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
1072         cmethod can be null for quite a some reasons.
1073
1074 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1075
1076         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
1077
1078 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
1081
1082 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
1085         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
1086         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
1087         calls returning structures by addr on amd64.
1088
1089         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
1090
1091         * iltests.il.in: Restructure the tail call tests a bit.
1092         
1093 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
1094
1095         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
1096         for virtual methods too.
1097
1098 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
1099
1100         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
1101         due to regression in verifying System.dll.
1102
1103 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1104
1105         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
1106         in dynamic methods.
1107
1108         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
1109         instances.
1110
1111         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
1112         g_str_hash () which can change.
1113
1114         * driver.c (mini_regression): Disable optimizations not supported by
1115         the cpu. Fixes #500019.
1116
1117         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
1118         build.
1119
1120 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
1123         to the latest LLVM code.
1124
1125 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
1128
1129 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
1132         x86/amd64.
1133
1134         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
1135         no longer saving offsets, so just save the patch types along with the other
1136         info.
1137         * aot-runtime.c (load_patch_info): Update after the changes to 
1138         encode_patch_list ().
1139         (decode_got_entry): Removed, merged into load_patch_info ().
1140         (is_shared_got_patch): Removed, call the same function from
1141         aot-compiler.c.
1142
1143         * mini.h: Bump aot file format version.
1144         
1145         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
1146         half-finished no-dlsym code.
1147
1148         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
1149         option.
1150
1151         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
1152         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
1153
1154 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
1157         buffer length to work with AOT code.
1158
1159         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
1160         ldfld/stfld opcodes.
1161
1162         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
1163         as it is not used.
1164
1165         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
1166
1167         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
1168
1169         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
1170         LLVM API.
1171
1172         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
1173         if needed. Don't decompose long operations when using llvm.
1174
1175 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
1178         PAGESIZE constant.
1179
1180         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
1181
1182 2009-05-03  Martin Baulig  <martin@ximian.com>
1183
1184         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
1185         mono_debugger_insert_method_breakpoint() since the class init
1186         handler we're inserting at the top of the method already gives us
1187         a notification.
1188
1189 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
1190
1191         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
1192         to mono_arch_decompose_long_opts () for x86 and arm.
1193
1194 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
1195
1196         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
1197         TARGET_AMD64 here.
1198
1199 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
1200
1201         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
1202         JIT code.
1203
1204 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1205
1206         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
1207         number of trampolines used in full-aot mode.
1208
1209         * aot-compiler.c: Add an ntrampolines option to set the number of 
1210         trampolines emitted in full-aot mode.
1211
1212 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
1213
1214         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
1215         a volatile load. Get rid of get_tempname (), llvm assigns names
1216         automatically.
1217
1218         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
1219         builder function.
1220
1221         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
1222         a value.
1223
1224         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
1225         level 1.
1226
1227         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
1228         to the same register as a fixed sreg2. Fixes #497271.
1229
1230         * iltests.il.in: Add a new test.
1231
1232 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1233
1234         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
1235         stack, since pushes complicate exception handling.
1236
1237         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
1238         the stack if they are passed using moves.
1239
1240         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1241
1242         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
1243         when using llvm.
1244
1245         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
1246         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
1247         of FMOVE if it is an R4.
1248
1249 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
1252
1253         * mini.h (LLVMCallInfo): New structure to store calling convention 
1254         information for the LLVM back end similar to the CallInfo structures in 
1255         the back-ends.
1256
1257         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
1258         call information in a format usable by LLVM.
1259         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
1260
1261         * method-to-ir.c (mono_emit_call_args): Emit calls using 
1262         mono_llvm_emit_call () when compiling using LLVM.
1263
1264         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
1265         comments to all functions. Fix memory leaks. Add a public init/cleanup
1266         function.
1267
1268         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
1269
1270         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
1271         mono_array_new_va () jit icall.
1272         
1273 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
1274
1275         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
1276         multiple machine description files to be specified.
1277         * mini-ops.h: fixes for cross-compilation.
1278
1279 2009-04-22  Miguel de Icaza  <miguel@novell.com>
1280
1281         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
1282         some porting work.
1283
1284 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
1287         to prevent asserts in various passes. Fixes #497220.
1288
1289 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
1292         a racy assert.
1293
1294         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
1295         table to avoid duplicates.
1296
1297         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1298         
1299         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
1300         option is used.
1301
1302 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1303
1304         * mini.c (mini_method_verify): Fail fulltrust code if the exception
1305         is for method or field access.
1306
1307 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
1308
1309         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
1310         a Value to stdout.
1311
1312         * mini-llvm.c (mono_llvm_emit_method): Use it.
1313         
1314         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
1315         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
1316         on volatile values.
1317
1318         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
1319         synchronized methods.
1320
1321         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
1322
1323         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
1324
1325         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
1326         OP_LOADI8_MEM.
1327
1328         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
1329         allowing some options to be set dynamically.
1330
1331 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1332
1333         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
1334         unconditional branch.
1335
1336         * mini.h (MonoTrampolineType): Add new trampoline type 
1337         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
1338         compiled code.
1339
1340         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
1341         function.
1342
1343         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
1344         creation function.
1345
1346         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
1347         is enabled. Instead, use the llvm vcall trampoline.
1348         
1349         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
1350
1351         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
1352         
1353         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1354         functions.
1355
1356         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1357         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1358
1359         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1360         OP_IA64_CSET opcode.
1361
1362         * mini.c: Fix a warning.
1363
1364         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1365         THROW to the appropriate llvm type.
1366
1367 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * mini.c (mini_method_compile): Add statistics for methods JITted
1370         with/without LLVM.
1371
1372 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1375         OP_IA64_CMP_<cond>_IMM opcodes.
1376
1377 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1380         corlib exceptions.
1381
1382         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1383         correctly.
1384
1385         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1386         GENERICINST.
1387
1388 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1389
1390         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1391
1392 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1395         support.
1396
1397         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1398         rgctx invoke trampolines for x86.
1399
1400         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1401         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1402         (mono_arch_get_vcall_slot): Simplify this.
1403
1404 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1405
1406         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1407         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1408
1409 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1410
1411         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1412         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1413
1414         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1415
1416         * liveness.c (visit_bb): Remove a needless assert.
1417
1418 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1419
1420         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
1421         full aot support to the arch specific code.
1422
1423         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
1424
1425         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
1426
1427         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
1428         
1429         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
1430         collect information about the delegate invoke impl trampolines.
1431
1432         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
1433         to save trampolines during full-aot mode.
1434
1435         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
1436         creation function which returns a trampoline which sets the rgctx
1437         argument.
1438         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
1439         wrapper if possible.
1440         (mono_delegate_trampoline): Ditto.
1441
1442         * mini.c (mono_jit_runtime_invoke): Ditto.
1443
1444         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
1445         
1446         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
1447
1448         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1449         
1450 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
1453         just setting the opcode to OP_NOP.
1454
1455 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * mini.c (mini_method_compile): Put the last change inside an 
1458         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
1459         
1460         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
1461         and extend live ranges to cover the whole method when using xdb.
1462
1463         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
1464         do it in the trampolines.
1465
1466         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
1467         needed.
1468
1469         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1470         
1471         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
1472         call code in full-aot mode since IMT is disabled there.
1473         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
1474         new JIT no longer has that restriction.
1475
1476         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1477
1478         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
1479         a more compact format.
1480         (mono_aot_wrapper_name): New function to return a unique name for a
1481         wrapper method, also used by the AOT runtime.
1482
1483         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
1484         aot-compiler.c.
1485
1486         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
1487         when a ICollection<T> etc is encountered.
1488         (add_generic_instances): Process method arguments/locals too.
1489         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
1490         trampoline names.
1491
1492         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
1493         
1494 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
1495
1496         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
1497
1498         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
1499
1500         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
1501         representing the result of the decomposition. Nullify instructions
1502         instead of setting them to OP_NOP since nops can't have registers
1503         set.
1504
1505 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1506
1507         * aot-compiler.c (mono_compile_assembly): Split this huge function into
1508         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
1509         info. Strip 'mapping symbols' on ARM.
1510
1511         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
1512         
1513         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
1514         this with the native genmdesc.
1515
1516 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1517
1518         * aot-runtime.c:  Fixing the MSVC build.
1519
1520         Code is contributed under MIT/X11 license.
1521
1522 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
1525         JITted code depends on it.
1526
1527 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1528
1529         * aot-compiler.c: Use new MonoGenericParam accessors.
1530
1531 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1532
1533         Reduce memory usage and improve correctness wrt MonoGenericParam
1534         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
1535         handing.  Avoid allocating MonoGenericParams, but use the ones in
1536         the container itself.
1537
1538 2009-04-07  Miguel de Icaza  <miguel@novell.com>
1539
1540         * tasklets.c: Return exceptions in the out argument.
1541
1542 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
1545         opcode. Use pointer types in more places instead of casting them to 
1546         integers.
1547
1548         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
1549         optimizations.
1550         (mono_llvm_optimize_method): New helper function to optimize a method.
1551
1552         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
1553         widening code so it could be called from more places.
1554         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
1555         code paths in the call opcodes.
1556
1557 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
1558
1559         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
1560
1561 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1562
1563         * dwarfwriter.c: Use _ to separate class name 
1564         components as gdb can't handle '.'. Represent reference variables
1565         as 'class <NAME>&'.
1566         
1567         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
1568
1569         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
1570         
1571         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
1572
1573         * gc-test.cs: New file with GC stack marking tests.
1574         
1575         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
1576         negative numbers for vfp.
1577
1578         * basic-float.cs: Add a test.
1579         
1580 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
1581
1582         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
1583
1584 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
1585
1586         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
1587         part of tasklet/continuation support.
1588
1589 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
1592         amd64 opcodes inside an ifdef.
1593
1594         * dwarfwriter.c: Emit inheritance information for classes, emit fields
1595         of complex types.
1596         
1597         * dwarfwriter.c (emit_type): Emit the class info for classes.
1598
1599 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
1602
1603         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
1604
1605         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
1606
1607         * ssa.c (mono_ssa_compute): Fix some memory leaks.
1608
1609 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1612
1613         * mini-llvm.c: Update comments.
1614
1615         * mini.h (COMPILE_LLVM): New macro.
1616
1617         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1618
1619         * ssa.c (mono_ssa_compute): Ditto.
1620         
1621         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1622         the unwind ops from a DWARF FDE.
1623
1624         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1625         methods by extracting the dwarf unwind ops from the unwind info generated
1626         by LLVM.
1627         
1628         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1629         calls.
1630
1631         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1632         addressing modes.
1633
1634 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1635
1636         * Makefile.am (llvm_sources): Enable this.
1637
1638         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1639         failing back to the JIT if something cannot be handled.
1640
1641         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1642         compiling with LLVM.
1643
1644         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1645         compiling with LLVM.
1646
1647         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1648         compiling with LLVM.
1649
1650         * mini-ops.h: Add a few opcodes needed by LLVM.
1651
1652         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1653         has no unwind info.
1654
1655         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1656         backend.
1657
1658         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1659
1660         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1661
1662 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1663
1664         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1665         ridiculously large methods.
1666
1667 2009-03-31  Martin Baulig  <martin@ximian.com>
1668
1669         * debug-debugger.c (debugger_remove_breakpoint): Call
1670         mono_debugger_remove_class_init_callback ().
1671
1672 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1673
1674         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1675         right before emitting code, not at the start.
1676
1677         * mini.c (mono_postprocess_patches): Extract this into a separate function
1678         from mono_codegen ().
1679
1680         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1681         byref types correctly.
1682
1683 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1686         by the last change.
1687
1688 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1689
1690         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1691         indirect calls, this avoids problems where get_vcall_slot () would get
1692         confused by the native code for the instruction preceeding the call.
1693         (mono_arch_get_vcall_slot): Simplify this.
1694         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1695
1696         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1697         register allocator now seems to depend on them instead of the data in
1698         cpu-<ARCH>.md.
1699
1700         * mini.c (mini_method_compile): Throw the correct type of exception if
1701         mono_method_get_header () fails because of a loading error.
1702
1703 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * mini.c (mini_method_compile): Clear the loader error if the method
1706         header cannot be decoded.
1707
1708         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1709         interface methods on proxies correctly.
1710
1711         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1712         this argument for vtype methods. Add precise liveness info for arguments.
1713
1714         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1715         LIVERANGE_START/END opcodes.
1716
1717         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1718         for arguments and values in registers.
1719
1720 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1723         return a valuetype. Fixes #487518.
1724
1725         * iltests.il: Add a test.
1726         
1727         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1728
1729         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1730         closed over a null reference correctly.
1731
1732 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1733
1734         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1735
1736 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1737
1738         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1739         allocated to the same registers as fixed sregs.
1740
1741 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1742
1743         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1744         ATOMIC_CAS_IMM ops.
1745
1746         * method-to-ir.c: Handle more cases for
1747         Interlocked.CompareExchange.
1748
1749         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1750         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1751         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1752
1753 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1754
1755         * aot-runtime.c (decode_method_ref): Fix a warning.
1756
1757         * unwind.c (mono_unwind_frame): Ditto.  
1758
1759 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1762         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1763
1764         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1765         fix the handling of large values in the ALU_PC_G0_NC relocation.
1766
1767 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1770
1771 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1772
1773         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1774         ops.
1775
1776 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1777
1778         * method-to-ir.c: MINI_OP3 needs a comma.
1779
1780         * method-to-ir.c, mini.h, mini.c: Remove
1781         mono_init_op_sreg_counts ().
1782
1783 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1786         OP_JMP.
1787         
1788         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1789         assertion.
1790
1791         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1792
1793         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1794         code somewhat.
1795
1796 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1797
1798         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1799         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1800         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1801         operations.
1802
1803 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * driver.c: Change location of gc_wrapper.h.
1806
1807         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1808         inside finally clauses correctly. Fixes #485721.
1809
1810         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1811         after the change above.
1812
1813         * exceptions.cs: Add a test.
1814         
1815 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1818
1819         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1820         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1821         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1822
1823         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1824         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1825
1826 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1827
1828         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1829         Simplify logic for ensure_method_is_allowed_to_call_method. 
1830         Handle wrappers on callers.
1831
1832 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1835         them don't run yet.
1836
1837         * basic-simd.cs: Fix the names of some test methods.
1838
1839 2009-03-18  Geoff Norton  <gnorton@novell.com>
1840
1841         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1842
1843 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1846
1847 2009-03-17  Jb Evain  <jbevain@novell.com>
1848
1849         * driver.c: remove now uneeded call to mono_gc_base_init before
1850         mono_profiler_load.
1851
1852 2009-03-17  Jb Evain  <jbevain@novell.com>
1853
1854         * dwarfwriter.c (token_handler): handle more cases.
1855
1856 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1857
1858         * method-to-ir.c: Remove more dead code (that was required only
1859         because of method_is_safe). Fix compiler warnings.
1860
1861 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1862
1863         * method-to-ir.c: Remove unneeded/useless method_is_safe
1864         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1865
1866 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1867
1868         * mini.c (mini_method_compile): Print the method been compiled with
1869         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1870         for people not familiar with the runtime.
1871
1872 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1875         a managed object which is later put into a GList. Return its class instead.
1876
1877         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1878         stack slots when using sgen.
1879
1880 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1881
1882         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1883
1884 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1887         > so it works on the first vreg as well.
1888
1889 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1890
1891         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1892         trigger randomly.
1893
1894         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1895         
1896         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1897         implement GArray.
1898
1899 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1900
1901         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1902         native->IL offset mapping.
1903
1904 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1905
1906         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1907
1908         * basic.cs: Add a test.
1909
1910 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1911
1912         * mini-x86.c (mono_arch_output_basic_block): Use different
1913         registers in case the ones we want to overwrite are used by the
1914         other operand.  Fixes regression in #480807.
1915
1916 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1917
1918         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1919
1920         * dwarfwriter.c (emit_line_number_info): The line number info for
1921         IL code was off by one. Fix that.
1922
1923         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1924         stack.
1925
1926 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1927
1928         Contributed under the terms of the MIT/X11 license by Steven
1929         Munroe <munroesj@us.ibm.com>.
1930
1931         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1932         Fixes #483462.
1933
1934 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1937         as well.
1938
1939 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1942         the delegate ctor handling code. Fixes #482638.
1943         
1944         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1945         #481458.
1946
1947         * iltests.il.in: Add a test.
1948         
1949         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1950         mini-posix.c.
1951
1952 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1953
1954         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1955         is shared generic code, return the trampoline, even if the method
1956         has already been compiled.  Fixes #479763.
1957
1958         * mini.c, mini.h: New function
1959         mono_jit_find_compiled_method_with_jit_info() which is the same as
1960         mono_jit_find_compiled_method() but also returns the jit info.
1961
1962 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1963
1964         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1965         for methods which actually have one.  For all other methods, make
1966         sure the this argument var is live the whole method.
1967
1968         * mini.c (mini_method_compile): Every shared method has a
1969         this/vtable/mrgctx info.  Fixes #480807.
1970
1971 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1972
1973         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1974         generic/imt thunks where some entries branch through the vtable,
1975         while other entries branch directly.
1976
1977 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1978
1979         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1980
1981         * mini-windows.c: Ditto.
1982         
1983         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1984         ctors.
1985
1986 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1987
1988         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1989         down an assert.
1990
1991 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1992
1993         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1994         #481403.
1995
1996 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1997
1998         * exceptions-x86.c: Include debug-mini.h - fixes build.
1999
2000 2009-03-04  Martin Baulig  <martin@ximian.com>
2001
2002         * debug-mini.c: Clean up the exception API and add documentation.
2003         (mono_debugger_handle_exception): New public method; this is
2004         called when throwing an exception or encountering an unhandled one.
2005         (mono_debugger_call_exception_handler): Formerly known as
2006         mono_debugger_handle_exception(); this is used to tell the
2007         debugger that we're about to invoke an exception handler.
2008
2009 2009-03-04  Martin Baulig  <martin@ximian.com>
2010
2011         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
2012         ../metadata/mono-debug-debugger.c; save and reset exception state.
2013
2014 2009-03-02  Martin Baulig  <martin@ximian.com>
2015
2016         * debug-mini.c: Moved the debugger exception handling here from
2017         ../metadata/mono-debug-debugger.c.
2018
2019         * debug-mini.h
2020         (MonoDebuggerExceptionAction): New exception typedef.
2021
2022         * debug-mini.c
2023         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
2024
2025         * exceptions-amd64.c
2026         (mono_amd64_throw_exception): Use the new debugger exception
2027         handling code.
2028
2029         * mini-exceptions.c
2030         (mono_handle_exception_internal): Don't call
2031         mono_debugger_unhandled_exception() here.
2032
2033 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2034
2035         * mini.c aot-compiler.c: Update after the changes to 
2036         mono_marshal_get_runtime_invoke ().
2037
2038         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
2039         Virtual generic methods might not have method->slot set, work around
2040         that.
2041
2042         * generics.cs: Add a test.
2043
2044 2009-03-02  Geoff Norton  <gnorton@novell.com>
2045
2046         * mini.c:
2047         * driver.c: Allow signal chaining of SIGFPE as well.
2048
2049 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
2052         this since it now receives the method not its generic context in the
2053         IMT reg.
2054
2055         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
2056         generic/imt thunks where some entries branch through the vtable, while
2057         other entries branch directly.
2058
2059         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
2060
2061         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
2062         support for interface methods as well.
2063
2064         * mini-trampolines.c: Add support for virtual generic methods in interfaces
2065         using the normal IMT thunks.
2066
2067         generics.cs: Add new tests.
2068         
2069         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
2070         the generic inst to the generic imt thunks. This fixes AOT support, 
2071         improves consistency with the normal IMT thunks, and makes it easier to
2072         add support for interface generic virtual methods later.
2073
2074         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
2075         
2076 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * driver.c (mono_set_signal_chaining): New public API function to enable
2079         signal chaining on POSIX platforms.
2080
2081         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
2082         (si@lindenlab.com) to implement signal chaining. The original patch was
2083         contributed under the MIT X/11 license:
2084         https://bugzilla.novell.com/show_bug.cgi?id=318894
2085
2086 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
2087
2088         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
2089         too until it can be made to run on amd64.
2090
2091 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
2094         to  get_generic_context_from_code () + get_call_info () if possible.
2095
2096 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
2097
2098         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
2099         suspend-on-sigsegv functionality.
2100
2101         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
2102         to suspend when a native SIGSEGV is received. This is useful for debugging
2103         crashes which don't happen under gdb, since a live process contains more
2104         information than a core file.
2105
2106         * mini-exceptions.c (mono_print_thread_dump): Use 
2107         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
2108
2109         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
2110
2111         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
2112         
2113         * basic-float.cs: Disable the tests which currently fail on amd64.
2114
2115         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
2116         value to mono_arch_patch_callsite () to fix crashes.
2117         
2118         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
2119
2120 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
2123         nop code by patching the call address to point to the nullified class init
2124         trampoline, as the former does not seem to be safe on SMP machines.
2125
2126 2009-02-23  Mark Probst  <mark.probst@gmail.com>
2127
2128         * mini-ops.h: Fix the argument types for a few x86 opcodes where
2129         they were wrong.
2130
2131 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2132
2133         * basic-float.cs basic-calls.cs: Fix warnings.
2134
2135 2009-02-22  Mark Probst  <mark.probst@gmail.com>
2136
2137         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
2138         correct frame pointer in the LMF.  Should fix #478394.
2139
2140 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
2141
2142         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
2143
2144         * image-writer.c: Make the binary writer less verbose.
2145
2146 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
2149         are called from runtime invoke wrappers.
2150
2151 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
2152
2153         * cpu-ppc.md (store_memindex): Increase the size of this.
2154
2155 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2156
2157         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2158
2159         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
2160
2161         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
2162         OP_LCONV_TO_R_UN.
2163
2164         Last fix for of #467201.
2165
2166
2167 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2168
2169         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2170
2171         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
2172         and long_conv_to_r8_2:
2173
2174         Fixed part of #467201.
2175
2176 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2177
2178         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2179
2180         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
2181         conversion to 32 bits.
2182
2183         * cpu-x86.md: Increase the size of int_conv_to_r4.
2184
2185         * basic-float.cs: Add a test for this.
2186
2187         Fixed part of #467201.
2188
2189 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2190
2191         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2192
2193         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
2194         conversion to 64 bits.
2195
2196         * basic-float.cs: Add a test for this.
2197
2198         Fixed part of #467201.
2199
2200 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2201
2202         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2203
2204         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
2205         This behavior is compatible with MS.
2206
2207         * iltest.il.in: Add a test for this.
2208
2209         Fixed part of #467201.
2210
2211 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2212
2213         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2214
2215         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
2216         change the precision of the value.
2217
2218         * cpu-x86.md: Define len for float_conv_to_r4.
2219
2220         * basic-float.cs: Add a test for this.
2221
2222         Fixed part of #467201.
2223
2224 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2225
2226         * mini.c: Adjust locking order to the new semantics where the loader lock
2227         comes first.
2228
2229 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2230
2231         * aot-runtime.c:
2232         * mini-amd64.c:
2233         * mini-arm.c:
2234         * mini-ia64.c:
2235         * mini-mips.c:
2236         * mini-ppc.c:
2237         * mini-sparc.c:
2238         * mini-trampolines.c:
2239         * mini-x86.c:
2240         * mini.c:
2241         * tramp-alpha.c:
2242         * tramp-amd64.c:
2243         * tramp-arm.c:
2244         * tramp-hppa.c:
2245         * tramp-ia64.c:
2246         * tramp-mips.c:
2247         * tramp-ppc.c:
2248         * tramp-s390.c:
2249         * tramp-s390x.c:
2250         * tramp-sparc.c:
2251         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
2252
2253 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
2256         as it is incorrect.
2257
2258 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
2261         for cctors if needed.
2262
2263 2009-02-17  Mark Probst  <mark.probst@gmail.com>
2264
2265         * mini-ppc.c: Fix build on Darwin.
2266
2267 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2268
2269         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
2270         version instead of 3 as valgrind doesn't like version 3.
2271
2272         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2273
2274         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
2275         usable for hashing methods.
2276         (emit_extra_methods): Use the new hash to avoid putting every method in the
2277         same hash bucket.
2278
2279         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
2280
2281         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
2282         whenever a method ref could match a method.
2283         
2284         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
2285         test to fail.
2286         
2287         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
2288         methods refs.
2289
2290         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
2291
2292         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
2293         the encoding buffer.
2294
2295         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
2296         mono_method_get_header () on inflated methods as an optimization.
2297
2298 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2299
2300         * ssa.c (fold_ins): Fix another crash if the instruction following the
2301         switch was optimized away.
2302
2303 2009-02-16  Mark Probst  <mark.probst@gmail.com>
2304
2305         Contributed under the terms of the MIT/X11 license by Steven
2306         Munroe <munroesj@us.ibm.com>.
2307
2308         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
2309
2310 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2311
2312         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
2313         around the mono_domain_alloc calls, it is now done by the functions
2314         themselves.
2315
2316         * aot-compiler.c (compile_method): Only add wrappers referenced by
2317         the method if compiling with full AOT.
2318         (mono_compile_assembly): Error out if --aot=full is specified on
2319         a platform where it is not supported.
2320
2321         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
2322         on ARM too.
2323
2324         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
2325         AOT support.
2326
2327         * aot-runtime.c (load_named_code): Handle 
2328         mono_arm_throw_exception_by_token.
2329
2330         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
2331
2332         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
2333         unaligned.
2334
2335         * Makefile.am (fullaotcheck): Exit if a test fails.
2336
2337         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
2338         on ARM.
2339         (mono_compile_assembly): Handle the assembler failing.
2340
2341         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
2342         accepting subsections of .bss.
2343
2344         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
2345         was optimized away.
2346
2347         * aot-compiler.c: Remove some unused includes.
2348         
2349         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
2350         now in MonoImageWriter.
2351
2352         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2353         code sequence which matches a non-virtual call. Fixes #472654.
2354
2355 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2358         xdebug code.
2359         
2360         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2361         use the image/dwarf writers directly.
2362
2363         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2364         field.
2365
2366         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2367         MonoDwarfWriter.
2368
2369         * image-writer.h: Fix some typos.
2370
2371         * dwarfwriter.h dwarfwriter.c: New files.
2372         
2373         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2374         separate module.
2375
2376         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2377         argument to return unwind info.
2378
2379         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2380
2381         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2382         
2383         * aot-runtime.c (decode_method_ref): Add a case for 
2384         MONO_AOT_METHODREF_WRAPPER_NAME.
2385
2386         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2387         for AOT.
2388
2389         * aot-compiler.c (encode_method_ref): Use the new constants.
2390
2391         * aot-runtime.c (decode_method_ref): Ditto.
2392
2393         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2394         be compiled, not the icall itself.
2395
2396 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2397
2398         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2399         using decode_method_ref ().
2400
2401         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2402         convert it to an in32. Fixes #475859.
2403
2404         * arrays.cs: Add a test.
2405
2406 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2409         OP_LCONV_TO_U2.
2410
2411         * basic-long.cs: Add a test.
2412
2413 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2414
2415         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
2416         remove the frame pointer in leaf methods which don't receive any
2417         arguments, don't throw exceptions and don't do dynamic stack
2418         allocations.
2419
2420 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2421
2422         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
2423         the fail_tramp changes. Hopefully fixes #475132.
2424
2425 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2426
2427         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
2428         instead of mono_metadata_signature_dup_full.
2429
2430 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
2433         for processing jump tables. Fixes #473787.
2434
2435 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2436
2437         * mini-generic-sharing.c: mini_method_get_context() just calls
2438         mono_method_get_context_general() now.
2439
2440         * mini.c, mini.h: Moved get_object_generic_inst(),
2441         construct_object_context_for_method() and
2442         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
2443
2444 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
2447         basic block fell through to its successor bblock without a branch. Fixes
2448         #474718.
2449
2450         * iltests.il.in: Add a test.
2451         
2452         * aot-compiler.c (encode_method_ref): Encode methods of array types.
2453         (can_encode_patch): We can now handle arrays of generic parameters and
2454         array methods.
2455
2456         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
2457
2458         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
2459         the AOT file to avoid some #ifdefs in aot-runtime.c
2460
2461         * mini.h: Bump AOT file format version.
2462
2463 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * Makefile.am (fullaotcheck): Make this run the tests.
2466
2467         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
2468
2469 2009-02-10  Mark Probst  <mark.probst@gmail.com>
2470
2471         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
2472         individually.  Fixes #473482.
2473
2474 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2475
2476         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2477
2478 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
2479
2480         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
2481         (mono_compile_assembly): Hush compile warnings about
2482         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
2483         code path.
2484
2485 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
2488
2489         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
2490
2491         * aot-compiler.c: Fix arm support.
2492
2493         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
2494         img_writer_emit_unset_mode () function.
2495
2496         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
2497         (mono_unwind_get_dwarf_pc_reg): Ditto.
2498
2499         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
2500         Move almost all platform specific code to a set of arch_ functions, 
2501         and document them to ease porting.
2502         
2503         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
2504
2505         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
2506
2507         * aot-compiler.c: Extract the image writing functionality into a separate
2508         module to reduce the size of this file.
2509
2510 2009-02-09  Geoff Norton  <gnorton@novell.com>
2511
2512         * mini-s390.c: Fix the signature of emit_sig_cookie.
2513
2514 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
2517
2518         * aot-runtime.c (is_shared_got_patch): Ditto.
2519
2520         * aot-runtime.c (load_named_code): Cope with the fact that 
2521         decode_got_entry () won't decode the patch fully if its corresponding got
2522         entry is already filled.
2523         
2524         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
2525         Initialize *ji.
2526         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
2527
2528         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
2529         as the moving pointer instead of 'buf' for consistency with the rest of the
2530         codebase.
2531         (mono_arch_create_monitor_exit_trampoline): Ditto.
2532
2533         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
2534         generic_class_init trampolines.
2535         (add_generic_class): Extract some code from add_generic_instances () into a
2536         separate function so it can be called from other places too.
2537         (compile_method): Call add_generic_class () for the classes of inflated methods
2538         referenced by the method.
2539         (can_encode_patch): Allow references to generic parameters.
2540
2541         * aot-runtime.c: Add support the patches required by the new trampolines.
2542         
2543         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
2544         support.
2545
2546         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
2547         full-aot support.
2548
2549         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
2550         this from get_throw_pending_exception, make the signature full aot compatible.
2551
2552         * Makefile.am (fullaotcheck): New target to run full-aot tests.
2553
2554         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
2555
2556         * exceptions.cs: Add a test.
2557
2558 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2559
2560         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
2561         use the DWARF_DATA_ALIGN constant instead.
2562
2563         * exception-<ARCH>.c: Update after the above change.
2564
2565         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
2566         dwarf unwinder.
2567
2568         * mini-arm.c: Enable the dwarf unwinder.
2569
2570         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
2571         instead of mono_class_setup_vtable ().
2572
2573 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
2576         dwarf unwinder.
2577
2578         * mini-x86.h: Enable the dwarf unwinder.
2579
2580 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
2581
2582         Fix mcs/tests/test-7.cs
2583         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
2584         2009-02-03.
2585
2586 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * mini.c (print_jit_stats): Remove some unused statistics.
2589
2590 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
2593
2594 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2595
2596         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
2597         the method we get from mono_object_get_virtual_method() because
2598         that function does it properly, now.
2599
2600 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
2603         opcodes. Fixes #472775.
2604
2605 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2606
2607         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
2608         fact that mono_find_jit_info() sometimes returns the context
2609         corresponding to the jit info in new_ctx.  Fixes #472600.
2610
2611 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2612
2613         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2614         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2615         klass->enum_basetype directly.
2616
2617         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2618         enum subtypes.
2619
2620         * unwind.c: Avoid 0 sized arrays.
2621
2622 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2623
2624         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2625         size on systems with 64k pages. Fixes #471389.
2626
2627 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2628
2629         Contributed under the terms of the MIT/X11 license by Steven
2630         Munroe <munroesj@us.ibm.com>.
2631
2632         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2633         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2634         necessary.
2635
2636 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2637
2638         Contributed under the terms of the MIT/X11 license by Steven
2639         Munroe <munroesj@us.ibm.com>.
2640
2641         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2642         comparison fix.
2643
2644         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2645         The trampoline can be longer on PPC64.
2646
2647 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2648
2649         Contributed under the terms of the MIT/X11 license by Steven
2650         Munroe <munroesj@us.ibm.com>.
2651
2652         * mini-ppc.c: Compiler warning fixes and trivial code
2653         simplifications.
2654
2655 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2658         ins->dreg which could be a hardware register, not a vreg.
2659
2660         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2661         
2662         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2663         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2664
2665         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2666         
2667         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2668         ->dreg, that is not the vreg we are looking for.
2669
2670         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2671
2672         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2673         LIVERANGE_END.
2674
2675         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2676         strange crashes.
2677
2678 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2679
2680         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2681
2682         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2683         the line diff is 0.
2684
2685         * aot-compiler.c: Add xdebug support on x86.
2686
2687         * unwind.c: Add x86 support.
2688         
2689         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2690         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2691
2692         * mini.c (mini_method_compile): Ditto.
2693         
2694         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2695         the variable index.
2696
2697         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2698         which mimic .push_section/.pop_section in GAS.
2699         
2700         * aot-compiler.c: Emit precise live range information for variables.
2701
2702         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2703
2704         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2705         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2706         them.
2707
2708         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2709         the live ranges of variables.
2710
2711         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2712         of the variable in terms of native offsets.
2713
2714 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2715
2716         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2717         
2718 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2719
2720         Contributed under the terms of the MIT/X11 license by Steven
2721         Munroe <munroesj@us.ibm.com>.
2722
2723         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2724         order (offset then base reg) for ppc_load_multiple_regs.
2725         (emit_save_saved_regs) Correct operand order for
2726         ppc_store_multiple_regs.
2727         (mono_arch_get_call_filter): Correct operand order for
2728         ppc_load_multiple_regs.
2729
2730         * mini-ppc.c (emit_memcpy): Fix operand order for
2731         ppc_load_reg_update and ppc_store_reg_update.
2732         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2733         (mono_arch_emit_epilog): Correct operand order for
2734         ppc_load_multiple_regs.
2735
2736         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2737         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2738
2739 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2740
2741         * cpu-ppc64.md: Fixed storer4_memindex length.
2742
2743 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2746         line number info.
2747         
2748         * aot-compiler.c (emit_line_number_info): Optimize this.
2749
2750 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2751
2752         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2753         
2754         * aot-compiler.c: Add debug info for methods without debug info by
2755         emitting an IL file and having the line number info referencing that file.
2756
2757         * aot-compiler.c: Optimize the size of the generated line number info.
2758
2759         * aot-compiler.c: Emit line number info in xdebug mode.
2760
2761         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2762         million arguments.
2763
2764 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2765
2766         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2767
2768         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2769         is used.
2770
2771 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2772
2773         * basic-calls.cs: Test for the weird crash found on arm.
2774         
2775 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2776
2777         * cpu-arm.md: Increase the size of storer8_membase_reg and
2778         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2779
2780         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2781         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2782         reg to LR otherwise we'll be loading/storing from just the offset.
2783
2784 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2785
2786         Question: if we are storing gint32's inside the "*native_offset",
2787         should we change the signature to "gint32 *native_offset" to
2788         ensure that we do not have type definition problems?
2789         
2790         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2791         an int * as this is what the other function expects, causes
2792         problems with Freescale's compiler that defined int32_t to be a
2793         long and makes int incompatible 
2794
2795 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2796
2797         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2798         filename conflict with bjam.
2799
2800 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2801
2802         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2803         as it might use decomposed ops.
2804
2805 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2808
2809         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2810         is defined.
2811
2812         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2813
2814         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2815         offsets.
2816
2817         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2818         way registers are stored in MonoContext on arm.
2819
2820         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2821         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2822
2823         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2824
2825         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2826
2827         * mini.c (mini_init): Register mono_isfinite.
2828
2829         * jit-icalls.c (mono_isfinite): New jit icall.
2830
2831         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2832         
2833         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2834         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2835         the parent frame.
2836
2837 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2838
2839         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2840         separate frame and stack pointers, so we must use FP to find the register
2841         spill area.
2842         The FP reg is retrieved from the MonoContext::regs array.
2843
2844 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2845
2846         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2847         as FPA requires it.
2848
2849 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2850
2851         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2852         return R4 and R8 when not running under softfloat.
2853
2854         Fixes basic-calls.exe
2855
2856 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * mini-arm.c: Implement some overflow opcodes.
2859
2860 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2861
2862         * ssa.c: handle another alloca.h
2863
2864         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2865         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2866         MONO_ARCH_USE_SIGACTION. 
2867
2868         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2869         capability defines.
2870
2871         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2872
2873         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2874         PPC targets as sigaction does not exist on all platforms, define
2875         this on a per-platform basis.
2876
2877         Instead of erroring out if the platform is not defined, include
2878         mini-ppc-os.h, and expect that the OS specific setting provides
2879         the required information.   
2880
2881 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2882
2883         * aot-compiler.c: Fix --enable-minimal=aot.
2884
2885 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2888         previous change.
2889
2890 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2891
2892         * exceptions-arm.c: Fix warnings.
2893
2894         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2895         ARM.
2896
2897         * mini-x86.c: Fix --enable-minimal=jit build.
2898
2899         * mini.c: Really fix --enable-minimal=jit build.
2900         
2901         * mini.c (construct_object_context_for_method): Move this outside
2902         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2903
2904         "Backported" of r124984 from 2.0 branch.
2905         
2906         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2907
2908         "Backport" of r124977 + r124978 from 2.0 branch.
2909         
2910         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2911         to avoid calling mono_exception_from_token () from the throw trampoline.
2912         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2913         for throwing corlib exceptions, this fixes full-aot support for corlib
2914         exceptions.
2915
2916         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2917
2918 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2919
2920         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2921         part of the changes to split the code in mini into operating
2922         system specific files.
2923
2924         This patch was done by copying mini.c to the respective files to
2925         preserve SVN history.
2926
2927 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2928
2929         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2930
2931 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2934         remoting-invoke-with-check wrappers of shared methods.
2935
2936         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2937
2938 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2939
2940         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2941         optimization if the top of stack is the last instruction in the
2942         bblock.  Otherwise it might have been used after its definition.
2943         Fixes #469742.
2944
2945 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2946
2947         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2948         method as well when get_vcall_slot () fails to match a code sequence.
2949
2950         * mini-arm.c: Fix the android build, which doesn't have
2951         __aeabi_read_tp.
2952
2953 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2954
2955         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2956         the s390x build.
2957
2958 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2959
2960         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2961
2962 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2963
2964         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2965         and put its id into jinfo->used_regs. This is only used on amd64,
2966         which is currently the only platform generating unwind info.
2967
2968         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2969         the dwarf unwinder. This is required to correctly handle async exceptions
2970         like thread abort and stack overflows, which can happen while a method
2971         is in the middle of its prolog or epilog.
2972         
2973         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2974         the unwind info belonging to an AOTed method.
2975
2976         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2977         into cfg->unwind_ops.
2978         
2979         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2980
2981         * mini.c (mini_init): Call mono_unwind_init ().
2982         (mini_cleanup): Call mono_unwind_cleanup ().
2983
2984         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2985         unwind info to be shared between methods.
2986
2987         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2988         saved in the LMF.
2989
2990         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2991         get_throw_pending_exception () to avoid initialization races.
2992
2993         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2994         mono_arch_exceptions_init () function.
2995
2996         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2997
2998 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * mini.c (mono_get_domain_intrinsic): New helper function.
3001         (mono_get_thread_intrinsic): Ditto.
3002
3003         * mini-arm.c mini-ia64.c: Use the new helper functions.
3004         
3005         * method-to-ir.c (mono_method_to_ir): Fix the comment for
3006         the last constrained_call change, since it is needed in the non-AOT
3007         case as well.
3008
3009         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
3010         
3011         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
3012         mono_get_lmf_addr () on arm eabi linux.
3013
3014 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
3017         code sequence which matches a non-virtual call.
3018
3019 2009-01-23  Mark Probst  <mark.probst@gmail.com>
3020
3021         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
3022         stack pointer (r1).
3023
3024 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
3027         runtime-invoke wrappers, since they are also shared based on signature.
3028
3029 2009-01-22  Mark Probst  <mark.probst@gmail.com>
3030
3031         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
3032         info from the (correct) context.
3033
3034 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
3037         
3038         * unwind.c (mono_unwind_frame): New function to unwind through a frame
3039         using dwarf unwinding info. Not yet used.
3040
3041         * mini.c (mini_init): When using xdebug, disable freeing of domains.
3042
3043 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3044
3045         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
3046         descriptors.
3047
3048         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
3049         special case and handle mono_arch_delegate_invoke_impl() returning
3050         function descriptors.
3051
3052         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
3053         trampolines return function descriptors, too.
3054
3055 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3056
3057         * method-to-ir.c (handle_alloc): Avoid generic instances in the
3058         out_of_line optimization.
3059
3060 2009-01-21  Martin Baulig  <martin@ximian.com>
3061
3062         * mini.h
3063         (MonoCompile): Added `disable_deadce_vars' to disable removing
3064         unused variables.
3065
3066         * mini.c
3067         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
3068         inside the debugger.
3069
3070         * liveness.c (mono_analyze_liveness): Don't remove any unused
3071         variables if `cfg->disable_deadce_vars' is set.
3072
3073 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3074
3075         * method-to-ir.c: Only apply exception constructor optimization if
3076         the the method actually belongs to an exception class.  Fixes
3077         #467456.
3078
3079 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3080
3081         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
3082         change inside a #ifdef __mono_ppc64__.
3083
3084         * aot-compiler.c (compile_method): Remove the previous limitation.
3085
3086         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
3087         on type variables in AOTed code.
3088         
3089         * aot-compiler.c (compile_method): Skip generic methods having type 
3090         constraints on their generic parameters.
3091
3092         * aot-compiler.c (compile_method): Check for methods which cannot be
3093         encoded inside RGCTX_FETCH patches as well.
3094
3095         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
3096         build.
3097
3098 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3099
3100         * method-to-ir.c: Force the vtable variable in shared generic code
3101         for the case that they might show up on a stack trace where they
3102         are needed.
3103
3104         * mini-exceptions.c: Save and use generic sharing info as well as
3105         IP in stack traces to resolve shared generic instantiations.
3106
3107 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
3108
3109         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
3110         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
3111
3112 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3113
3114         * method-to-ir.c: Do generic sharing for array constructors.
3115
3116 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
3117
3118         * mini-exceptions.c (mono_print_thread_dump): Add information
3119         about the thread state using wapi_current_thread_desc.
3120
3121 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3122
3123         * basic-simd.cs: Tests for the new constructors. 
3124
3125 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3126
3127         * mini-ops.h: Added OP_EXPAND_*
3128
3129         * cpu-x86.md: Same.
3130
3131         * mini-x86.c (mono_arch_output_basic_block): Same.
3132         
3133         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
3134
3135 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * iltests.il.in: Add a test for #467385.
3138
3139 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
3140
3141         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
3142         thread been cleaned up is not the same currently in execution.
3143
3144         Fixes appdomain-unload crashes on windows, osx and linux variants
3145         without the __thread keyword.
3146
3147 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
3150         (koush@koushikdutta.com). Implement this for android.
3151
3152         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
3153         begins with a digit.
3154
3155         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
3156         mono_marshal_get_write_barrier ().
3157
3158 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
3159
3160         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
3161         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
3162         that pass them on a register pair.
3163
3164         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
3165         test was crashing due to that.
3166
3167 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
3168
3169         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
3170         trampoline code. Include ucontext.h only if available.
3171
3172 2009-01-15  Mark Probst  <mark.probst@gmail.com>
3173
3174         * mini.c: mono_domain_lookup_shared_generic() takes an open method
3175         and doesn't check whether it's sharable, like it was before
3176         removing the shared generics hash.  This brings IronPython
3177         performance back to what it was before that change.
3178
3179 2009-01-14  Mark Probst  <mark.probst@gmail.com>
3180
3181         * method-to-ir.c: Handle delegate invocation optimization earlier,
3182         otherwise it would be handled (much more slowly) by the
3183         final/sealed optimization.
3184
3185 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3186
3187         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
3188         domain is not set. Fixes #465864.
3189
3190 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3191
3192         * method-to-ir.c: Don't stop sharing of generic methods with catch
3193         clauses - we already handle those.
3194
3195 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3196
3197         * mini.c, mini.h: lookup_generic_method() is now
3198         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
3199         making the shared_generics_hash obsolete.
3200
3201 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3202
3203         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
3204         use the red zone.  Make room on the stack first and then use it,
3205         not the other way around.
3206
3207 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * mini.c (mini_init): Call mono_xdebug_init ().
3210
3211         * aot-compiler.c (mono_xdebug_init): Make this non-static.
3212
3213 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
3214
3215         * TestDriver.cs: Add an --iter argument to run tests multiple times.
3216
3217         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
3218         trampolines.
3219
3220         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
3221         debug+unwind info for trampolines.
3222
3223         * mini.c (mono_create_unwind_op): New helper function.
3224
3225         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
3226
3227 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
3228
3229         * aot-compiler.c: Fix the build.
3230
3231 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3232
3233         * Makefile.am: Update dtrace-prelink.sh location.
3234
3235 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
3238         optimization. Fixes #464520.
3239
3240 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
3241
3242         * mini-amd64.c : Adding code to save/restore non-volatile registers
3243            on Winx64.
3244
3245         * exceptions-amd64.c : Adding code to save/restore non-volatile 
3246           registers on Winx64.
3247
3248         Contributed under MIT/X11 license.
3249
3250 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
3253         __GNUC_MINOR__ which can break when the major version changes.
3254
3255 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3256
3257         * basic-simd.cs: Add tests for usage of the sizeof opcode.
3258
3259 2009-01-07  Geoff Norton  <gnorton@novell.com>
3260
3261         * helpers.c:  Allow mono -v -v -v to work on darwin.
3262
3263 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
3264
3265         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
3266           pattern. 
3267
3268         Contributed under MIT/X11 license.
3269
3270 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
3271
3272         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
3273         instead of directly accessing type->data.klass. Fixes #462016.
3274         (mono_allocate_stack_slots_full): Ditto.
3275
3276         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
3277         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
3278
3279         * aot-compiler.c (emit_plt): Fix ARM build.
3280
3281 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
3282
3283         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
3284         
3285         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
3286         change.
3287
3288         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
3289         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
3290         #463357.
3291
3292         * iltests.il.in: Add a regression test.
3293
3294 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3295
3296         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
3297
3298 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3299
3300         * basic-simd.cs: Add a regression test for #462457.
3301
3302 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3303
3304         * mini-ops.h: Add a definition of XPHI.
3305
3306         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
3307
3308         * ssa.c (op_phi_to_move): Handle XPHI.
3309
3310         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
3311
3312         Fixes #462457
3313
3314 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3315
3316         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
3317
3318 2008-12-31  Geoff Norton  <gnorton@novell.com>
3319
3320         * mini-ppc.c: The prolog size allocated can be too small for darwin
3321         ppc32 under certain circumstances.  Also fix a small logic bug.
3322
3323 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
3326         while loading AOT methods.
3327
3328         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
3329         since only the former is nulled out after a successful cast. This prevents
3330         crashes with rethrown exceptions when using --debug=casts.
3331
3332 2008-12-24  Mark Probst  <mark.probst@gmail.com>
3333
3334         * mini.h: New macro for checking whether a method is final,
3335         i.e. whether the method or its class is marked final.
3336
3337         * method-to-ir.c: Use the new macro for all final-checks
3338         consistently.  Fixes the crash in the System.ServiceModel tests.
3339
3340 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3341
3342         * mini-exceptions.c (get_exception_catch_class): Corrected another
3343         overly strict assertion.
3344
3345 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3346
3347         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
3348         Clobbering it is not allowed because the caller might use it as
3349         the vtable register in the interface call.
3350
3351 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3352
3353         * mini-exceptions.c (get_exception_catch_class): Corrected an
3354         overly strict assertion.
3355
3356 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3357         
3358         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3359
3360         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3361
3362         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3363
3364         * cpu-mips.md: correct lengths for certain long_ opcodes.
3365
3366         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3367
3368         * 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().
3369         
3370 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3371
3372         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3373         
3374 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3375         
3376         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3377         
3378 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3379
3380         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3381         next basic block.
3382         
3383 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3384
3385         * 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
3386
3387         * 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)
3388         
3389 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3390         
3391         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3392         
3393 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3394
3395         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3396         gshared code. Fixes #458947.
3397
3398         * generics.cs: Add a test.
3399
3400 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3401         
3402         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3403         
3404         * mini-mips.c: first pass n32 code generation.
3405
3406         * mini-mips.h: datatypes and defines for n32 support.
3407
3408         * exceptions-mips.c: first pass n32 code generation.
3409         
3410         * tramp-mips.c: first pass n32 code generation.
3411         
3412         * cpu-mips.md: add long_ opcodes.
3413         
3414 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3415
3416         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3417
3418         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3419         
3420         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3421         
3422         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3423
3424         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3425
3426         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3427
3428         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3429
3430         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3431
3432         * helpers.c: for mips/n32, don't pass -mips32 to objdump
3433
3434 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
3435
3436         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
3437
3438 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
3439
3440         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
3441
3442 2008-12-12  Mark Probst  <mark.probst@gmail.com>
3443
3444         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
3445         descriptors for helper functions directly in front of the code.
3446
3447 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3448
3449         * method-to-ir.c: Removed an unnecessary assertion.
3450
3451 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * method-to-ir.c: Merge SGEN changes from the old JIT.
3454
3455 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * driver.c (compile_all_methods_thread_main): Handle failure of
3458         mono_get_method ().
3459
3460 2008-12-10  Mark Probst  <mark.probst@gmail.com>
3461
3462         * mini-ppc.c: Merged with mini-ppc64.c.
3463
3464         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
3465
3466         * Makefile.am: Use the same sources for PPC and PPC64.
3467
3468         * mini-ppc64.c: Removed.
3469
3470 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3471
3472         * branch-opts.c (remove_block_if_useless): Extract fall through detection
3473         code to mono_bb_is_fall_through.
3474         
3475         * branch-opts.c (mono_remove_critical_edges): Same.
3476
3477 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3478
3479         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
3480         expect that an OP_BR_REG will be there.
3481
3482 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3483
3484         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
3485         for the many branch ops. The original check miss OP_BR_REG.
3486
3487         Fixes #457574.
3488         
3489 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3490
3491         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
3492
3493 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3494
3495         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
3496         while holding the aot lock.
3497
3498 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3499
3500         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
3501         
3502 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3503
3504         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
3505           to release all runtime callable wrappers held by the runtime.
3506
3507         Contributed under MIT/X11 license.
3508
3509 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3510
3511         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
3512           for Winx64.
3513
3514         Contributed under MIT/X11 license.
3515
3516 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3517
3518         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
3519         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
3520
3521 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3522
3523         * cpu-mips.md: fix ckfinite length
3524
3525         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
3526         (mono_arch_lowering_pass): cleanup, rearrange for clarity
3527         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
3528         
3529 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
3530
3531         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
3532         
3533 2008-12-08  Geoff Norton  <gnorton@novell.com>
3534
3535         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
3536         size by 8 bytes as well.
3537
3538 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3539
3540         * basic-simd.cs: Fix method names for Vector16b.
3541         
3542 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3543
3544         * basic-simd.cs: Fix method names for Vector16sb.
3545
3546 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3547
3548         * basic-simd.cs: Fix method names for Vector8us.
3549         
3550 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3551
3552         * basic-simd.cs: Fix method names for Vector8s.
3553         
3554 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3555
3556         * basic-simd.cs: Fix method names for Vector4ui.
3557
3558 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3559
3560         * basic-simd.cs: Fix method names for Vector2l.
3561
3562 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3563
3564         * basic-simd.cs: Fix method names for Vector2d.
3565
3566 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3567
3568         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
3569         that are extension methods.
3570
3571 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3572
3573         * basic-simd.cs: Fix method names for Vector4f.
3574
3575 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
3576
3577         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
3578         as such. Fixes #456669.
3579
3580 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3581
3582         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
3583         
3584 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3585
3586         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
3587         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
3588         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
3589         (mips_adjust_stackframe): handle FP spills
3590                 
3591         * mini-ops.h: add mips_mtc1_s2
3592         
3593         * cpu-mips.md: add mips_mtc1_s2
3594         
3595 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
3596
3597         * unwind.c: New file, move the unwind info encoding functions here from
3598         aot-compiler.c, so they could be used at runtime too.
3599
3600 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3601
3602         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
3603         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
3604         
3605 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3606
3607         * mini-mips.c: cleanup warnings
3608         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
3609         (mips_adjust_stackframe): handle case of taking the address of stack locals
3610         
3611 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3612
3613         * aot-compiler.c: Implement a few functions missing from the asm writer.
3614         (emit_method_code): Only write symbols for methods when using the bin
3615         writer, since the assembler can't deal with the characters in our method
3616         names.
3617
3618         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3619
3620         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3621         call.
3622
3623         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3624         a bit to also restore %rax.
3625
3626 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3627
3628         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3629
3630 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3633         arguments.
3634
3635 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3636
3637         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3638
3639         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3640         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3641
3642         * exceptions-ppc64.c: Removed.
3643
3644         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3645
3646 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3647
3648         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3649         tramp-ppc64.c.
3650
3651         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3652
3653         * tramp-ppc64.c: Removed.
3654
3655 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3656
3657         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3658         the TYPESPEC table.
3659
3660 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3661
3662         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3663
3664         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3665         mini-ppc.h instead of mini-ppc64.h.
3666
3667         * mini-ppc64.h: Removed.
3668
3669 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3670
3671         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3672         
3673         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3674         
3675 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3676
3677         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3678         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3679         code easier.
3680
3681 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3682
3683         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3684
3685 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3686
3687         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3688
3689 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3690
3691         * basic-simd.cs: Tests for operator == and != on Vector4f.
3692
3693 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3694
3695         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3696
3697         * simd-intrinsics.c: Kill useless enum.
3698
3699 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3700
3701         * cpu-mips.md: add long_conv_to_ovf_i4_2
3702         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3703
3704 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3705
3706         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3707         
3708         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3709
3710 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3711
3712         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3713         
3714 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3715
3716         * basic-simd.cs: Add tests for new methods.
3717
3718 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3719
3720         * simd-intrinsics.c: Add support for operator == and !=
3721         on Vector4(u)i.
3722
3723         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3724
3725 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3726
3727         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3728
3729 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3732
3733         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3734         MONO_PATCH_INFO_ICALL_ADDR.
3735
3736         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3737
3738         * aot-compiler.c: Resurrect full-aot support.
3739
3740 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3741
3742         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3743         
3744 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3745
3746         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3747         
3748 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3749
3750         * basic-simd.cs: Fix tests to work under ppc.
3751         Remove tests for methods that will be removed.
3752
3753 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3754
3755         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3756         generic type (via a typedef or typeref) correctly.
3757
3758 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3759
3760         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3761         diagnose an assertion failure.
3762
3763 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3764
3765         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3766         Fix trampoline size.
3767
3768         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3769         conversion opcodes are implemented natively instead via emulation.
3770
3771 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3772
3773         * cpu-mips.md: remove mips_xori
3774
3775         * mini-ops.h:  remove mips_xori
3776
3777         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3778
3779         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3780         
3781         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3782         
3783 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3784
3785         * cpu-mips.md: fix instruction lengths.
3786
3787         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3788
3789         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3790
3791         * mini-ops.h: fix slti / sltiu op profiles.
3792         
3793 2008-12-02  Martin Baulig  <martin@ximian.com>
3794
3795         * method-to-ir.c (mono_method_to_ir): Disable debugging
3796         information for the init locals block to make the debugger stop
3797         after all locals have been initalized.
3798
3799 2008-12-02  Martin Baulig  <martin@ximian.com>
3800
3801         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3802         running inside the debugger.
3803
3804 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3805
3806         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3807         is enabled.
3808
3809         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3810         alu->alu imm optimization which only shows if deadce is disabled.
3811
3812         * aot-compiler.c: Rename the function names for the binary and asm writers
3813         so they can coexist in the same process. Rework the xdebug code to use the
3814         asm writer. This avoids the need to call into the runtime to dump the
3815         debugging info. Add more debugging info for types.
3816
3817         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3818
3819         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3820         cpu description tables, they can't occur in cpu-<ARCH>.md.
3821
3822         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3823         the stack in CEE_LDFLDA. Fixes #450542.
3824
3825         * generics.cs: Add a new test.
3826
3827 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3828
3829         * mini-ops.h: updated MIPS opcodes
3830         * mini-mips.c: decompose long opts
3831         * mini-mips.h: decompose long opts
3832         
3833 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3834
3835         * cpu-mips.md: fix length on int_rem_un
3836         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3837         
3838 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3839
3840         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3841
3842         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3843
3844 2008-11-29  Martin Baulig  <martin@ximian.com>
3845
3846         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3847         mono_debug_using_mono_debugger() in addition to the
3848         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3849
3850 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3851
3852         * mini-ops.h: updated more MIPS opcodes
3853         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3854         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3855         
3856 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3857
3858         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3859
3860 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3861
3862         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3863         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3864         * mini-ops.h: correct selected mips opcode entries
3865         
3866 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3867
3868         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3869         make them work.
3870
3871 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3872
3873         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3874
3875 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3876
3877         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3878         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3879         * mini-mips.h: disable IMT
3880         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3881         
3882 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3883
3884         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3885
3886 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3887
3888         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3889
3890 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3891
3892         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3893         consistency.
3894
3895 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3896
3897         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3898         for Set/GetVector aligned versions.
3899
3900 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3901
3902         * basic-simd.cs: Add tests for Get/SetVector.
3903
3904 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3905
3906         * mini.c: Removed g_slist_append_mempool().  Now in
3907         metadata/mempool.c.
3908
3909 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3910
3911         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3912         size properly and make the bounds check optional.
3913
3914         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3915         for SetVector and IsAligned.
3916
3917 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * mini.c: Remove unused mono_normalize_opcodes () function.
3920
3921 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3922
3923         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3924         using the new atomic add ops now.
3925
3926         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3927         add.
3928
3929 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3930
3931         * mini-ppc64.c: Several fixes.
3932
3933 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3934
3935         * cpu-mips.md: added jump_table
3936         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3937
3938 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3939
3940         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3941
3942 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3943
3944         * mini-ops.h: corrected a handful of MIPS opcodes.
3945
3946 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3947
3948         * aot-compiler.c: MIPS to use ELF writer
3949
3950 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3951
3952         * mini-codegen.c: remove MIPS specific assert.
3953
3954 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3955
3956         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3957         fixes.  PPC64 now passes most of the runtime regressions.
3958
3959 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3960
3961         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3962         volatile intervals a bit.
3963
3964 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3965
3966         * basic-long.cs: New test case.
3967
3968 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3969
3970         * mini.c (mini_method_compile): Disable globalra for large methods for 
3971         now.
3972
3973         * regalloc2.c (order_moves): Add fp support.
3974
3975         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3976         source bblock ends with an OP_BR_REG.
3977
3978         * ratests.cs: Add a new test.
3979
3980 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3981
3982         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3983         sharing.  PPC64 now passes generics.exe.
3984
3985 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3986
3987         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3988
3989 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3990
3991         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3992         memory when mono_jit_info_table_find () can't find the method in the
3993         LMF case.
3994
3995         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3996         AOTed code too.
3997         
3998         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3999         writer too.
4000
4001 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4002
4003         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
4004         Several fixes.  PPC64 now runs exceptions.exe and
4005         devirtualization.exe.
4006
4007 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4008
4009         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
4010         arrays.exe and basic-math.exe.
4011
4012 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4013
4014         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
4015         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
4016
4017 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4018
4019         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
4020
4021 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4022
4023         * method-to-ir.c: Move bounds checking macros to ir-emit.h
4024
4025         * ir-emit.h: Move macros from method-to-ir.c to here.
4026
4027 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4028
4029         * mini-ops.h: Correct the long simd ops to use LREG.
4030
4031 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
4032
4033         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
4034         
4035         * mini-ops.h: Correct the dreg type of a few long opcodes.
4036
4037         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
4038         Add netbsd support.
4039
4040 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
4041
4042         * mini-ppc.c: remove negative stack references in epilog
4043         for platforms that don't support the red zone.
4044
4045 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4046
4047         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
4048         point regs.  Now PPC64 passes basic-calls.exe.
4049
4050 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4051
4052         * basic-simd.cs: Add tests for accessors of Vector2l.
4053
4054 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4055
4056         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
4057
4058         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
4059         
4060         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
4061
4062 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4063
4064         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
4065         PPC64 passes basic-long.exe.
4066
4067 2008-11-20  Mark Probst  <mark.probst@gmail.com>
4068
4069         * decompose.c: Decompose carry and overflow add on PPC64 like on
4070         other 64 bit archs.  Don't decompose sub at all on PPC64.
4071
4072         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
4073         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
4074         basic-long.exe.
4075
4076 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4077
4078         * basic-simd.cs: Add tests for accessors of Vector2d.
4079
4080 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4081
4082         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
4083
4084         * cpu-x86.md: Same.
4085
4086         * mini-x86.c (mono_arch_output_basic_block): Same.
4087         
4088         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
4089
4090 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4091
4092         * basic-simd.cs: Add tests for accessors of Vector4f.
4093
4094 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4095
4096         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
4097
4098         * cpu-x86.md: Same.
4099
4100         * mini-x86.c (mono_arch_output_basic_block): Same.
4101         
4102         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
4103
4104 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4105
4106         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
4107
4108 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4109
4110         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
4111
4112         * cpu-x86.md: Same.
4113
4114         * mini-x86.c (mono_arch_output_basic_block): Same.
4115         
4116         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
4117
4118 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4119
4120         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
4121
4122 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4123
4124         * simd-intrinsics.c: Enable setters for Vector16sb.
4125
4126 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4127
4128         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
4129
4130         * cpu-x86.md: Same.
4131
4132         * mini-x86.c (mono_arch_output_basic_block): Same.
4133         
4134         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
4135
4136 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
4137
4138         * simd-intrinsics.c: Implement setter for Vector8us.
4139
4140 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4141
4142         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
4143         for dead variables.
4144
4145 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
4146
4147         * mini-ppc.c: remove references to the red zone in the prolog
4148         (for systems that don't support it).
4149
4150 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4151
4152         * cpu-ppc64.md: Fixed a few instruction lengths.
4153
4154         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
4155         now.
4156
4157 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4158
4159         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
4160         basic.exe now.
4161
4162 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
4165
4166 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
4167
4168         * mini-ops.h: Added OP_INSERT_I2.
4169
4170         * cpu-x86.md: Same.
4171
4172         * mini-x86.c (mono_arch_output_basic_block): Same.
4173         
4174         * simd-intrinsics.c: Implement setter for Vector8s.
4175
4176         * simd-methods.h: Add the names of get setters of Vector8s.
4177
4178 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
4181         
4182         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
4183         parameters.
4184
4185         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4186
4187 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4188
4189         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
4190         for PPC64.  An empty program runs now.
4191
4192 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4193
4194         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4195
4196         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
4197         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
4198         info for JITted code is emitted into a shared library, loadable into gdb.
4199
4200 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4201
4202         * Makefile.am: Changes to build PPC64.
4203
4204         * mini-arch.h: Include mini-ppc64.h on PPC64.
4205
4206 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4207
4208         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
4209         in PPC code up to r119147.
4210
4211 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4212
4213         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
4214         cpu-ppc64.md: Changes for PPC64.
4215
4216         Based on code submitted by andreas.faerber@web.de at
4217         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
4218         X11/MIT license.
4219
4220 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4221
4222         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
4223         cpu-ppc64.md: Copied from the corresponding PPC files from
4224         r118846.
4225
4226 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
4227
4228         * mini-ops.h: Added OP_ROUND.
4229
4230         * cpu-x86.md: Added round.
4231
4232         * mini-x86.c: Added support for intrinsicing Math.Round (double).
4233
4234         * basic-math.cs: Added test_0_round to test rounding.
4235
4236         Contributed under MIT/X11 license.
4237
4238 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4239
4240         * aot-compiler.c : Fix the Winx64 build.
4241
4242         Contributed under MIT/X11 license.
4243
4244 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4245
4246         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
4247         in OP_EXTRACT_R8 to avoid possible stack corruption.
4248
4249 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4250
4251         * mini-ops.h: Added OP_EXTRACT_R8/I8.
4252
4253         * cpu-x86.md: Added extract_r8.
4254
4255         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
4256         
4257         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
4258         a couple of OP_EXTRACT_I4.
4259
4260         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
4261
4262         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
4263
4264 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4265
4266         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
4267         and not 4.1. 
4268
4269 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4270
4271         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
4272         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
4273
4274         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
4275         are not needed any more.
4276
4277         * mini.h: Remove the unused INS_LIST macros.
4278
4279         * mini.c (mini_method_compile): Remove a disable globalra case which is no
4280         longer needed.
4281
4282         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
4283         ir-emit.h.
4284
4285         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
4286         mono_alloc_ireg () instead.
4287
4288         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
4289         macros.
4290
4291         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
4292         on amd64.
4293
4294         * aot-runtime.c (load_aot_module): Disable AOT when running under
4295         CAS.
4296
4297         * mini-amd64.h: Change the monitor fastpath defines to check for
4298         !PLATFORM_WIN32 so they work on *bsd too.
4299
4300         * mini.h mini.c mini-hhpa.c: Remove more unused code.
4301
4302         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
4303
4304         * mini.h (MonoCompile): Remove new_ir flag.
4305
4306         * regalloc.h regalloc.c: Remove unused code.
4307
4308         * cpu-*.md: Remove more unused opcodes.
4309
4310         * simple-cee-ops.h simple-mini-ops.h: Removed.
4311
4312         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
4313         
4314 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4315
4316         * aliasing.h: Removed.
4317
4318         * *.c: Remove references to aliasing.h and inssel.h.
4319
4320         * mini.c: Remove additional unused functions.
4321
4322         * mini-ops.h cpu-*.md: Remove unused opcodes.
4323
4324 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4325
4326         Remove the old JIT code.
4327
4328         * inssel*.brg: Removed.
4329
4330         * ssa.c abcremoval.c aliasing.c: Removed.
4331
4332         * ssa2.c: Renamed to ssa.c.
4333
4334         * abcremoval2.c: Renamed to abcremoval.c.
4335
4336         * *.c: Removed all !cfg->new_ir code.
4337
4338         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
4339         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
4340
4341         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
4342         
4343 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4344
4345         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
4346         to simplify the code and cut back on the number of global symbols in the AOT
4347         file.
4348         
4349         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
4350
4351 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4354         with the got/got_info tables.
4355
4356         * mini.h: Bump AOT file format version.
4357         
4358         * unwind.h: New file, contains definitions for stack unwinding.
4359
4360         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4361         to cfg->unwind_ops.
4362         
4363         * aot-compiler.c: Generalize the emitting of unwind information to use the
4364         information in cfg->unwind_ops.
4365
4366         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4367
4368         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4369         AOT method frames. Enable writing symbols for methods by default.
4370
4371 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4372
4373         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4374         and make it work with vectors of element sizes 1, 2 and 4.
4375
4376         * simd-intrinsics.c: Enable getter for all vectors with element size
4377         1, 2 or 4.
4378
4379         * simd-methods.h: Add the names of other getters.
4380
4381         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4382
4383         * cpu-x86.md: Same.
4384
4385         * mini-x86.c: Same.
4386
4387 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4388
4389         * mini-ppc.h: portability fix.
4390
4391 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4392
4393         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4394         buggy and will overwrite it.
4395
4396 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4397
4398         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4399         Use it to emit local symbols for all methods so AOTed methods show up with
4400         their full name in gdb/valgrind output.
4401
4402 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4403
4404         * mini-ppc.c: portability fixes.
4405
4406 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4409         entries out of the if (!generic_shared...) code so it is always done.
4410         (mono_class_init_trampoline): Do the patching when running under valgrind
4411         too, newer versions of valgrind have no problems with it.
4412
4413 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4414
4415         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
4416         further sections.
4417
4418 2008-11-13  Mark Probst  <mark.probst@gmail.com>
4419
4420         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
4421         filters.
4422
4423 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4424
4425         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
4426
4427 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4428
4429         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
4430
4431         * cpu-x86.md: Same.
4432
4433         * mini-x86.c: Same.
4434
4435         * simd-intrinsics.c: Same.
4436
4437 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4438
4439         * simd-intrinsics.c: Enable constructor intrinsics for all types.
4440
4441 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4442
4443         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
4444         to work with more Vector types.
4445
4446 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4447
4448         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
4449         store the elemens directly instead of using and intermediate.
4450
4451 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4452
4453         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
4454
4455         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
4456         to preserve %eax for aot plt trampolines.
4457
4458         * aot-compiler.c (compile_method): Don't skip synchronized methods.
4459         (encode_method_ref): Flag synchronized methods so they won't go through
4460         the AOT trampoline.
4461
4462         * aot-compiler.c: Additional work to support AOTing synchronized methods/
4463         wrappers.
4464
4465         * cpu-ia64.md (jmp): Increase max length.
4466
4467 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4468
4469         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
4470         open generic classes.
4471
4472         * aot-compiler.c: Enable the ELF writer on ELF platforms.
4473
4474         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
4475         box+brtrue optimization since it causes test failures on x86.
4476
4477 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4478
4479         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
4480
4481         * cpu-x86.md: Same.
4482
4483         * mini-x86.c: Same.
4484
4485         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
4486         for simd ctor values. 
4487
4488         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
4489         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
4490
4491 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4492
4493         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
4494         LogicalRightShift.
4495
4496         * simd-instrincs.c: Same.
4497
4498         * basic-simd.cs: Same.
4499
4500 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4501
4502         * ratests.cs: Add more tests.
4503
4504         * regalloc2.c (add_spill_code): Handle more corner cases.
4505
4506 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
4509         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
4510         both the source an destination of an instruction.
4511
4512 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4513
4514         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
4515         wapihandles.c: more portability changes.
4516
4517 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
4518
4519         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
4520         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
4521         safe to execute in a signal handler and the kernel provides better
4522         the info in /proc/self/smaps. Avoid the assert on sigaction during
4523         cleanup.
4524
4525 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
4528         do the bblock linking hack if it is actually needed.
4529
4530         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
4531         up linking.
4532
4533         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
4534         crash problem is fixed.
4535
4536         * branch-opts.c (mono_remove_critical_edges): Link up newly added
4537         bblocks.
4538
4539         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
4540         for catch clauses.
4541         (mini_method_compile): Set the starting value of next_vreg to 
4542         MAX_IREGS + MAX_FREGS when using globalra.
4543
4544         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
4545         filter clauses with BB_EXCEPTION_HANDLER.
4546
4547         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
4548
4549 2008-11-10  Mark Probst  <mark.probst@gmail.com>
4550
4551         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
4552         space for stdcall.  Fixes regressions on Win32.
4553
4554 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
4555
4556         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
4557         bblocks.
4558         (linear_scan): Remove an assert which doesn't seem to be needed.
4559
4560         * local-propagation.c (mono_local_deadce): Avoid a call to
4561         MONO_DELETE_INS which would screw up the instruction linking.
4562
4563         * mini.c (mono_decompose_op_imm): Make this work with globalra.
4564
4565         * regalloc2.c: Upgrade to work the current JIT code.
4566
4567 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
4568
4569         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
4570         case.
4571
4572         * aot-runtime.c: Remove some dead code.
4573
4574         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
4575         consistency.
4576         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
4577
4578         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
4579         trampolines using sscanf since atoi doesn't work on large unsigned values.
4580
4581         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
4582         Initialize code_size.
4583
4584 2008-11-08  Mark Probst  <mark.probst@gmail.com>
4585
4586         * method-to-ir.c (mini_emit_inst_for_method): Make
4587         Interlocked.CompareExchange work for Int arguments on 32 bit
4588         archs, as well.
4589
4590 2008-11-07  Mark Probst  <mark.probst@gmail.com>
4591
4592         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
4593
4594 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
4595
4596         * main.c Fix MSVC build.
4597
4598         Contributed under MIT/X11 license.
4599
4600 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4601
4602         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
4603         alignment larger than 8 bytes are aligned correctly, too.
4604
4605         * mini.c: Honor the min_align field of MonoClass when laying out
4606         the stack.
4607
4608 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
4611
4612         * aot-compiler.c (emit_plt): Fix a warning.
4613         
4614         * aot-compiler.c: Implement ARM support in the binary writer.
4615
4616 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4617
4618         * basic-simd.cs: Add test for getter with byref arg.
4619         Fix the naming of a few tests.
4620         Add missing checks to a test.
4621
4622 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4625
4626         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4627         most of the full-aot support for monitor enter/exit trampolines.
4628
4629         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4630         enter/exit trampoline creation functions.
4631
4632         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4633         make dist.
4634
4635 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4636
4637         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4638         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4639         implement the needed functionality without adding crap to the runtime.
4640
4641 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4642
4643         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4644         non-x86 builds.
4645
4646         * mini.c (mono_build_date): New global version holding the build date in
4647         string format.
4648         
4649         * Makefile.am (buildver.c): Generate a file containing the build date.
4650
4651         * main.c: Set the build date from the generated file.
4652
4653         * mini.c (mono_get_runtime_build_info): New helper function returning build
4654         information in a string format.
4655         
4656         * driver.c (mono_main): Print the build date in --version.
4657
4658         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4659         file when the bind-to-runtime-version option is used.
4660
4661 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4662
4663         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4664
4665 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4666
4667         * simd-methods.h: Rename prefetch methods.
4668
4669         * simd-intrinsics.c: Same.      
4670
4671 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4672
4673         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4674         sizes.
4675
4676 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4677
4678         * aot-compiler.c: Use the bundled elf header files instead of depending on
4679         the system one.
4680         
4681         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4682         mempool.
4683
4684         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4685         on every call.
4686
4687 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4688
4689         * cpu-x86.md: Add store nta ops.
4690
4691         * mini-ops.h: Same.
4692
4693         * mini-x86.c: Same.
4694
4695         * mini.h: Add an enum for simd prefetch modes.
4696
4697         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4698         of store. Use the changed code to support store nta.
4699
4700         * simd-intrinsics.c: Add prefetch ops for all vector types.
4701
4702 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4703
4704         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4705         threads.
4706         
4707         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4708         names.
4709
4710         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4711         trampolines.
4712
4713 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4714
4715         * mini-x86.c: Fixed commit.
4716
4717 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4720
4721 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4722
4723         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4724         and MONITOR_EXIT, for the ASM fastpaths.
4725
4726         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4727         available.
4728
4729         * mini.c, patch-info.h: Signature and patch infos for
4730         Monitor.Enter/Exit trampolines.
4731
4732         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4733
4734         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4735         Monitor.Enter/Exit ASM fastpath for Linux.
4736
4737 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4738
4739         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4740
4741         * objects.cs: Add a new test.
4742         
4743         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4744
4745         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4746         if MONO_LOG_LEVEL is set.
4747
4748         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4749
4750         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4751
4752         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4753         
4754         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4755         of file offsets. Align the sections belonging to the data segment to 
4756         PAGESIZE.
4757
4758 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4759
4760         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4761         elf.h. Port it to amd64.
4762
4763 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4764
4765         * driver.c: Enable SIMD by default.
4766
4767 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4768
4769         * cpu-x86.md: Add prefetch op.
4770
4771         * mini-ops.h: Same.
4772
4773         * mini-x86.c: Same.
4774
4775         * mini.h: Add an enum for simd prefetch modes.
4776
4777         * simd-methods.h: Add prefetch function names.
4778
4779         * simd-intrinsics.c: Add prefetch ops for all vector types.
4780
4781 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * aot-compiler.c (emit_bytes): Speed this up a little.
4784
4785 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4786
4787         * aot-compiler.c: Add JIT time etc. statistics.
4788         
4789         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4790
4791         * mini.h (MonoCompile): Add 'got_offset' field.
4792
4793         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4794         method_got_offsets array.
4795
4796         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4797         wrappers.
4798
4799         * aot-compiler.c (compile_method): Add generic method instances referenced
4800         by the method to the list of methods to be compiled, this is required so if
4801         A<T> references B<T>, and another assembly references A<int>, then it will
4802         also get a copy of B<int>.
4803
4804         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4805         when checking for monitor enter/exit.
4806
4807 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4808
4809         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4810         for Monitor.Enter and Monitor.Exit if enabled.
4811
4812         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4813         Solaris.
4814
4815 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4816
4817         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4818         of an OP_MOVE. Fixes #440046.
4819
4820         * basic-long.cs: Add a new test.
4821
4822 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4823
4824         * mini.h: Add synchronization note for the managed counter-part.
4825
4826         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4827         returns the simd caps of the current cpu.
4828
4829 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4830
4831         * basic-simd.cs: Remove Console.WriteLine.
4832
4833 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4834
4835         * basic-simd.cs: New tests for Vector2ul.
4836
4837 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4838
4839         * simd-intrinsics.c: Add new vector type Vector2ul.
4840
4841 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4842
4843         * basic-simd.cs: New tests for Vector2l.
4844
4845 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4846
4847         * cpu-x86.md: Add long version of most packed int ops.
4848
4849         * mini-ops.h: Same.
4850
4851         * mini-x86.h: Same.
4852
4853         * simd-intrinsics.c: Add new vector type Vector2l.
4854
4855 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4856
4857         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4858
4859         * simd-methods.h: Remove SN_op_BitwiseXor.
4860
4861 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4862
4863         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4864         alignment.
4865
4866 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * basic-simd.cs: Test for Vector2d.
4869
4870         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4871         value.
4872
4873 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4874
4875         * cpu-x86.md: Add double version of all packed float ops.
4876
4877         * mini-ops.h: Same.
4878
4879         * mini-x86.h: Same.
4880
4881         * simd-intrinsics.c: Add new vector type Vector2d.
4882
4883         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4884
4885         * simd-methods.h: Add Duplicate.
4886
4887 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4888
4889         * basic-simd.cs: Test for packing with signed saturation.
4890
4891 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4892
4893         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4894         found in the TYPESPEC table.
4895
4896 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4897
4898         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4899         too.
4900
4901         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4902
4903         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4904         instead of the RVA, since the RVA can be changed by tools like the cil 
4905         stripper.
4906
4907         * method-to-ir.c (mono_method_to_ir2): Ditto.
4908
4909         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4910         (deserialize_variable): Ditto.
4911
4912 2008-10-25  Martin Baulig  <martin@ximian.com>
4913
4914         * debug-mini.c (write_variable): Use
4915         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4916
4917 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4918
4919         * cpu-x86.md: Add unsigned variants of packd and packw.
4920
4921         * mini-ops.h: Same.
4922
4923         * mini-x86.h: Emit the right instruction for packd and packw.
4924         Add unsigned variants of packd and packw.
4925
4926         * simd-intrinsics.c: Packd and packw were used in place of their
4927         unsigned variants. Change that.
4928         Add intrinsics for (Signed)PackWithSignedSaturation.
4929
4930         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4931
4932 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4935
4936 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4937
4938         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4939
4940         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4941
4942         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4943         sse instructions.
4944
4945         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4946
4947 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4948
4949         * method-to-ir.c, mini.c: Special casing for the synchronized
4950         wrapper for the ldtoken+GetTypeFromHandle case.
4951
4952 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4955
4956         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4957         created/split bblocks.
4958
4959 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4960
4961         * mini-ops.h: Add packed signed mul high.
4962         
4963         * cpu-x86.md: Same.
4964
4965         * mini-x86.c (mono_arch_output_basic_block): Same.
4966
4967         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4968
4969         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4970
4971 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4972
4973         * basic-simd.cs: Tests for Vector16sb.
4974
4975 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4978
4979 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * mini-ops.h: Add packed signed min, max and compare greater.
4982         
4983         * cpu-x86.md: Same.
4984
4985         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4986         saturation.
4987
4988         * simd-methods.h: Add CompareGreaterThan.
4989
4990         * simd-methods.h: Remove CompareEquals.
4991
4992         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4993
4994         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4995
4996         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4997         CompareEqual.
4998
4999 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5000
5001         * basic-simd.cs: Fix tests due to change in the API.
5002
5003 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5004
5005         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
5006
5007 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5008
5009         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
5010
5011         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
5012         inst_offset as this has invalid values for LDADDR.
5013
5014 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5015
5016         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5017
5018         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
5019
5020 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5021
5022         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
5023         for accessing field->data.
5024
5025 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5026
5027         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5028
5029 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5030
5031         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
5032
5033         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
5034
5035 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5036
5037         * dominators.c (mono_compute_natural_loops): Allocate GList enties
5038         from the cfg mempool.
5039
5040 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5041
5042         * basic-simd.cs: Tests for new methods in Vector8us.
5043
5044 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5045
5046         * mini-ops.h: Add multiply and store high.
5047         
5048         * cpu-x86.md: Same.
5049
5050         * mini-x86.c (mono_arch_output_basic_block): Same.
5051
5052         * simd-methods.h: Same.
5053
5054         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
5055         and CompareEqual.
5056
5057 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5058
5059         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
5060         mono_class_setup_vtable ().
5061
5062         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
5063         mono_class_get_vtable_entry () for accessing klass->vtable.
5064
5065         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
5066
5067         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
5068         found.
5069
5070         * method-to-ir.c (mono_save_token_info): Don't save references made from
5071         wrappers.
5072
5073         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
5074         of generic instances.
5075
5076         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
5077
5078 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5079
5080         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
5081         OP_JMP depends on the method signature.  Calculate it properly.
5082
5083 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5084         
5085         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
5086         called directly.
5087
5088         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
5089         instances.
5090         (emit_extra_methods): Add another table mapping method indexes to 
5091         offsets in the extra_method_info table.
5092
5093         * mini.h: Bump AOT file format version.
5094         
5095         * aot-runtime.c: Merge most of the code from mono_aot_get_method
5096         and mono_aot_get_method_from_token () into one function.
5097
5098 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5099
5100         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
5101         separate counter.
5102
5103 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
5104
5105         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
5106         methods.
5107
5108         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
5109         disable_aot.
5110
5111         * mini.c (mono_patch_info_equal): Compare the generic context as well.
5112
5113         * mini.h: Bump aot file format version.
5114
5115         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
5116         AOT file can contain native code for methods which are not in the METHOD
5117         table. Generate code for non-sharable generic instances of generic methods
5118         found in the METHODSPEC table.
5119         
5120         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
5121         encoding generic type handles.
5122
5123         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
5124         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
5125
5126         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
5127         macros + MONO_ADD_INS.
5128
5129         * mini.c (mono_jump_info_token_new2): New function which takes a generic
5130         context as well.
5131
5132         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
5133
5134         * mini.h: Bump aot file format version.
5135
5136         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
5137
5138 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5139
5140         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
5141         platforms, with definable stack alignment value.  Set to 16 now
5142         for all platforms.
5143
5144         * mini.c, mini.h, driver.c: Command line option for disabling
5145         stack alignment.
5146
5147 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5148
5149         * basic-simd.cs: Tests for new methods in Vector4ui.
5150
5151 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5152
5153         * mini-ops.h: Add packed int shuffle.
5154         
5155         * cpu-x86.md: Same.
5156
5157         * mini-x86.c (mono_arch_output_basic_block): Same.
5158
5159         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
5160         extract mask, max, min, shuffle.
5161
5162         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
5163
5164 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5165
5166         * basic-simd.cs: Tests for new methods in Vector8us.
5167
5168 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5169
5170         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
5171         RuntimeTypeHandle, not a TypedReference.
5172
5173 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
5174
5175         * simd-intrinsics.c: remove relocations.
5176
5177 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
5180         optimizations from the x86 backend.
5181
5182 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
5183
5184         * simd-methods.h, simd-intrinsics.c: debloat method names and
5185         prepare for no relocations.
5186
5187 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * mini-ops.h: Add packed min/equal and sum of absolute differences.
5190         
5191         * cpu-x86.md: Same.
5192
5193         * mini-x86.c (mono_arch_output_basic_block): Same.
5194
5195         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
5196         extract mask, max, min and sum of absolute differences.
5197
5198         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
5199         method name.
5200
5201 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5202
5203         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
5204         Renamed one test for consistency.
5205
5206 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5207
5208         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
5209         fix to the code that deal with other blocks.
5210
5211 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5212
5213         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
5214
5215 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5216
5217         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
5218         that deals with vreg interference. Explicitly check for OP_LDADDR to be
5219         able to process the source reg.
5220
5221 2008-10-16  Martin Baulig  <martin@ximian.com>
5222
5223         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
5224
5225         * inssel.brg: Add `OP_HARD_NOP'.
5226
5227         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
5228
5229         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
5230         `OP_HARD_NOP' instruction when running inside the debugger.
5231
5232         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
5233         `OP_HARD_NOP' instruction when running inside the debugger.
5234
5235 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5236
5237         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
5238         now works. The issue with the regalloc tripping up no longer
5239         happens.
5240
5241         * simd-intrinsics.c (load_simd_vreg): Same.
5242
5243 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5244         
5245         * basic-simd.cs: Tests for new Vector8ui methods.
5246
5247 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5248
5249         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
5250         only for type. This fixes crashes where MonoInst::klass is checked
5251         for ops of type != VTYPE or OBJ.
5252
5253         * simd-intrinsics.c (load_simd_vreg): Same.
5254
5255 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5256
5257         * mini-ops.h: Add ops for packed shuffle/max/avg and
5258         extract mask.
5259         
5260         * cpu-x86.md: Same.
5261
5262         * mini-x86.c (mono_arch_output_basic_block): Same.
5263
5264         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
5265         extract mask.
5266
5267         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
5268         to emit extract mask op.
5269
5270         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
5271         to emit word shuffles.
5272
5273 2008-10-15  Mark Probst  <mark.probst@gmail.com>
5274
5275         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
5276         the largest alignment needed by a variable, but at least
5277         sizeof(gpointer).
5278
5279 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5280
5281         * basic-simd.cs: Tests for the fixes in the last commit.
5282
5283 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5284
5285         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
5286         no longer handles STACK_PTR input.
5287
5288         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
5289
5290         * simd-intrinsics.c (load_simd_vreg): New function that works like 
5291         get_simd_vreg   but handles STACK_PTR input.
5292
5293         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
5294         as the input can be an arbitrary pointer.
5295
5296         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
5297         LDADDR local optimization directly otherwise use a store op.
5298
5299 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5300
5301         * basic-simd.cs: Tests for dup low and dup high.
5302
5303 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5304
5305         * mini-ops.h: Add dup low and dup high ops.
5306         
5307         * cpu-x86.md: Same.
5308
5309         * mini-x86.c (mono_arch_output_basic_block): Same.
5310
5311         * simd-intrinsics.c (vector4f_intrinsics): Same.
5312
5313 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * basic-simd.cs: Tests for recently added functionality.
5316
5317 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5318
5319         * mini-ops.h: Add remaining sse1 fp ops.
5320         
5321         * cpu-x86.md: Add remaining sse1 fp ops.
5322
5323         * mini-x86.c (mono_arch_output_basic_block): Same.
5324
5325         * mini.h: Add enum for simd FP compare conditions.
5326
5327         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
5328
5329         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
5330         so the backed can generate the appropriate op.
5331
5332 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5333         This patch squeese one more byte from the SimdIntrinsc struct.
5334
5335         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
5336         a a shift amount intead of simply or'ing it.
5337
5338         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
5339
5340         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
5341         byte so we can have an aditional flags field without increasing struct size.
5342
5343         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
5344         against the simd_supported_versions bitmask.
5345
5346         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
5347
5348 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
5349
5350         * mini.c: remove rawbuffer code (the only use here is unsafe because
5351         it takes locks during signal handling and the kernel now provides much
5352         better info in proc/pid/smaps these days).
5353
5354 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5355
5356         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5357         OP_X86_PUSH_OBJ. Fixes #434620.
5358
5359         * objects.cs: Add a test.
5360         
5361 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5362
5363         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5364         that the packuswb/packusdw don't work with unsigned numbers for what
5365         would be negative numbers in signed format.
5366
5367         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5368         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5369
5370         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5371
5372         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5373
5374         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5375
5376         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5377
5378         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5379         add more ops.
5380
5381         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5382         version as the enum in mini.h.
5383
5384         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5385         for sse3 ops, check the simd_version field if present. This way the code
5386         works with all versions of sse.
5387
5388 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5389
5390         * simd-intrinsics.c: Fixed intrinsic name typo.
5391
5392         * mini.h: Added missing simd exported function.
5393
5394         * basic-simd.cs: Added tests for Vector4ui.
5395         Fixed broken test for Vector16b.
5396
5397 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5398
5399         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5400         the max length to 64.
5401
5402 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5403
5404         * method-to-ir.c: Only do the fast virtual generic method call for
5405         non-wrapper methods.
5406
5407         * mini.h, mini-trampolines.c: The new generic virtual remoting
5408         trampoline handles virtual method calls via the vtable (as done by
5409         the fast virtual generic method calls) to remoting proxies.
5410
5411         * mini.c (mono_jit_create_remoting_trampoline): For generic
5412         methods reate a generic virtual remoting trampoline.
5413
5414         * mini-amd64.h: Enable fast virtual generic method calls again.
5415
5416 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5417
5418         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
5419         restore registers when doing tail calls.
5420
5421 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5422
5423         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
5424         Vector4ui.
5425
5426 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5427
5428         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
5429
5430 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5431
5432         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
5433
5434 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5435
5436         * basic-simd.cs: Retrofit for API changes.
5437
5438 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5439
5440         * mini-ppc.c: Handle integer stack arguments for tail calls.
5441
5442 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5443
5444         * optflags-def.h: Removed sse3 optimization.
5445
5446         * driver.c: Same.
5447
5448         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
5449         sse3.
5450
5451         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
5452
5453         * mini.h: Added enumeration with simd versions.
5454
5455         * simd-intrinsics.c (emit_intrinsics): Use the new static var
5456         for detecting SSE3.
5457
5458         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
5459
5460         * mini.c (mini_init): Call mono_simd_intrinsics_init.
5461
5462 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5463
5464         * basic-simd.cs: Added tests for Vector8u and Vector16u.
5465
5466         * basic-simd.cs: Fixed test naming.
5467
5468 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5469
5470         * mini-ops.h: Added ops for packed and saturated math, shifts
5471         and packing/unpacking.
5472
5473         * cpu-x86.md: Added descriptors for the above ops.
5474
5475         * mini-x86.c: Added code to emmit the above ops.
5476
5477         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
5478
5479 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
5480
5481         * aot-compiler.c (compile_method): Enable AOT for generic code.
5482
5483         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
5484
5485 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
5486
5487         * mini.c: add a workaround for a common screwup that ends up blamed
5488         to mono (other processes blocking signal delivery).
5489
5490 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5491
5492         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
5493         in the LDFLD/STFLD opcodes. Fixes #432673.
5494
5495         * iltests.il.in: Add a new test.
5496
5497 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
5498
5499         * mini-arm.c: attach the thread in unmanaged->managed transitions
5500         using delegates (bug #433148).
5501
5502 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5503
5504        * basic-simd.cs: Use new ShuffleSel constants.
5505
5506 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
5509
5510         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
5511         only disable simd intrinsics if no sse2 is detected.
5512
5513         * optflags-def.h: Added sse3.
5514
5515         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
5516         is disabled.
5517
5518 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5519
5520         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
5521         when adding delegate-invoke wrappers.
5522
5523 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * Makefile.am: Reenable the simd tests.
5526
5527 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5528
5529         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
5530           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
5531           other vreg is allocated to that hreg.
5532
5533         Contributed under MIT/X11 license.
5534
5535 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5536
5537         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
5538         yet checked in.
5539
5540 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5541
5542         * basic-simd.cs: New test suite for SIMD intrinsics.
5543
5544         * Makefile.am: Added new tests.
5545
5546 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5547
5548         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
5549
5550         * mini-ops.h: Same.
5551
5552         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
5553
5554         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
5555         using SSE2 aware opcodes.
5556
5557         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
5558         is enabled, this code path is only reachable if conversion ops are emmited after
5559         mono_method_to_ir.
5560
5561         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
5562
5563         This optimization saves 6 bytes per conversion against the old version.
5564
5565 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * aot-compiler.c (compile_method): Don't skip methods referencing 
5568         generic methods without a corresponding entry in token_info_hash, since
5569         encode_method_ref () can handle all generic methods now.
5570
5571         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
5572         generic context is set.
5573         
5574         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
5575         generic sharing of LDTOKEN.
5576
5577 2008-10-06  Mark Probst  <mark.probst@gmail.com>
5578
5579         * mini-amd64.h: Temporarily disabled fast virtual generic method
5580         calls because it breaks the System.Runtime.Remoting tests.
5581
5582 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5583
5584         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
5585
5586         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
5587         so inlining actually works.
5588         (check_inline_caller_method_name_limit): Ditto.
5589
5590 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
5591
5592         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
5593         64 bit safety (from Olaf Hering and Andreas Farber).
5594
5595 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5596         
5597         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
5598         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
5599         unused virtual call support code.
5600
5601         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
5602         
5603         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
5604         which can't use aot trampolines.
5605         (decode_patch): Don't create aot trampolines for methods which can't use
5606         them.
5607
5608         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
5609         use aot trampolines.
5610
5611         * mini.h: Bump AOT image format version.
5612         
5613 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5614
5615         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5616         to save_token_info () since cmethod is inflated for constrained calls.
5617
5618         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5619
5620 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5621
5622         * Makefile.am: Add build rules for ppc64.
5623         This avoids the build failing at pedump with unresolved symbols
5624         due to lack of arch_sources. Instead it will now fail earlier
5625         due to lack of cpu-ppc64.md.
5626
5627         Contributed under MIT/X11 license.
5628
5629 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5630
5631         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5632         tail calls.
5633
5634         * iltests.il.in: Add test case for tail call with many arguments.
5635
5636 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5639         to the fast virtual generic method code until the aot case is fixed.
5640
5641 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5642
5643         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5644
5645 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5646
5647         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5648         thunks.
5649
5650 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5651         
5652         * simd-intrinsics.c: Forgot to add this one.
5653
5654         * mini-codegen.c: Fix macro in case SIMD is not supported.
5655
5656 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5657         
5658         This patch land initial JIT support for simd intrinsics.
5659
5660         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5661
5662         * Makefile.am: Added simd-intrinsics.c
5663
5664         * simd-intrinsics.c: New file with simd instrinsic related
5665         code.
5666
5667         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5668
5669         * cpu-x86.md: Add simd related instructions.
5670
5671         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5672
5673         * driver.c: Added two new --regression variants.
5674
5675         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5676
5677         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5678
5679         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5680         extract some complicated logic to helper functions.
5681
5682         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5683
5684         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5685
5686         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5687         the specialized simplification pass.
5688
5689         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5690
5691         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5692
5693         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5694         table.
5695
5696         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5697         if MONO_ARCH_NEED_SIMD_BANK is defined.
5698
5699         * mini-ops.h: Added the new simd ops.
5700
5701         * mini-x86.c: Added mono_arch_xregname.
5702
5703         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5704
5705         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5706
5707         * mini-x86.h: Define simd related MONO_ARCH macros.
5708
5709         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5710
5711         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5712
5713         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5714         MONO_CLASS_IS_SIMD to deal with simd related IR.
5715
5716         * mini.h (MonoInst): Added spill_var to the backend union.
5717
5718         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5719
5720         * mini.h: Added forward declarations of the new simd fuctions.
5721
5722         * optflags-def.h: Added new optimization names SIMD.
5723
5724         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5725
5726         * regalloc.h: Added support for working with 3 register banks.
5727
5728         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5729
5730         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5731
5732 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5733
5734         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5735
5736 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5737
5738         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5739         instead of one on 64 bit systems.
5740
5741         * method-to-ir.c: Remove unused includes.
5742
5743 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5746         cfg->used_int_regs, since the two are different on arm.
5747
5748 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5749
5750         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5751         mono_method_get_vtable_index() to get the vtable index.
5752
5753 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5754
5755         * method-to-ir.c (mono_method_to_ir2): Don't create native
5756         wrappers for array methods, because they're never called (and if
5757         they were called they wouldn't work).
5758
5759 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5760
5761         * method-to-ir.c (mono_method_to_ir2): Array methods are
5762         special-cased and must not be invoked indirectly via the (M)RGCTX
5763         when generic sharing is turned on.  Fixes #431413.
5764
5765 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5766
5767         * method-to-ir.c: When generic sharing is active, call
5768         non-interface virtual generic methods via the standard trampoline.
5769
5770         * mini-trampolines.c: Handle virtual generic shared methods.
5771
5772         * mini.h, mini-x86.c, mini-x86.h: New argument for
5773         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5774         method thunks and which is the trampoline to call if the lookup
5775         fails.  Enable the virtual generic method thunk for x86.
5776
5777         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5778         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5779         argument but assert that it's NULL, because these archs don't yet
5780         implement the virtual generic method thunk.  Changes in the IMT
5781         thunk data structures.
5782
5783 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * aot-compiler.c (emit_globals): Avoid invalid characters in
5786         the static linking symbol.
5787
5788         * objects.cs: Add a test for the range check optimization. Fix warnings.
5789
5790         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5791         optimization from the current JIT.
5792
5793         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5794         later in decompose_array_access_opts () to allow more optimizations.
5795
5796         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5797         mono_decompose_soft_float () for consistency.
5798
5799         * mini-ops.h: Fix arguments of OP_STRLEN.
5800
5801         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5802         into a separate function.
5803         (reset_cast_details): Ditto.
5804         (handle_unbox): Save cast details. Fixes #431254.
5805
5806         * method-to-ir.c: Remove some obsolete FIXMEs.
5807
5808 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5809
5810         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5811
5812 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5813
5814         * mini-codegen.c: More work on macros to make them
5815         ready for multiple regbanks.
5816
5817 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5818
5819         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5820
5821         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5822
5823 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5824
5825         * mini-codegen.c (mono_spillvar_offset): Proper support for
5826         multiple regbanks.
5827
5828 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5829
5830         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5831         the stack overflow changes.
5832
5833 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5834
5835         * mini-codegen.c: Make all bank macros depend on reg_bank.
5836
5837         * mini-codegen.c (mono_local_regalloc): Make free mask
5838         initialization regbank aware.
5839
5840 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5841
5842         * mini-codegen.c (mono_local_regalloc): Extract callee
5843         mask selection to a function and make it regbank aware.
5844
5845 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5846
5847         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5848         code to deal with many regbanks.
5849
5850 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5851
5852         * mini-codegen.c: More fp->regbank changes.
5853
5854 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5855
5856         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5857         of a hardcoded constant.
5858
5859 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5860
5861         * method-to-ir.c (type_from_stack_type): Fix typo.
5862
5863 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * mini-ia64.c (emit_move_return_value): Convert float return values to
5866         double.
5867
5868         * objects.cs: Add a new test.
5869         
5870         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5871         VARARG methods to fix an assert later.
5872
5873         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5874         end so it at least compiles.
5875
5876 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5879
5880 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5881
5882         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5883         optimization to a new function (emit_optimized_ldloca_ir) and enable
5884         it for both ldloca and ldloca_s.
5885
5886 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5887
5888         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5889         gshared CASTCLASS code.
5890
5891         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5892         amd64, where the libc stack unwinder encounters stack frames referring to
5893         native code in unmapped memory.
5894
5895         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5896         sharing.
5897
5898         * generics.cs: Add new test.
5899
5900 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5901
5902         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5903         add a check that one of the ARM_FPU_ constants is defined.
5904
5905         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5906         
5907         * mini-exceptions.c: Fix build on non-altstack platforms.
5908
5909         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5910         sharing of vtypes.
5911
5912         * ir-emit.h: Add a comment to NEW_PCONST.
5913
5914         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5915
5916         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5917
5918         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5919         after the changes to MonoJitDomainInfo.
5920
5921 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5922
5923         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5924
5925 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5926
5927         * mini-ppc.c: Compiler warning fixes.
5928
5929 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5930
5931         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5932         for pinvokes.
5933
5934 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5935
5936         * exceptions-ppc.c, mini-ppc.h: Compile
5937         mono_arch_handle_altstack_exception() on Darwin, too.
5938
5939 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5940
5941         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5942         work on archs which don't have generic sharing implemented, only
5943         without the vtable_arg.
5944
5945 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5946
5947         * mini.c: Added comment explaining why delegate ctor icall
5948         wrappers are compiled.
5949
5950 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5951
5952         * mini.c: Don't produce trampolines to delegate ctor icall
5953         wrappers but compile them upfront.
5954
5955 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5956
5957         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5958         runtime-set function when going back to managed code. Currently this
5959         is used to set back the protection on the soft ovf pages and/or to
5960         throw the stack overflow exception that happened in unmanaged code.
5961
5962 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5963
5964         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5965         runtime-set function when going back to managed code. Currently this
5966         is used to set back the protection on the soft ovf pages and/or to
5967         throw the stack overflow exception that happened in unmanaged code.
5968
5969 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5970
5971         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5972         the support code for restoring stack protection after stack overflows
5973         that happen in unmanaged code. Don't set the exec permission on the
5974         soft overflow area.
5975
5976 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5977
5978         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5979         delegate->method_ptr is set. Fixes #428054.
5980
5981 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * tests.cs: Rename to ratests.cs.
5984
5985         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5986         emit_get_rgctx_... functions.
5987
5988 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5989
5990         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5991
5992 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5993
5994         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5995         before asserting that method is sharable.
5996
5997 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5998
5999         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
6000         whether method needs a static RGCTX wrapper used instead of
6001         complex conditions.
6002
6003         * generic-sharing.c, mini.h: A few functions moved to
6004         metadata/generic-sharing.c.
6005
6006 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6007
6008         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
6009         Generic code sharing for value types, which essentially means
6010         treating value type methods like static methods.  The RGCTX is
6011         passed in the same way.
6012
6013 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6014
6015         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
6016         opcode when creating multi-dimensional arrays of open types.
6017
6018         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
6019         open generic types.
6020
6021         * generics.cs: Add a test.
6022
6023         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
6024
6025 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6026
6027         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
6028
6029         * mini.c (mini_method_compile): Set it when running under the debugger. 
6030
6031         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
6032         vreg optimization if the flag is set.
6033
6034         * driver.c (mono_main): Add --attach= option to pass options to
6035         the attach agent.
6036
6037         * mini.c (sigquit_signal_handler): Start the attach agent.
6038
6039         * ssapre.c: Disable this to save space since it is not yet ported to
6040         linear IR.
6041
6042         * regalloc2.c: Disable this to save space.
6043
6044         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
6045
6046 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
6047
6048         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
6049         the -v option useful again.
6050
6051 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6052
6053         * mini-amd64.c (mono_arch_output_basic_block): Add support for
6054         --break-at-bb.
6055
6056         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
6057         arrays of arrays. Fixes #428406.
6058
6059         * method-to-ir.c (mini_emit_castclass): Ditto.
6060
6061         * objects.cs: Add new test.
6062         
6063 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
6064
6065         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
6066         was wrong at it choked against target_type_is_incompatible for byref types.
6067
6068 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6069
6070         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
6071         places.
6072
6073 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
6074
6075         * mini-exceptions.c: update a few more exceptions-related counters.
6076
6077 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
6078
6079         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
6080         new functions to allocate from persistent mempools.
6081
6082 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6083
6084         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
6085         multiple register banks in the future.
6086
6087         * mini-codegen.c (mono_local_regalloc): Fix a warning.
6088
6089 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
6090
6091         * mini.c (type_to_eval_stack_type): Remove duplicated function.
6092
6093         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
6094
6095         * mini.h: Export type_to_eval_stack_type.
6096
6097         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
6098         is only ins->klass of byref types.
6099
6100 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
6101
6102         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
6103         (mini_emit_memcpy2): Ditto.
6104
6105         * mini-amd64.c: Fix a warning.
6106
6107 2008-09-21  Mark Probst  <mark.probst@gmail.com>
6108
6109         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
6110         linking.
6111
6112 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
6113
6114         * method-to-ir.c: Extract stloc micro-optimization to a
6115         function and apply it to all cases.
6116
6117 2008-09-19  Mark Probst  <mark.probst@gmail.com>
6118
6119         * method-to-ir.c: Don't fail generic code sharing in cases we
6120         already support.
6121
6122 2008-09-18  Mark Probst  <mark.probst@gmail.com>
6123
6124         * mini-ppc.c: Handle structs in tailcalls on Darwin.
6125
6126 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
6127
6128         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
6129         implementation.
6130
6131 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
6132
6133         * trace.c: make tracing more useful and correct, with per-thread
6134         id and indent info.
6135
6136 2008-09-15  Mark Probst  <mark.probst@gmail.com>
6137
6138         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
6139         doing a method call and the argument is an R4.
6140
6141 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
6144         generic methods.
6145
6146 2008-09-13  Mark Probst  <mark.probst@gmail.com>
6147
6148         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
6149
6150 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
6151
6152         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
6153         (MONO_JUMP_TABLE_FROM_INS): Ditto.
6154
6155 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6156
6157         * driver.c: Add a --agent argument (not supported yet) to load managed
6158         agent assemblies before loading the main assembly, similarly to how the
6159         Java VM handles agents.
6160
6161 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6162
6163         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
6164         function to do stack layout of local variables.
6165
6166 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6167
6168         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
6169         calculation.
6170
6171 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6172
6173         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
6174         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
6175         JIT if DISABLE_JIT is defined.
6176
6177         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
6178         defined.
6179
6180 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6181
6182         * iltests.il.in: Disable the fconv test on PPC (the result is
6183         undefined according to ECMA).
6184
6185 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6186
6187         * iltests.il.in: Enable tail call tests for PPC.
6188
6189         * mini.h: Add variable for storing incoming valuetype argument
6190         addresses for tail calls.
6191
6192         * mini-ppc.c: Implement valuetype arguments and return values for
6193         tailcalls on Linux.
6194
6195 2008-09-09  Mark Probst  <mark.probst@gmail.com>
6196
6197         * mini-ppc.c: Partially implement tail calls (struct arguments and
6198         return values not supported).
6199
6200         * method-to-ir.c: Enable tail calls on PPC.
6201
6202 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
6205         runtime-invoke wrappers to work around the problem of them getting
6206         assigned to a random class.
6207
6208         * aot-runtime.c (mono_aot_get_method): Ditto.
6209         
6210 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
6213         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
6214
6215 2008-09-07  Mark Probst  <mark.probst@gmail.com>
6216
6217         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
6218         until they're implemented properly.
6219
6220         * exceptions-ppc.c: Use arch-independent exception-handling code
6221         instead of custom one.
6222
6223         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
6224         for Linear IR.
6225
6226         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
6227
6228         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
6229         applies when __powerpc__ is defined.
6230
6231 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
6232
6233         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
6234         methods to their code to avoid computing the full name of wrappers and
6235         doing a lookup in a string hash table.
6236
6237 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6238
6239         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
6240         we identify bblocks before method_to_ir () is ran.
6241
6242         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
6243         Also avoid optimizing branches pointing to themselves.
6244
6245         * mini.c (mini_method_compile): Ditto. Fixes #422947.
6246
6247 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
6248
6249         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
6250
6251 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6252
6253         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
6254         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
6255         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
6256         'buf'.
6257
6258         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
6259         jumped to the same entry in plt_jump_table.
6260
6261 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         * method-to-ir.c (initialize_array_data): Handle field with RVA from
6264         dynamic images.
6265
6266 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
6267
6268         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
6269         other assignment can be if converted. Saves 1.5% on corlib size and fixes
6270         #421807.
6271
6272 2008-08-29  Geoff Norton  <gnorton@novell.com>
6273
6274         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
6275         segment, and doesn't properly handle .space as .text.  Fixes
6276         AOT Mach/ARM
6277
6278 2008-08-29  Geoff Norton  <gnorton@novell.com>
6279
6280         * mini.c: Disable the mach exception handler when running on 
6281         ARM
6282
6283 2008-08-29  Geoff Norton  <gnorton@novell.com>
6284
6285         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
6286         globals on Darwin/ARM
6287
6288 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
6291         since too many things depend on it. Instead, call 
6292         mono_runtime_set_no_exec ().
6293         
6294         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
6295         the new JIT.
6296
6297         * aot-compiler.c: Add an 'asm-only' AOT option.
6298
6299         * mini.c: Avoid initializing the runtime when doing AOT compilation.
6300                 
6301         * aot-compiler.c (compile_method): Disable gshared support for now as it
6302         doesn't yet work.
6303
6304 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6305
6306         * mini-amd64.h : Fix a compiler warning.
6307
6308         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
6309           Changed to use a callback function to retrieve the unwind info.
6310           This avoids problems observed when code blocks were removed by
6311           unloading an app domain.
6312
6313         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
6314           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
6315           to work properly.
6316
6317         Contributed under MIT/X11 license.
6318
6319 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6320
6321         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
6322           case to keep the stack aligned to 8.
6323
6324         Contributed under MIT/X11 license.
6325
6326 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
6327
6328         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
6329         avoid repeated linear searches.
6330
6331 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6332
6333         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
6334         methods it can't handle.
6335         
6336         * aot-compiler.c (add_method): Avoid adding a method twice.
6337         (add_wrappers): Add runtime invoke wrappers for all methods.
6338
6339         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
6340         function to create an aot-compatible version of this trampoline.
6341
6342         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
6343
6344 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
6347
6348         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
6349         with a generic sharing failure.
6350
6351         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
6352
6353         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6354         CEE_RETHROW. Fixes #419634.
6355
6356         * mini.c (mono_method_to_ir): Ditto.
6357
6358         * exceptions.cs: Add a new test.
6359         
6360         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6361         to mono_type_stack_size_internal () since some callers might not pass in
6362         an rgctx.
6363
6364         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6365         instrument_prolog. Fixes #419878.
6366
6367         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6368         doubles in soft float mode volatile.
6369
6370 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6371
6372         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6373
6374         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6375         to handle soft float correctly.
6376
6377         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6378         the fast path.
6379
6380         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6381
6382         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6383         to sp, since the generics catch code requires it.
6384
6385         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6386         copying.
6387
6388         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6389         mono_arch_emit_imt_argument ().
6390
6391         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6392
6393         * mini-arm.c tramp-arm.c: Generic sharing updates.
6394
6395 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6396
6397         * mini-arm.c: Fix the arm build.
6398
6399         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6400         handling enums, generic instances and generic sharing.
6401         (mini_type_stack_size_full): Ditto.
6402
6403         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6404         
6405         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6406
6407         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6408
6409         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6410         trampolines.
6411
6412         * mini-arm.c: Various small generic sharing changes.
6413
6414         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6415         this for x86.
6416         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
6417         custom code.
6418
6419         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
6420         helper function to return a generic class init trampoline.
6421
6422         * method-to-ir.c mini.c: Use it.
6423         
6424         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
6425         arch-specfic function to return a generic class init trampoline.
6426
6427         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
6428         the GENERIC_CLASS_INIT custom code.
6429
6430         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
6431         a fatal error, not a sharing failure.
6432
6433         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
6434         needed.
6435
6436         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
6437         trampoline argument from MONO_ARCH_VTABLE_REG.
6438
6439         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6440         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6441         argument, and pass the vtable in VTABLE_REG.
6442
6443         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6444         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6445         argument, and pass the vtable in VTABLE_REG.
6446         (mono_arch_create_trampoline_code_full): Remove some special casing for
6447         the rgctx fetch trampoline.
6448
6449         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
6450         Fixes #419273.
6451
6452         * iltests.il: Add a test for it.
6453
6454 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
6455
6456         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
6457
6458         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
6459         no longer needed.
6460
6461         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
6462         use mono_jit_info_table_find () to avoid recursion.
6463         (mono_delegate_trampoline): Add a sync wrapper here.
6464
6465         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
6466         here.
6467
6468         * mini.c (mono_method_to_ir): Ditto.
6469         
6470         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
6471         add_sync_wrapper argument. Don't add a sync wrapper here.
6472         (mono_create_jump_trampoline): Don't add a sync wrapper here.
6473
6474         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
6475         
6476 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6477
6478         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
6479           of nonvolatile registers back from MonoContext to CONTEXT.
6480
6481         Contributed under MIT/X11 license.
6482
6483 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6484
6485         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
6486           arguments on Winx64 there are only 4 argument registers.  For this
6487           logic to work the last argument must be pulled from the stack.  
6488
6489         Contributed under MIT/X11 license.
6490
6491 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
6492
6493         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6494
6495         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
6496         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
6497         encode/decode_method_ref ().
6498
6499         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
6500
6501         * aot-runtime.c (decode_patch): Ditto.  
6502
6503         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
6504         MONO_PATCH_INFO_METHOD.
6505
6506         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
6507         MonoGenericJitInfo.
6508
6509         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
6510         MonoGenericJitInfo.
6511
6512         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
6513
6514         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
6515         one from the caller.
6516
6517         * aot-runtime.c (decode_generic_inst): New function to decode and
6518         return a interned generic inst.
6519         (decode_klass_ref): Use it.
6520         (decode_method_ref): Ditto.
6521
6522         * aot-compiler.c (emit_exception_debug_info): Save 
6523         jinfo->has_generic_jit_info too.
6524
6525 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
6528
6529         * iltests.il.in: Add a test for fconv_to_i.
6530
6531         * liveness.c: Disable the liveness2 pass for now to save space.
6532
6533         * regalloc2.c: Include mempool-internals.h to fix warnings.
6534
6535         * aot-compiler.c (encode_method_ref): Encode the context of generic
6536         instance methods.
6537
6538         * aot-runtime.c (decode_method_ref): Inflate generic methods using
6539         the context saved in the aot file.
6540
6541         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6542
6543         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6544
6545         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
6546         volatile so they won't be optimized away.
6547
6548 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
6549
6550         * ssa.c:
6551         * ssa2.c:
6552         * mini.c:
6553         * regalloc2.c:
6554         * dominators.c: Remove duplicated functions that now are in
6555         mempool-internals.h.
6556
6557 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6558
6559         * aot-compiler.c: Fix warnings.
6560
6561         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
6562
6563         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
6564
6565         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
6566         as the patch type.
6567
6568         * mini.c (mono_resolve_patch_target): Ditto.
6569         
6570         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
6571         (encode_klass_ref): Add support for encoding VARs/MVARs.
6572
6573         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
6574
6575         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
6576         the handling of the got entries into a separate 'decode_got_entry' function.
6577         Add support for RGCTX_FETCH.
6578
6579         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
6580         clobbered by the trampoline code.
6581
6582         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
6583         not clobbered by the indirect calling code.
6584
6585 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6586
6587         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
6588         to fix the build.
6589
6590 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
6591
6592         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
6593         signature using the compilation mempool otherwise we would leak it.
6594
6595 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6596
6597         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
6598         mono_emit_abs_call ().
6599
6600         * patch-info.h: Add GENERIC_CLASS_INIT.
6601
6602         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
6603
6604         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
6605         as their target as a near call.
6606
6607         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
6608         ABS handling code.
6609         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
6610
6611         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6612         call to a runtime function described by a patch.
6613
6614         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6615         mono_emit_abs_call, this has the advantage that the ABS handling code in
6616         mono_codegen () can handle them both, and can handle other stuff in the
6617         future without additional code.
6618
6619         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6620         entry.
6621         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6622         abs addresses.
6623
6624         * mini.h: Add missing bblock related prototypes.
6625
6626         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6627         reverse_inst_list_len fields.
6628
6629         * mini.c: Refactor this file a bit by moving branch optimizations to 
6630         branch-opts.c.
6631
6632         * method-to-ir.c: Merge generic sharing changes missed earlier.
6633
6634         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6635
6636         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6637         shared patches. Process METHODCONST as a shared patch.
6638
6639         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6640         as it crashes on the 2.0 mscorlib.
6641
6642         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6643         to cause crashes.
6644         
6645         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6646         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6647         by IMT.
6648
6649         * aot-compiler.c: Reorganize the got handling code to be a bit more
6650         understandable.
6651
6652 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6653
6654         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6655         mono_patch_info_equals/hash, and use it to massively simplify
6656         get_plt_index ().
6657
6658         * mini.c (mono_patch_info_hash): Simplify this and add support for
6659         more patch types.
6660
6661         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6662
6663         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6664         handling code, since an offset is not enough to identify a trampoline.
6665
6666         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6667
6668 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6669
6670         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6671
6672         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6673
6674         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6675
6676         * decompose.c: PPC decompositions for various ops.
6677
6678         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6679
6680 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6683         call the generic trampoline code using a call, instead of a jump, to
6684         remove some special casing from the generic trampoline code.
6685
6686         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6687         (mono_codegen): Ditto.
6688
6689         * aot-compiler.c aot-runtime.c: Ditto.
6690
6691         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6692
6693         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6694         helper function to find the offset corresponding to a lazy fetch trampoline.
6695
6696         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6697         when doing generic sharing.
6698
6699         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6700         places.
6701         
6702         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6703         mini-trampolines.c to be with the other trampoline creation functions.
6704
6705         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6706         as it is equal to method->signature in most cases, add a 
6707         mono_emit_method_call_full variant which takes a signature and an imt
6708         argument as well.
6709
6710 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6713         to this function, since it could be computed easily from the method 
6714         argument.
6715         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6716         more.
6717
6718         * method-to-ir.c mini.c: Remove references to 
6719         compile_generic_method_wo_context.
6720
6721         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6722         generic method calls.
6723         
6724         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6725         dimensional non-szarrays.
6726
6727         * mini.c (mini_init): Register mono_array_new_1.
6728
6729         * jit-icalls.c (mono_array_new_1): New jit icall.
6730
6731         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6732         pointing to the method.
6733
6734         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6735         method addresses belonging to METHOD_JUMP patches in the 
6736         jump_target_got_slot_hash.
6737         (mono_aot_load_method): Ditto.
6738
6739         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6740         METHOD_JUMP patches.
6741
6742         * mini.c (mini_create_jit_domain_info): New helper function which 
6743         initializes/frees domain->runtime_info.
6744         (mini_free_jit_domain_info): Ditto.
6745         (mini_init): Install the domain hook functions with the runtime.
6746
6747         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6748         information maintained by the JIT.
6749
6750         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6751         insertion into jump_table_hash into mono_codegen (), also implement proper
6752         locking.
6753
6754         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6755         tail calls, it is already done by the aot code.
6756         
6757         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6758         mechanism on amd64.
6759
6760         * iltests.il.in: Make the jmp test a bit more complex.
6761
6762         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6763         generic instances which doesn't have a token.
6764
6765         * aot-runtime.c (decode_method_ref): Ditto.
6766         
6767         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6768         can handle this case now.
6769         (handle_box): Ditto.
6770
6771 2008-08-15  Geoff Norton  <gnorton@novell.com>
6772
6773         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6774         debugging check.
6775
6776 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6777
6778         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6779         calling generic methods.
6780
6781         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6782
6783         * aot-runtime.c (decode_patch_info): Ditto.
6784
6785         * mini.c (mono_resolve_patch_target): Ditto.
6786         
6787         * patch-info.h: Add METHOD_RGCTX.
6788
6789         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6790
6791 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6792
6793         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6794         arguments in registers.
6795
6796         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6797         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6798
6799         * mini.c (mini_method_compile): Abort aot compilation for generic
6800         methods if generic sharing is disabled.
6801         
6802         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6803         an mrgctx.
6804
6805         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6806         requiring an mrgctx.
6807
6808         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6809         store instructions when converting a vcall to a normal call.
6810
6811         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6812         mono_arch_find_jit_info.
6813
6814 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6815
6816         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6817         avoid calling mono_method_full_name () for every method even if the
6818         env var is not set.
6819         (check_inline_caller_method_name_limit): Ditto.
6820
6821 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6824         assemblies in one run.
6825
6826         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6827         skipped methods if it is not 0.
6828
6829         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6830
6831 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6832
6833         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6834           MONO_ARCH_HAVE_UNWIND_TABLE.
6835
6836         Contributed under MIT/X11 license.
6837
6838 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6839
6840         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6841           from default optimizaton list on Winx64.
6842
6843         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6844
6845         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6846           the LMF from the MonoJitTlsData structure.
6847
6848         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6849
6850         Contributed under MIT/X11 license.
6851
6852 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6853
6854         * mini.c (sigsegv_signal_handler): Fix the build.
6855
6856         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6857         assembly->aot_module.
6858
6859         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6860         hash table. This simplifies and speeds up a lot of code, and fixes support
6861         for .netmodules.
6862
6863         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6864         with the runtime.
6865
6866         * mini-exceptions.c: Ditto.
6867         
6868         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6869         'native_offset' argument, since these are computed in the 
6870         mono_find_jit_info () function.
6871
6872         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6873         is used by exceptions-ppc.c.
6874
6875         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6876         mono_arch_find_jit_info ().
6877         
6878         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6879         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6880         generic code in mini-exceptions.c.
6881
6882 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6885
6886         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6887         
6888         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6889         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6890         called while holding the loader lock. Fixes #415608.
6891         (mono_aot_get_method_from_token_inner): Ditto.
6892
6893 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6894
6895         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6896         to reduce differences between this and the generic implementation in
6897         mini-exceptions.c.
6898         (ves_icall_get_frame_info): Ditto.
6899
6900         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6901
6902         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6903         longer neccesarry.
6904
6905         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6906         mono_arch_get_call_filter () and make it non-static, for consistency with the
6907         other architectures.
6908
6909 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6910
6911         * mini.c:
6912         * local-propagation.c:
6913         * mini-x86.c: Correct the name of arch defines.
6914
6915 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6918         NO_EMULATE_LONG_SHIFT_OPS define.
6919
6920 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6923         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6924
6925         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6926         MACH fixes. Merged from the 2.0 branch.
6927
6928         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6929
6930         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6931         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6932
6933         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6934
6935         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6936         mono_marshal_get_native_wrapper () signature changes.
6937
6938 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6939
6940         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6941         conversion bug under arm.
6942
6943 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6946
6947         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6948         with overflow checking.
6949
6950 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6951
6952         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6953         to the genmdesc.pl file
6954
6955 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6956
6957         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6958         arg_array in the soft-float versions of the LOAD/STORE macros.
6959
6960         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6961         implementation.
6962
6963         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6964
6965 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6966
6967         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6968         a float HFA. Fixes #413621.
6969
6970 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6971
6972         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6973         frame_size to args_size. Fixes build.
6974
6975 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6978         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6979
6980         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6981         the stack are not unaligned. Fixes #413247.
6982         
6983 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6984
6985         * mini.c: update jitted methods performance counters.
6986
6987 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6988
6989         * mini-exceptions.c: increase the exceptions thrown performance
6990         counter in mono_handle_exception ().
6991
6992 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6993
6994         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6995         can work with netmodules.
6996
6997 2008-07-28  Geoff Norton  <gnorton@novell.com>
6998
6999         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
7000         regression tests.
7001
7002 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7003
7004         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
7005         correct place.
7006
7007 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
7008
7009         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7010           The float param registers and other param registers must be the 
7011           same index on Windows x64.
7012
7013         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
7014           ArgValuetypeAddrInIReg argument case.  Setting the argument
7015           op to OP_VTARG_ADDR (OP_REGOFFSET)).
7016
7017         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
7018           variable computed above as the copy length for arguments of storage
7019           type ArgValuetypeAddrInIReg.
7020
7021         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
7022           ArgValuetypeAddrInIReg argument case.  This case will rely on
7023           mono_arch_emit_outarg_vt to emit the correct code later in the process.
7024
7025         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
7026           a 32 byte stack allocation for all calls.  We will omit the adjustment for
7027           jump and tail call instructoins as they do not follow the typical call behavior.
7028
7029         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
7030           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7031           local variable and pass the local variable by reference to the called method.
7032
7033         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
7034           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
7035           of a struct is passed in a register it must be saved with the other
7036           volatile argument on the stack.
7037
7038         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
7039           frame pointer the stack adjustment value must be saved to the unwind 
7040           info structure.
7041
7042         Contributed under MIT/X11 license.
7043
7044 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
7047         which got lost in the merge.
7048
7049 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7050
7051         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
7052         build.
7053
7054         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
7055         
7056         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
7057         icalls, since they won't be patched.
7058
7059         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
7060         different code sequence when running under valgrind to prevent some valgrind
7061         errors.
7062
7063         * iltests.il.in: Add new regression test.
7064
7065         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
7066         end with a throw.
7067
7068         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
7069         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
7070
7071         * iltests.il.in: Add new test.
7072
7073         * aot-compiler.c: Fix some warnings.
7074
7075         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
7076         Fixes #412494.
7077
7078 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7079
7080         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
7081         (mini_usage_jitdeveloper): Add a missing --wapi option.
7082
7083 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * mini-codegen.c: Simplify the is_fp macros.
7086         (free_up_ireg): Remove, use free_up_reg instead.
7087         (free_up_reg): Fix the fp case.
7088
7089 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7090
7091         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
7092         lowered earlier.
7093
7094         * exceptions-x86.c: Merge some changes which seemed to have got lost
7095         in the linear-ir merge.
7096
7097         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
7098
7099         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
7100         long vreg volatile even if the variable was already created.
7101
7102         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
7103         volatile variables.
7104
7105 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7106
7107         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
7108
7109         * mini.c (mono_jit_compile_method_inner): Add support for 
7110         MONO_EXCEPTION_BAD_IMAGE.
7111
7112         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
7113         mini_method_get_context () returns NULL. Fixes #356531.
7114
7115         * mini.c (mono_method_to_ir): Ditto.
7116         
7117         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
7118         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
7119
7120 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7121
7122         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
7123         in the LDFTN implementation.
7124
7125 2008-07-25  Mark Probst  <mark.probst@gmail.com>
7126
7127         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
7128         code, patch calls to icalls, too, even if they're not in the
7129         shared generic code hash.  Fixes #411962.
7130
7131 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * cpu-x86.md: Increase the length of the fcall opcodes.
7134
7135         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
7136         calls returning floats.
7137
7138         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
7139         on NEWARR.
7140         
7141         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
7142         missed earlier.
7143
7144         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
7145         into the domain->method_code_hash.
7146
7147         * aot-compiler.c: Fix win32 build.
7148
7149         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
7150         
7151         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
7152         gshared NEWARR implementation.
7153
7154         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
7155
7156         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
7157         can be used outside of method_to_ir.
7158
7159         * mini.h (MonoCompile): Add arg_types field.
7160
7161         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
7162         
7163         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
7164         the values of the local arg_array and param_types array.
7165
7166 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
7169         got accesses might only get generated later when NEWOBJ is decomposed.
7170         
7171         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
7172         looking up the native code of the target method when a delegate is called
7173         for the first time.
7174
7175         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
7176         optimization.
7177
7178         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
7179
7180         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
7181         AOT work on platforms without a working dlsym implementation.
7182
7183         * mini.h: Bump AOT image format version.
7184         
7185 2008-07-24  Mark Probst  <mark.probst@gmail.com>
7186
7187         * mini-exceptions.c: Free a MonoType with
7188         mono_metadata_free_type() instead of g_free().
7189
7190         * aot-runtime.c: Free a MonoType.
7191
7192 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
7195         optimization.
7196
7197         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
7198         fp stack on x86.
7199
7200 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
7201         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
7202         profiler hook.
7203
7204 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
7207         NEWOBJ calls on valuetypes.
7208
7209         * iltests.il.in: Add new test.
7210
7211         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
7212
7213 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7214
7215         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
7216         is no longer needed.
7217
7218         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
7219         non register sized integer arguments.
7220         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
7221         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
7222         emit_memcpy2 ().
7223
7224         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
7225         CEE_MONO_RETOBJ.
7226         
7227         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
7228         two a binop with different sized arguments is emitted.
7229
7230         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
7231         instruction in the ins==NULL case.
7232
7233 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
7236
7237         * mini-x86.c: Fix osx build.
7238
7239         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
7240         opcodes as well.
7241
7242         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
7243         instruction for non int sized variables.
7244
7245         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
7246         implementation.
7247
7248 2008-07-23  Robert Jordan  <robertj@gmx.net>
7249
7250         * method-to-ir.c: Fix MSVC build.
7251
7252 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7253
7254         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
7255         a non int sized type, widen it to an int since newer versions of gcc seem to
7256         generate code which needs this.
7257
7258         * ssa2.c abcremoval2.c: Fix warnings.
7259
7260         * *: Merge the Linear IR branch.
7261
7262         The original branch is at trunk/branches/vargaz/mini-linear-il, and
7263         the ChangeLog file there describes all the changes done over the years. 
7264         Further documentation can be found at www.mono-project.com/Linear_IL.
7265
7266 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7267
7268         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7269           The float param registers and other param registers must be the 
7270           same index on Windows x64.
7271
7272         Contributed under MIT/X11 license.
7273
7274 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
7275
7276         * mini.c: Make the previous fix GC safe.
7277
7278 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
7279
7280         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
7281
7282 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7283
7284         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
7285           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
7286           ArgValuetypeAddrInIReg instead.
7287
7288         Contributed under MIT/X11 license.
7289
7290 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
7291
7292         * mini-codegen.c (get_register_spilling): Fix a warning.
7293
7294 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
7295
7296         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
7297         for types which the initialization fails. Raises the provided exception
7298         at the right stop after cleanup.
7299
7300 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * aot-compiler.c: Free most of the memory allocated during compilation.
7303
7304         * mini.c (mini_parse_debug_options): Fix a leak.
7305         
7306         * mini.c (mini_method_compile): Don't add the method to the jit info tables
7307         during aot compilation.
7308
7309 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
7312         it has too much register pressure.
7313
7314 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7315
7316         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
7317
7318 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7321         on x86.
7322
7323         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7324         on amd64 similar to the way it is done on arm.
7325
7326         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7327
7328         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
7329         consistency, normalize error messages, avoid loading aot-only modules in
7330         normal mode.
7331
7332         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
7333         for consistency.
7334
7335         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
7336
7337 2008-07-11  Martin Baulig  <martin@ximian.com>
7338
7339         * debug-debugger.h
7340         (MonoDebuggerInfo): Add `interruption_request'.
7341
7342 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * aot-compiler.c (emit_plt): Remove some dead code.
7345
7346         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
7347
7348         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
7349         return the plt info offset belonging to a given plt entry.
7350
7351         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
7352         mono_aot_get_plt_info_offset.
7353         
7354         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7355         similar to the amd64 code by makeing jumps through a separate jump table 
7356         instead of embedding the jump addresses into the code.
7357
7358 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7359
7360         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7361         method.
7362
7363 2008-07-10  Martin Baulig  <martin@ximian.com>
7364
7365         * mini.c (mini_method_compile): Disable generics sharing when
7366         running in the debugger.
7367
7368 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7369
7370         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7371
7372         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7373         the local register allocator from running out of registers on x86 when 
7374         using aot.
7375
7376 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7377
7378         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7379         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7380         C4146.
7381
7382         Contributed under MIT/X11 license.
7383
7384 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7385
7386         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7387         speed up the assembler.
7388
7389 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7390
7391         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7392         support.
7393
7394         * mini.c: Move the soft float handling macros a bit earlier, add 
7395         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7396         place.
7397
7398         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7399
7400         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7401         read-only to help catch code allocation requests.
7402         
7403         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7404         and turn it off when using --aot-only or when compiling with --aot=full.
7405
7406         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7407         jump table for switches from the normal domain mempool, not the code
7408         manager.
7409
7410         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7411         unbox trampoline which handles aot-only mode too.
7412
7413         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7414         an AOTed unbox trampoline.
7415
7416         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
7417
7418 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7419
7420         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
7421         ""
7422
7423         Contributed under MIT/X11 license.
7424
7425 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7426
7427         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
7428           the unwind information for the method at the end of the allocated block.
7429           
7430         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
7431           MonoCompileArch to hold the unwind info for SEH on Winx64
7432         
7433         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
7434           frame pointer info for the method being compiled.
7435           
7436         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
7437           the call to mono_exception_from_token.
7438           
7439         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
7440           storing the method prolog information in a format that the Winx64 SEH can understand.  This
7441           information is stored a the end of the method block because it is all 32-bit offset based.
7442
7443         Contributed under MIT/X11 license.
7444
7445 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7446
7447         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
7448
7449         * wapihandles.c: Fix warnings.
7450
7451         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
7452         mode.
7453
7454         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
7455         mono_jit_compile_method in aot-only mode since that calls the type 
7456         initializer.
7457         
7458         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
7459         get_delegate_invoke_impl in aot-only mode.
7460
7461         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
7462
7463 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
7466
7467         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
7468         is on by default.
7469
7470         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
7471
7472         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
7473         init trampoline from the AOT file as well.
7474
7475         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
7476         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
7477         code.
7478
7479         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
7480         mono_init.
7481
7482         * exceptions-amd64.c: Add _full variants for the remaining exception code
7483         creation functions as well, allow emission of relocatable code, remove
7484         caching since that is now done by the caller.
7485
7486         * mini-exceptions.c: Add _full variants for the remaining exception code
7487         creation functions as well, add aot-only support.
7488
7489         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
7490         if we can determine a proper token for them.
7491         (add_wrappers): Add a few more wrappers.
7492         (emit_method_code): Remove some dead code.
7493         (emit_trampolines): Emit exception code too.
7494
7495         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
7496
7497         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
7498         mono_array_new_va which avoids varargs.
7499
7500         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
7501
7502         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
7503         mono_arch_create_specific_trampoline () in all places.
7504
7505         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
7506         a bit so it can be used for other things as well.
7507         
7508         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
7509         on demand as well.
7510
7511         * exceptions-amd64.c: Rename the caching from the exception code creation
7512         functions, it is done by the caller instead.
7513         
7514         * exceptions-amd64.c: Change the signature of the exception code creation 
7515         functions to allow the creation of relocatable code later.
7516
7517         * mini-exceptions.c: Add a set of functions to query the various 
7518         runtime-generated exception functions.
7519
7520         * mini.c mini-exceptions.c: Use the newly added functions instead of the
7521         mono_arch_.. () functions.
7522         
7523 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7524
7525         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
7526
7527         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
7528
7529         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
7530         (mini_get_vtable_trampoline): Ditto.
7531
7532         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
7533         code in the AOT case by returning the code size and a list of relocations to
7534         the caller.
7535
7536         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
7537
7538 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
7539
7540         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
7541           clean the stack.
7542
7543         Contributed under MIT/X11 license.
7544
7545 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7546
7547         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
7548         so the buffer size can be computed correctly. Fixes #404735.
7549
7550         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
7551         normally as cfg->debug_info is already freed.
7552
7553 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
7554
7555         * mini-amd64.c: For calls returning vtypes in registers, don't store
7556         the return address on the stack, instead allocate a separate local for
7557         it. Fixes #404729.
7558
7559 2008-07-05  Mark Probst  <mark.probst@gmail.com>
7560
7561         * mini-trampolines.c, mini.h: Add an argument to
7562         mono_create_jit_trampoline_in_domain() for turning off the adding
7563         of the sync wrapper.
7564
7565         * mini.c: Use the JIT trampoline without sync instead of
7566         ldftn_nosync in static RGCTX invoke wrappers so that the call can
7567         be patched.
7568
7569 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7570
7571         * driver.c: Turn on GSHARED optimization by default.
7572
7573 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
7576         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
7577
7578         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
7579         create a variant of the generic trampoline code callable from AOTed trampolines.
7580
7581         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
7582         trampoline code callable from AOTed trampolines.
7583
7584         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
7585
7586 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7587
7588         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
7589         pass-through manner.
7590
7591         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
7592         and don't fail sharing for them anymore.
7593
7594         * mini-exceptions.c: Handle exceptions in shared generic methods.
7595
7596         * generic-sharing.c: When checking the context of a generic
7597         method, also check its class's context.  Don't treat wrappers as
7598         sharable.
7599
7600         * mini-trampolines.c: Some code factored out to
7601         metadata/generic-sharing.c.  Handle the MRGCTX case.
7602
7603         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
7604         we must deal with the method being of another instantiation of the
7605         class.  Add static rgctx invoke wrappers to generic methods.
7606
7607 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7608
7609         * mini.c: Provide all jit infos of generic shared methods with a
7610         generic jit info.
7611
7612         * mini-exceptions.c: Handle the new situation that a generic info
7613         might be available, but not info about the this/vtable/mrgctx
7614         variable.
7615
7616 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7617
7618         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7619         generic methods.
7620
7621 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7622
7623         * dominators.c (check_dominance_frontier): Fix a warning.
7624
7625         * mini.h: Add some missing prototypes.
7626
7627         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7628
7629         * driver.c (mono_jit_init_version): Correct the comments since the first
7630         argument should be the name of the root domain, not a filename.
7631
7632         * aot-runtime.c (make_writable): Error out if this is called while running
7633         with --aot-only.
7634         (load_aot_module): Ditto.
7635
7636         * aot-compiler.c: Really fix the computation of method indexes.
7637
7638         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7639         optimizations as this is no longer called frequently.
7640
7641         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7642         method and the invoke impl code and pass it to the delegate trampoline instead of
7643         just the delegate class.
7644
7645 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7646
7647         * aot-compiler.c: Fixup the computation of method indexes.
7648         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7649         the method builder infrastructure.
7650
7651         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7652         has no header.
7653
7654         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7655         mode, load the method right away instead of creating a trampoline.
7656
7657         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7658
7659         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7660         some checks a bit.
7661
7662 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7663
7664         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7665         (mono_aot_load_method): Use method_index instead of method->token.
7666
7667         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7668         can handle icalls etc. properly.
7669
7670         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7671
7672         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7673
7674         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7675         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7676         JIT_ICALL_ADDR patch type.
7677
7678         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7679
7680         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7681         request flag.
7682         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7683
7684         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7685
7686 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7687
7688         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7689         domain->jit_code_hash.
7690
7691 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7692
7693         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7694
7695 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7696
7697         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7698         get_this_arg_from_call, let it compute it when needed.
7699
7700         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7701         gsctx from code only when needed.
7702
7703         * mini-trampolines.c (get_generic_context): Rename this to 
7704         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7705         it can be called by the arch backends.
7706
7707         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7708
7709 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7710
7711         * driver.c (mono_main): Add experimental --aot-only command line option.
7712
7713         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7714         set.
7715
7716 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7717
7718         * driver.c (DllMain): Remove mono_module_handle.
7719
7720         Contributed under MIT/X11 license.
7721
7722 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7723
7724         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7725         for emitting methods which are not in the source assembly. Detect and report
7726         failure of assembling+linking.
7727         
7728         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7729
7730         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7731
7732 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7733
7734         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7735
7736 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7737
7738         * mini.h: Remove some obsolete prototypes.
7739
7740         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7741
7742 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7743
7744         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7745         supported by Visual Studio, so use alloca().
7746
7747 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7748
7749         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7750         Fixes #402585.
7751
7752 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7753
7754         * mini.c: Fail sharing of a generic method if it contains an open
7755         catch clause (because we don't pass MRGCTXs yet).
7756
7757 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7758
7759         * mini.c: When compiling a method with generic sharing, insert the
7760         method instantiated with an all-Object generic context into the
7761         jit info table, instead of the context of the first instantiation
7762         of the method we happen to compile.
7763
7764 2008-06-18  Martin Baulig  <martin@ximian.com>
7765
7766         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7767         `major_version' and `minor_version'.
7768
7769 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7770
7771         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7772         mono_method_is_generic_sharable_impl() takes an additional
7773         argument specifying whether to treat type variables as reference
7774         types.
7775
7776 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7777
7778         * mini.h: Removed obsolete prototypes.
7779
7780 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7781
7782         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7783         already handle them.
7784
7785 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7786
7787         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7788         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7789         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7790         tramp-x86.c: Added a MonoGenericContext* argument to
7791         mono_arch_get_unbox_trampoline() so that it can call other
7792         functions which require it.
7793
7794 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7795
7796         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7797         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7798         mono_arch_get_this_arg_from_call() takes a
7799         MonoGenericSharingContext* as well.
7800
7801 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7802
7803         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7804         implement generic sharing of unbox.
7805
7806 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7807
7808         * mini.c: Don't compute the vtable to determine whether a field is
7809         special static, because it might not work for open types.
7810
7811 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7812
7813         * mini.c: Removed the unused token_type and token_source arguments
7814         from get_runtime_generic_context_ptr().
7815
7816 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7817
7818         * mini.c (ADD_BINOP): fix the build
7819
7820 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7821
7822         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7823         a widening op.
7824
7825 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7826
7827         * mini.h: Removed class relations enum that's not used anymore.
7828
7829 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7830
7831         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7832
7833         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7834         the lazy fetch trampoline access code.
7835
7836 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7837
7838         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7839
7840 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7841
7842         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7843
7844         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7845
7846         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7847
7848 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7851         intrinsics.
7852
7853         * mini-ops.h: Add MIN/MAX_UN opcodes.
7854
7855         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7856         intrinsics.
7857
7858         * basic-math.cs: Add more min/max tests.
7859
7860         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7861
7862 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7863
7864         * mini.c: Small fix in the prologue of emit_castclass.
7865
7866 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7869
7870         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7871         do not work even for unsigned types. Fixes #400014.
7872
7873         * basic-math.cs: Add regression tests for unsigned Min/Max.
7874
7875 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7876
7877         * mini.c: Added additional context_used argument to several
7878         functions, which will be needed for sharing generic methods.  Use
7879         GET_RGCTX macro wherever appropriate.  Declare only one
7880         context_used in mono_method_to_ir().
7881
7882 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7883
7884         * mini.c, generic-sharing.c: Removed generic class relations.
7885
7886         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7887         functions due to MRGCTX changes.
7888
7889 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7890
7891         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7892         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7893         with calculated IMT.
7894
7895         * mini.c: Generic sharing of calls via generic interfaces.
7896
7897         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7898         generic method with non-constant MonoGenericContext*.  Instead,
7899         the context is taken out of the method itself.
7900
7901 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7902
7903         * mini.c: Generic sharing of ldvirtftn.
7904
7905 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7906
7907         * mini.c: Generic sharing of ldftn.
7908
7909 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7910
7911         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7912
7913 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7914
7915         * mini.c: Generic sharing of the special case of ldtoken followed
7916         by a call to GetTypeFromHandle.
7917
7918 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7919
7920         * mini.c: Generic sharing of box for nullable types.
7921
7922 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7925         are passed on the stack. Fixes #324807.
7926
7927 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7928
7929         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7930         for the ArgValuetypeAddrInIReg case.
7931
7932         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7933         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7934
7935         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7936         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7937         local variable and pass the local variable by reference to the called method.
7938           
7939         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7940         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7941
7942         Contributed under MIT/X11 license.
7943
7944 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7945
7946         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7947
7948         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7949         everything.
7950
7951 2008-06-10  Martin Baulig  <martin@ximian.com>
7952
7953         * debug-mini.c
7954         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7955
7956 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7957
7958         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7959         possible error when no arguments are passed.
7960
7961         Contributed under MIT/X11 license.
7962
7963 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7966         where the file name is NULL.
7967
7968 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7969
7970         * mini.c: Fix s390 build.
7971
7972 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7973
7974         * trace.c (mono_trace_parse_options): Fix warnings.
7975
7976         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7977
7978 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7979
7980         * mini.c (remove_block_if_useless): Avoid printing the method name.
7981         
7982         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7983         MONO_INST_NEW.
7984
7985         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7986         LMF. Not yet used.
7987
7988         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7989         translated code after it has been patched.
7990
7991 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7992
7993         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7994         avoid problems during code patching on SMP systems.
7995         (emit_call): Avoid adding a patch info which is already added by 
7996         emit_call_body.
7997         (mono_arch_emit_exceptions): Ditto.
7998
7999 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
8000
8001         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
8002         MONO_TYPE_ISSTRUCT already checks for it.
8003
8004 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
8005
8006         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
8007           structs with floats on Winx64 the float registers are not used.  
8008           The integer registers are always used..
8009         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
8010           only one register will be used and only if the size of the struct 
8011           is 1,2,4, or 8 bytes.
8012
8013         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
8014           to work for Winx64.
8015
8016         Contributed under MIT/X11 license.
8017
8018 2008-06-05  Martin Baulig  <martin@ximian.com>
8019
8020         * debug-debugger.c (debugger_lookup_class): Also call
8021         mono_class_setup_methods() here; we're only called from RTI.
8022
8023 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
8024
8025         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
8026         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
8027         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
8028         Post-process object files and add dtrace-generated object, if necessary.
8029
8030         Contributed under MIT/X11 license.
8031
8032 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8033
8034         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
8035         element class.
8036
8037         * mini.c: Generic sharing for unbox.any and castclass.
8038
8039 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8040
8041         * mini.c: Ignore tailcall prefix in shared generic code and when
8042         doing calls which require a vtable/rgctx argument.
8043
8044 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8045
8046         * mini.c: Don't free the JIT info.
8047
8048         * driver.c: Changes in the JIT info table testing code.
8049
8050 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8051
8052         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
8053         interruption. Fix some warnings.
8054
8055         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
8056         interruption_checkpoint.
8057
8058 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
8059
8060         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
8061         from embedding applications.
8062
8063 2008-06-02  William Holmes  <billholmes54@gmail.com>
8064
8065         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
8066           reserving 32 bytes on the stack when making calls. 
8067
8068         Contributed under MIT/X11 license.
8069
8070 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
8071
8072         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
8073         the linear IL branch.
8074
8075         * driver.c: Print out more information for --version on arm.
8076
8077 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
8078
8079         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
8080         bb_exit instead, since out of line bblocks might not actually be emitted
8081         out-of-line.
8082         
8083         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
8084         maximum epilog size for out of line bblocks if tracing is enabled.
8085
8086         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
8087
8088 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
8089
8090         * arrays.cs: Regression tests for allocating arrays with negative sizes.
8091
8092 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
8093
8094         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
8095         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
8096         opcodes.
8097
8098 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
8101         the 'value' to store is a constant.
8102
8103         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
8104
8105         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
8106         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
8107
8108 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
8109
8110         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
8111         for accessing method->generic_container.
8112
8113 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
8114
8115         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
8116         
8117         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
8118
8119         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
8120
8121         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
8122         fails.
8123
8124 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
8125
8126         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
8127
8128         * mini.c: Handle the case when mono_class_vtable () fails.
8129
8130 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
8131         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
8132         the stat profiler.
8133
8134 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8135
8136         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
8137         together with domain sharing.
8138
8139 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8140
8141         * mini.c: Treat callvirts to final methods like non-virtual calls
8142         when doing generic sharing, i.e. look them up in the runtime
8143         generic context.
8144
8145 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8146
8147         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
8148         with computed types (for generic sharing).
8149
8150         * mini.c: Generic sharing for mkrefany and refanyval.
8151
8152 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
8153
8154         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
8155         possible.
8156
8157         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
8158         the generic sharing code.
8159         
8160         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
8161         when needed.
8162
8163 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8164
8165         * mini.h: Remove the declaration of mono_aot_init_vtable ().
8166
8167 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
8168
8169         * driver.c: updated copyright date
8170
8171 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8172
8173         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
8174         needed.
8175
8176 2008-05-19  Martin Baulig  <martin@ximian.com>
8177
8178         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
8179         pointing to the new `_mono_debug_using_mono_debugger' variable.
8180
8181         * driver.c
8182         (mono_main): Check mono_debug_using_mono_debugger() rather than
8183         the `MONO_INSIDE_MDB' environment variable to check whether we're
8184         inside the debugger.
8185
8186 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
8187
8188         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
8189         argument.
8190
8191 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
8192
8193         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
8194
8195         * mini.c: Added mini_assembly_can_skip_verification. This
8196         function checks if the assembly requested to skip verification. 
8197         Fixes part of #387274.
8198
8199 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
8200
8201         * mini.c (mini_get_method): Disable the check for open generic classes when
8202         using generic sharing.
8203
8204         * generics.cs: Add a test for #387034.
8205
8206         * mini.c (mini_get_method): Check whenever the method class is an open generic
8207         type, and return NULL in that case, causing a verification error. Fixes
8208         #384123.
8209
8210 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8211
8212         * driver.c (mono_main): Revert r102623. The right
8213         thing to do is to enable the verifier under verifiable
8214         unless a --security flag was passed.
8215
8216         We need this non-trivial behavior for --verify-all otherwise
8217         mcs-compileall won't be able to use it. As it needs everything to
8218         be verified under validil.
8219
8220 2008-05-06  Martin Baulig  <martin@ximian.com>
8221
8222         Fix #383749.
8223
8224         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
8225         (mono_debugger_thread_cleanup): Likewise.
8226         (mono_debugger_extended_notification): Likewise.
8227
8228 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8229
8230         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
8231         against both inflated and non-inflated methods. We need to check against the
8232         generic definition for cases where the instantiated method is not visible.
8233         We need to check against the inflated types for cases where the instantiation
8234         changes any super type. This fixes #382986.
8235
8236         Note that this doesn't need to be applied to other parts of mono_method_to_ir
8237         that check for visibiliy as generic params only appears as the type subject
8238         of tokens on call opcodes. Field manipulation and ldftn must always
8239         target an exact type.
8240
8241 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8242
8243         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
8244         if no related --security flag is passed.
8245
8246 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8247
8248         * mini-arch.h: Prepare support for ppc64.
8249
8250         Contributed under MIT/X11 license.
8251
8252 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8253
8254         * aot-runtime.c: Prepare support for ppc64.
8255
8256         Contributed under MIT/X11 license.
8257
8258 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8259
8260         * mini-ops.h: Prepare support for ppc64.
8261
8262         Contributed under MIT/X11 license.
8263
8264 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
8265
8266         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
8267
8268         Contributed under MIT/X11 license.
8269
8270 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
8273         assemblies, since aot_name is not a full path, causing us to load MS.NET 
8274         assemblies on windows.
8275
8276 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
8277
8278         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
8279         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
8280         * main.c: Use UTF-8 encoded command line instead of Windows default code
8281         page on Windows to support Unicode.
8282         * driver.c (DllMain): New function for mixed-mode assembly support.
8283         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
8284         export __stdcall functions without decoration.
8285
8286         Contributed under MIT/X11 license.
8287
8288 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8289
8290         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
8291         saving it very early.
8292
8293 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8294
8295         * mini.h, mini.c: Lots of code for accessing the old RGCTX
8296         deleted.  The only way to access the new RGCTX is via the
8297         trampline.
8298
8299         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
8300         vtable instead of the RGCTX to static methods.
8301
8302         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
8303         accessing the new RGCTX.
8304
8305         * generic-sharing.c: There is no separation between self, type
8306         arguments and other types in the RGCTX anymore.
8307
8308 2008-04-25  Jonathan Chambers <joncham@gmail.com>
8309
8310         * mini-amd64.c (add_general): Remove previous stack adjustment.
8311         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
8312         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
8313         for 32 bytes of stack space reserved for all calls.
8314         
8315         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
8316         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
8317         adjustment.
8318         
8319         Code contributed under MIT/X11 license.
8320
8321 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
8322
8323         * mini.c (mini_method_verify): Only verify non-inflated methods, check
8324         against the root definition, peeling out method and type instantiations.
8325         Cache verify success results, code that fails verification is still
8326         checked multiple times.
8327
8328 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8329
8330         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
8331
8332 2008-04-23  Jonathan Chambers <joncham@gmail.com>
8333
8334         * mini-amd64.c (add_general): Always increment stack on Win64.
8335         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
8336         on Win64.
8337         
8338         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
8339         stack based argument handling on Win64.
8340         
8341         Code contributed under MIT/X11 license.
8342
8343 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
8344
8345         * Makefile.am (version.h): Add support for git-svn.
8346
8347 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8348
8349         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
8350         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
8351         avoiding allocations and libc functions which might deadlock.
8352         
8353         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8354         'no-gdb-backtrace' option is set.
8355
8356         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8357
8358         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8359
8360 2008-04-21  Martin Baulig  <martin@ximian.com>
8361
8362         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8363         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8364
8365 2008-04-21  Martin Baulig  <martin@ximian.com>
8366
8367         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8368         `thread_vtable', `event_handler_ptr' and `event_handler'.
8369
8370 2008-04-21  Martin Baulig  <martin@ximian.com>
8371
8372         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8373         allows delayed initialization of the `executable_code_buffer' when
8374         attaching.
8375
8376 2008-04-21  Martin Baulig  <martin@ximian.com>
8377
8378         * mini.h (mono_debugger_create_notification_function): Removed.
8379         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8380
8381         * mdb-debug-info64.s
8382         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8383
8384         * mdb-debug-info32.s
8385         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8386
8387         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8388         currently only works on x86 and x86_64, so don't create it on ppc.
8389
8390 2008-04-21  Martin Baulig  <martin@ximian.com>
8391
8392         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8393
8394         * mini.c
8395         (mini_method_compile): In the fp elimination check, check
8396         `debug_options.mdb_optimizations' in addition to
8397         mono_debug_using_mono_debugger().       
8398
8399         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8400         disable some JIT optimizations which are only disabled when
8401         running inside the debugger.
8402         Added `--help-debug' option to describe the debugging options.
8403         (parse_debug_options): New static function to parse the `--debug'
8404         options, so we can easily add more stuff in future.
8405
8406 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8407
8408         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8409         the method has no body.
8410
8411 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8412
8413         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8414         assembly is not allowed in MSVC 64-bit compiler. 
8415         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
8416         as we get floating point exceptions everywhere.
8417         
8418         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
8419         correctly align arguments for call to throw_exception.
8420         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
8421         
8422         Code contributed under MIT/X11 license.
8423
8424 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
8425
8426         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
8427
8428 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
8429
8430         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
8431
8432         * mini-amd64.c (NEW_INS): Set cil_code.
8433
8434         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
8435         from mini-amd64.c so all debugger related logic is in one place.
8436
8437         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
8438         later won't have a random ip assigned to them.
8439
8440 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
8441
8442         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
8443         the arch specific function initializes code_size.
8444         (mono_create_delegate_trampoline): Ditto.
8445
8446         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
8447         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
8448         platforms.
8449
8450         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
8451         running under the debugger.
8452
8453         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
8454         debugger.
8455
8456         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
8457         debugger. Also move the disabling of optimizations here from driver.c.
8458         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
8459         debugger.
8460
8461         * mini.h (MonoCompile): Add a few new flags.
8462
8463 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
8464
8465         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
8466         so the cil_code field of created MonoInst's is properly set.
8467         (mini_select_instructions): Ditto.
8468
8469         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
8470         (MONO_INST_NEW_CALL): Ditto.
8471
8472         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
8473         in many places so the ins->cil_code field is properly initialized.
8474
8475         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
8476         place.
8477
8478 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
8479
8480         * mini.c (mini_method_compile): Print a different message when compiling a 
8481         shared method.
8482         
8483         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
8484         > 1.
8485
8486 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8487
8488         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
8489         SSE2 instructions.
8490
8491         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
8492         
8493 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8494
8495         * mini.c (handle_stack_args): Make this return void since its return value was
8496         never used. Also set cfg->unverifiable for invalid IL instead of calling
8497         G_BREAKPOINT ().
8498
8499 2008-04-10  Mark Probst  <mark.probst@gmail.com>
8500
8501         * mini.c: Make sure "this" is live in catch clauses with type
8502         variables in shared generic code.
8503
8504 2008-04-08  Mark Probst  <mark.probst@gmail.com>
8505
8506         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
8507         generic_class_is_reference_type() to ensure the proper behaviour
8508         when sharing generic code and the type in question is a type
8509         argument.
8510
8511 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8512
8513         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
8514         race conditions when printing thread dumps. Fixes #377738.
8515
8516 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
8517         
8518         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
8519         shows up when both MonoInst arguments can cause aliasig.
8520         There is likely no way in the current JIT to trigger this problem, but
8521         it showed up in the development of generics sharing, when in a new
8522         opcode both args of an OP_GROUP can be aliases (addresses of a local).
8523         When the generics sharing code will be committed, its tests will be
8524         valid also for this bug.
8525
8526 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8527
8528         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
8529         PATCH_INFO_METHOD.
8530
8531         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
8532         NULL.
8533
8534 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
8535
8536         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
8537         use a more detailed exception message for InvalidCastException.
8538
8539         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
8540
8541         * driver.c (mono_main): Add --debug=casts option to turn on better 
8542         InvalidCastException message details.
8543
8544         * mini.c (mini_get_debug_options): New helper function to return the address of
8545         the debug_options variable.
8546
8547         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
8548         the jit_tls TLS variable.
8549
8550         * mini.c (mono_jit_tls): New TLS variable.
8551
8552         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
8553         option is used.
8554
8555 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
8556
8557         * mini.h: Removed verifer related stuff. This code was moved to verify.c
8558
8559         * mini.c: Removed verifer related stuff, code moved to verify.c.
8560
8561         * driver.c: Using code from verify.c instead of mini.c.
8562
8563 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
8564
8565         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
8566         longer valid.
8567
8568 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
8569
8570         * mini.c (check_for_method_verify): Enabling verification of
8571         corlib if mono_verify_all is set. Bugs in the verifier preventing that
8572         have been fixed.
8573
8574 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
8575
8576         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
8577         caller saved registers as well.
8578         
8579         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
8580         saved registers as well.
8581
8582 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
8583
8584         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
8585
8586         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
8587         code.
8588
8589 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
8590
8591         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
8592         to get_call_info.
8593         (get_call_info): Take a gsctx argument instead of 'cfg'.
8594
8595 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
8596
8597         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
8598         mono_verify_all is set.
8599
8600         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
8601
8602         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
8603
8604 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8605
8606         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
8607         an exception.
8608
8609         * driver.c mini.c mini.h: Add a --verify-all development option to test the
8610         verifier and the code generated by the compiler.
8611
8612 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8613
8614         * mini.c: Generic sharing of the non-nullable case of the box
8615         instruction.
8616
8617 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * inssel.brg: Fix the build.
8620
8621         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8622
8623 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8624
8625         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8626         Array:Address. Fixes #372410.
8627
8628         * iltests.il.in: New tests for readonly prefix.
8629
8630 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8631
8632         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8633         mini-trampolines.c.
8634
8635         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8636         mini-exceptions.c.
8637
8638         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8639         
8640         * mini.c (mono_decompose_op_imm): New helper function.
8641
8642         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8643         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8644         return value.
8645
8646         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8647         mono_arch_output_basic_block. Fix warnings.
8648
8649         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8650         for now.
8651
8652 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8655         since the extra frame is now detected automatically inside the loop.
8656
8657         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8658         opts which are now in mono_peephole_ins ().
8659         
8660         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8661
8662         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8663         frames and skip duplicate managed-to-native frames. Fixes #367665.
8664
8665         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8666         opts which are now in mono_peephole_ins ().
8667         (mono_arch_peephole_pass_2): Ditto.
8668
8669         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8670
8671         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8672         arch independent peephole optimizations.
8673
8674         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8675         opts which are now in mono_peephole_ins ().
8676
8677         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8678         
8679         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8680
8681         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8682         pattern.
8683
8684         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8685         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8686         opcode. 
8687
8688 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8691         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8692         return value.
8693
8694         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8695         mono_arch_output_basic_block. Fix warnings.
8696
8697 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8698
8699         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8700         conv.ovf.u.un.
8701
8702 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8705         conv.ovf.u.un.
8706
8707         * iltests.il: Add new tests.
8708
8709 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8710
8711         * mini.c: Removed Windows version macros.
8712
8713 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8714
8715         * generic-sharing.c: Put reflection types in the extensible part
8716         of the runtime generic context.
8717
8718         * mini.c: Generic sharing of the GetTypeHandle special case of the
8719         ldtoken instruction.
8720
8721 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8722
8723         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8724
8725         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8726         
8727         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8728         consistency with the other version on the linear IR branch.
8729
8730         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8731
8732         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8733
8734         * iltests.il.in: Add new tests.
8735
8736 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8737
8738         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8739
8740         * iltests.il.in: Add new tests.
8741
8742 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8743
8744         * mini.c: Two variables with the same name were declared in
8745         nesting contexts and one wasn't initialized.  Fixed.
8746
8747 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8748
8749         * mini.c: Generic sharing of the initobj instruction.
8750
8751 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8752
8753         * mini.c: make the test to optimize ldtoken from typeof() more
8754         precise.
8755
8756 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8757
8758         * mini.c: Generic sharing of the initobj instruction for reference
8759         types.
8760
8761 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8762
8763         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8764         the mono_breakpoint_clean_code() code to perform bound checks.
8765
8766 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8767
8768         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8769         mono_arch_patch_callsite() to include the start of the managed method
8770         to be able to perform bound checks.
8771
8772 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8773
8774         * mini.c: Generic sharing for the isinst instruction.
8775
8776 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8777
8778         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8779         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8780         with the runtime generic context argument.
8781
8782         * mini.c: Share calls to several types of unsharable methods by
8783         putting the address of the method code in the runtime generic
8784         context and doing an indirect call.
8785
8786         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8787         to switches.
8788
8789 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8790
8791         * generic-sharing.c: Change due to a change in the runtime genric
8792         context API.
8793
8794 2008-03-15  Martin Baulig  <martin@ximian.com>
8795
8796         * tramp-x86.c
8797         (mono_arch_nullify_class_init_trampoline): Add call to
8798         mono_breakpoint_clean_code() to make things work when running
8799         inside the debugger.
8800
8801         * tramp-amd64.c
8802         (mono_arch_nullify_class_init_trampoline): Add call to
8803         mono_breakpoint_clean_code() to make things work when running
8804         inside the debugger.
8805
8806 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8807
8808         * inssel-long.brg (reg): Fix 64 bit build.
8809
8810 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8811
8812         * mini.c, mini.h: Share static generic code by passing it an
8813         implicit argument pointing to the runtime generic context.
8814
8815         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8816         inssel-long32-mips.brg: New opcodes for calling shared static,
8817         which need to be passed the runtime generic context.
8818
8819         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8820         argument on the stack in the prologue if needed.  New function for
8821         finding the runtime generic context argument from the registers
8822         saved by the trampoline.
8823
8824         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8825         runtime generic context argument.
8826
8827         * tramp-amd64.c: Also restore the register used for the runtime
8828         generic context argument.
8829
8830         * mini-trampoline.c: Resolve shared static calls by consulting the
8831         runtime generic context via the new argument.
8832
8833         * generic-sharing.c: Add an argument to sharability-checking
8834         functions that specifies whether type variables should be treated
8835         as sharable type arguments.
8836
8837         * inssel-x86.brg: Removed a superfluous, buggy rule.
8838
8839         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8840         to switches.
8841
8842 2008-03-14  Martin Baulig  <martin@ximian.com>
8843
8844         * debug-debugger.c (main_thread_handler): Call
8845         mono_runtime_run_main() without sending any notifications.
8846
8847         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8848
8849 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8850
8851         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8852
8853 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8854
8855         * tramp-x86.c: Fixed register restore offsets in the trampoline
8856         code for ECX and EDX.
8857
8858 2008-03-12  Geoff Norton  <gnorton@novell.com>
8859
8860         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8861         different ucontext_t implementations.
8862         * exceptions-arm.c: Use the above defines to get exceptions working on 
8863         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8864         * mini-arm.c: Implement iPhone icache support (based on a patch by
8865         Luke Howard lukeh@padl.com)
8866
8867 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8868
8869         * mini.c: Enable generic sharing of calls to non-static
8870         non-interface non-generic non-value-type methods.
8871
8872         * mini-trampolines.c: Resolve calls from shared generic code.
8873
8874 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8877
8878         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8879
8880 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8881
8882         * mini.c: some fixes for the AOT compiler.
8883
8884 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8885
8886         * cpu-amd64.md: Add clob:1 to some float opcodes.
8887
8888 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8889
8890         * mini.h: Added MiniVerifierMode enumeration.
8891
8892         * mini.c: Added mini_verifier_set_mode to control
8893         the usage of the new verifier.
8894
8895         * mini.c (mono_method): Integrated the new verifier.
8896
8897         * driver.c: Extended --security option with validil and
8898         verifiable options to activate the new verifier.
8899
8900 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8901
8902         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8903         optimization to ctors taking 0 or 2 arguments too.
8904
8905         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8906         a bit.
8907
8908         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8909
8910         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8911
8912 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8913
8914         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8915         non-aot case as well.
8916
8917         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8918
8919         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8920         changes.
8921
8922         * aot-compiler.c (encode_patch): Ditto.
8923
8924         * mini.h (G_MININT32): Fix the definition of this.
8925
8926 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8927
8928         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8929
8930         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8931
8932 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8933
8934         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8935         methods returning vtypes in registers.
8936         (mono_arch_allocate_vars): Ditto.
8937
8938         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8939
8940         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8941
8942         * generics.cs: Add a test from the linear IR branch.
8943
8944         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8945
8946         * mini.c (inline_method): Cache failed inline attempts.
8947
8948 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8949
8950         * mini.c: For shared methods of generic classes put the location
8951         of "this" into the MonoGenericJitInfo.
8952
8953         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8954         register out of a MonoContext by register number.  Add the generic
8955         sharing context as an argument to mono_arch_find_this_argument().
8956
8957         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8958         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8959         for new arch function.
8960
8961         * mini-exception.c: Handle open exception clauses in shared
8962         generic code.
8963
8964         * mini-trampolines.c: Supply additional argument to
8965         mono_arch_find_this_argument().
8966
8967 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * Makefile.am (regtests): Run the bench.exe tests last.
8970
8971 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8972
8973         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8974         a bit.
8975
8976 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8979         with MS.
8980
8981         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8982         
8983         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8984
8985         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8986         whose class has no cctor.
8987
8988         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8989
8990 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8991
8992         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8993         unverified.
8994
8995 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8996
8997         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8998         to be in sync with the code on the linear IR branch.
8999
9000         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
9001
9002         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
9003
9004 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
9005
9006         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
9007
9008         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
9009
9010         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
9011
9012         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
9013
9014         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
9015         
9016         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
9017         body.
9018
9019 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
9020
9021         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
9022         OP_LOADR4_MEMBASE emission.
9023
9024         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
9025         (mono_spillvar_offset_float): Ditto.
9026
9027         * mini-mips.c (mono_arch_emit_prolog): Ditto.
9028
9029         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
9030         emission.
9031
9032         * basic-long.cs: Add regression tests for them.
9033
9034         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
9035         use.
9036         (mono_arch_allocate_vars): Fix representation of single-precision float
9037         argument.
9038         (mono_arch_output_basic_block): Ditto.
9039
9040         * inssel-mips.brg: Ditto, remove duplicate items.
9041
9042         * mini-mips.c (emit_load_volatile_arguments): New function to handle
9043         arguments of tail calls as on other platforms.
9044         (mono_arch_output_basic_block): Handle tail calls.
9045
9046         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
9047         register.
9048
9049         * objects.cs (test_5_pass_static_struct): Add test for it.
9050
9051         Contributed under MIT/X11 license.
9052
9053 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
9054
9055         * Makefile.am: Use gmcs for compiling the regression tests.
9056
9057         * *.2.cs *.2.il: Rename to *.cs and *.il.
9058
9059 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
9060
9061         * regalloc.h: Make the vassign array smaller.
9062
9063         * mini.c (mini_method_compile): Remove an unused field in cfg.
9064
9065         * mini-codegen.c: Add a bunch of micro optimizations.
9066
9067 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
9068
9069         * regalloc.h: Remove some unused fields.
9070
9071 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
9074
9075         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
9076
9077 2008-02-22  Mark Probst  <mark.probst@gmail.com>
9078
9079         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
9080
9081         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
9082         trampoline: Fetch an entry from the runtime generic context.  If
9083         it's NULL, jump to the actual trampoline to fill the runtime
9084         generic context.  Otherwise, return it.
9085
9086         * mini.c: Call the lazy fetch trampoline to get entries out of the
9087         runtime generic context.
9088
9089         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
9090         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
9091         tramp-sparc.c: Stubs for the lazy fetch trampoline.
9092
9093 2008-02-21  Mark Probst  <mark.probst@gmail.com>
9094
9095         * mini.c: Fetch data out of the extensible part of the runtime
9096         generic context instead of calling a helper function.
9097
9098         * generic-sharing.c: Some functions moved into
9099         metadata/generic-sharing.c.  Helper function for fetching other
9100         types now checks and asserts against extensible rgctx (just for
9101         debugging purposes - the helper function isn't called anymore
9102         unless for debugging).
9103
9104 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9105
9106         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
9107         for tail calls up to the point that the tests in iltests.exe run. Also add a
9108         dummy CKFINITE implementation.
9109         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
9110         needed for trampoline LMF frames.
9111
9112         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
9113         trampoline LMF frames.
9114
9115 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
9116
9117         * mini.c (inline_method): clean any pending loader error when inlining fail.
9118         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
9119
9120 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
9123
9124         * aot-runtime.c (decode_patch_info): Ditto.
9125
9126         * mini.c (mono_resolve_patch_target): Ditto.
9127         
9128         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
9129         icall wrappers.
9130
9131         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
9132         
9133         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
9134         if it references an icall address.
9135
9136 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
9137
9138         * cpu-s390x.md: Remove some more unused opcodes.
9139         
9140         * cpu-s390x.md: Remove some unused opcodes.
9141
9142         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
9143         mono_op_imm_to_op ().
9144
9145         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
9146         instead of a switch statement.
9147         
9148         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
9149         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
9150
9151         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
9152         
9153         * mini-codegen.c: Remove unused mono_regstate2_... functions.
9154
9155         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
9156         -1.
9157
9158 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * driver.c (mono_main): Improve error reporting when an assembly cannot be
9161         opened. Fixes #362607.
9162
9163         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
9164
9165         * iltests.il.in: Add a test for static methods in interfaces.
9166
9167 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
9168
9169         * genmdesc.c (build_table): Fix a crash on older glib versions.
9170
9171         * cpu-sparc.md: Remove some unused opcodes.
9172         
9173         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
9174         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
9175
9176         * cpu-amd64.md: Remove some unused opcodes.
9177
9178         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
9179         like the other opcodes.
9180
9181 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
9182
9183         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
9184
9185         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
9186
9187         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
9188         variables 'cfg' instead of 'm' for consistency.
9189
9190         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
9191
9192         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
9193         argument holding the vtype return address, to avoid the ambigious use of
9194         cfg->ret for this purpose.
9195
9196         * mini.c (NEW_RETLOADA): Use vret_addr if set.
9197
9198         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
9199         
9200         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
9201         new mono_print_ins () function which only takes one argument.
9202
9203 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
9204
9205         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
9206         macro arguments.
9207
9208 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
9209
9210         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
9211
9212         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
9213
9214         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
9215         opcodes and other small changes.
9216
9217         * mini-ops.h: Add some new opcodes from the linear IR branch.
9218
9219         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
9220
9221         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
9222         opcodes, use the REG_MEMBASE opcodes instead.
9223         
9224         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
9225         opcodes, use the REG_MEMBASE opcodes instead.
9226         
9227         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
9228         linear IR branch.
9229
9230         * mini.c (mono_op_imm_to_op): New helper function.
9231
9232         * mini-ops.h: Add some opcodes from linear IR branch.
9233
9234 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
9235
9236         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
9237         <tsv@solvo.ru>.
9238
9239 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
9240
9241         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
9242         OP_ICONV_TO_R4/R8.
9243
9244         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
9245
9246 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
9247
9248         * aot-compiler.c (emit_method_code): Add an assert.
9249
9250         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
9251         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
9252         methods.
9253
9254 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
9255
9256         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
9257         some load/store opcodes so they are consistent. 
9258         (mono_arch_emit_prolog): Simplify some code.
9259
9260         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
9261
9262         * objects.cs: Add tests for large argument offsets on ARM.
9263
9264         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
9265         stack offsets. Fixes #359651.
9266
9267         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
9268
9269         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
9270
9271         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
9272
9273         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
9274
9275         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
9276
9277         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
9278         rid of CEE_CONV_R_UN.
9279
9280         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
9281
9282 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
9283
9284         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
9285
9286         * mini.c (mono_normalize_opcodes): Add some more opcodes.
9287
9288         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
9289
9290         * cpu-amd64.md: Remove some unused opcodes.
9291
9292         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
9293
9294         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
9295
9296         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
9297         arch specific functions for its parts. Call the peephole pass after local
9298         regalloc so the prolog can compute a more accurate max_offset.
9299         
9300         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
9301         the corresponding OP_I/OP_L opcodes.
9302
9303         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
9304
9305         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
9306
9307 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9308
9309         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
9310         as they are handled in mini.c.
9311
9312         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
9313         
9314         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
9315         case since it is handled in mini.c.
9316
9317         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
9318
9319         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
9320
9321         * *.c: Use the new opcodes in the IR and back end code.
9322
9323         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
9324
9325         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
9326
9327 2008-02-06  Mark Probst  <mark.probst@gmail.com>
9328
9329         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
9330         an assert because it has a race condition.
9331
9332 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9333
9334         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
9335
9336         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
9337
9338         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
9339
9340         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
9341         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
9342
9343 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9344
9345         * cpu-amd64.md (move): Correct the maximum size of move.
9346
9347 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9348
9349         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
9350         the generic class init trampoline to return quickly if the class
9351         is already inited.
9352
9353 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9354
9355         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9356         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9357
9358 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9359
9360         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9361         branch.
9362
9363 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9364
9365         * objects.cs: Add some soft-float tests.
9366
9367         * mini.c: Fix a couple more soft-float issues.
9368
9369         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9370
9371         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9372         avoid a REX prefix.
9373
9374 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9375
9376         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9377         exception happens while compiling a virtual method.
9378
9379 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9380
9381         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9382         
9383         * mini-sparc.c: Fix build.
9384
9385         * mini-sparc.c (get_call_info): Add support for generic sharing.
9386
9387         * mini-exceptions.c: Add a FIXME.
9388
9389 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9392         altstack handling code.
9393
9394         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9395         
9396         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9397
9398         * mini-s390.c: Add support for generic sharing.
9399
9400         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9401         Fix CAS on s390.
9402         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9403
9404         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9405
9406         * mini-s390x.c: Add support for generic sharing.
9407         
9408         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9409         Fix CAS on ia64.
9410         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9411
9412         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9413         can be used since it takes a 16 bit signed immediate.
9414
9415         * inssel-s390x.brg: Fix OP_SETRET.
9416
9417         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
9418
9419         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
9420
9421         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
9422
9423         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
9424
9425         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
9426         in one place.
9427
9428         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
9429         stuff.
9430
9431         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
9432         of the unused mono_arch_patch_delegate_trampoline stuff.
9433
9434 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
9435
9436         * basic-long.cs: Move the fp related tests to basic-float.cs.
9437
9438         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
9439
9440         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
9441
9442         * basic-calls.cs: Add a test for proper float argument passing.
9443
9444         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
9445         if the context corresponds to an exception received through a signal.
9446
9447         * exceptions.cs: Add a test for nullref handling at the start of a try
9448         clause.
9449
9450         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
9451
9452         * jit-icalls.c (mono_break): New JIT icall.
9453
9454         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
9455
9456         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
9457
9458 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
9459
9460         * cpu-*.md: Get rid of unused opcodes.
9461
9462         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
9463
9464         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
9465         by all platforms.
9466
9467         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
9468         define.
9469
9470         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
9471         the arch independent trampoline code in mini-trampolines.c.
9472
9473         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
9474
9475         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
9476
9477         * mini-s390.h: Remove an unused define.
9478         
9479         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
9480         the arch independent trampoline code in mini-trampolines.c.
9481
9482         * mini-arm.c (mono_arch_emit_prolog): Fix build.
9483
9484 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
9485
9486         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
9487
9488         * mini-s390.c (mono_arch_emit_prolog): Fix build.
9489
9490         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
9491
9492         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
9493
9494         * cpu-amd64.md: Use smaller sizes for int opcodes.
9495
9496         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
9497
9498         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
9499         objects.cs.
9500
9501         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
9502         debugging.
9503
9504         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
9505         instead of though a pointer to save an indirection when accessing elements of
9506         the array.
9507
9508         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
9509         some typos.
9510         (NOT_IMPLEMENTED): New helper macro.
9511         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
9512         of a bb.
9513
9514         * *.c: Use the new helper macro.
9515
9516 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
9517
9518         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
9519
9520 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
9521
9522         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
9523         stack slots.
9524
9525 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
9526
9527         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
9528         profiling is enabled.
9529         
9530         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
9531         the end.
9532         (mono_arch_emit_prolog): Add more first bblock optimizations.
9533
9534         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
9535         in order if possible.
9536         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
9537         bblock, since the arguments are still in their original registers.
9538
9539         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
9540
9541 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
9542
9543         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
9544         as well.
9545
9546         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
9547         offset 0.
9548
9549         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
9550
9551         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
9552         process async exceptions received while in unmanaged code.
9553
9554         * mini.c (mini_init): Install a callback with the runtime which will be called
9555         when a thread receives an async exception while in unmanaged code.
9556
9557         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
9558
9559         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
9560
9561 2008-01-16  Wade Berrier  <wberrier@novell.com>
9562
9563         * cpu-g4.md:
9564         * cpu-arm.md:
9565         * cpu-s390x.md:
9566         fix build
9567
9568 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
9569
9570         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
9571         compilation with sun cc.
9572
9573         * cpu-*.md: Fix the build.
9574
9575         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
9576
9577         * mini-amd64.h: Add some comments to the MonoLMF structure.
9578
9579         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
9580         
9581         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
9582         in the LMF structure if possible. This saves two instructions in the
9583         managed->native wrappers.
9584
9585         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
9586
9587 2008-01-16  Mark Probst  <mark.probst@gmail.com>
9588
9589         * generic-sharing.c: New type argument lookup code which uses the
9590         runtime generic context template.
9591
9592 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
9593
9594         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
9595
9596         * mini-arm.c (add_general): Fix arm eabi parameter passing.
9597         (mono_arch_output_basic_block): Fix localloc implementation.
9598
9599         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
9600
9601         * mini-ia64.c (peephole_pass): Fix ia64 build.
9602
9603         * mini-amd64.c (peephole_pass): Fix a warning.
9604         
9605         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
9606         at a constant offset from sp/fp.
9607
9608         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
9609         instead of obtaining it from *lmf in the managed method case.
9610
9611 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9614
9615 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9616
9617         * mini.h (MonoInstList): New type.
9618         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9619         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9620         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9621         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9622         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9623         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9624         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9625         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9626         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9627         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9628         MONO_INST_LIST_FOR_EACH_ENTRY,
9629         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9630         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9631         mono_inst_list_first, mono_inst_list_last,
9632         mono_inst_list_next, mono_inst_list_prev): New instruction
9633         list handling interfaces.
9634         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9635         list head 'ins_list'.
9636         (MonoInst): Replace next pointer with list head 'node'.
9637         (MonoCallInst): Make 'out_args' a MonoInstList.
9638         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9639         (MonoCompile): Delete reverse_inst_list and
9640         reverse_inst_list_len.
9641         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9642         mono_arch_lowering_pass, mono_arch_local_regalloc,
9643         mono_arch_output_basic_block, mono_arch_emit_prolog):
9644         Convert to new instruction lists.
9645         (insert_after_ins): Delete.
9646         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9647         instruction lists.
9648         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9649         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9650         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9651         mono_emulate_opcode, mono_emit_load_got_addr,
9652         inline_method, mono_method_to_ir, mono_print_bb_code,
9653         print_dfn, decompose_pass, nullify_basic_block,
9654         replace_out_block_in_code, remove_block_if_useless,
9655         merge_basic_blocks, move_basic_block_to_end,
9656         try_unsigned_compare, optimize_branches, mono_print_code,
9657         mini_select_instructions, remove_critical_edges): Likewise.
9658         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9659         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9660         mono_arch_output_basic_block, mono_arch_emit_prolog):
9661         Likewise.
9662         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9663         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9664         mono_arch_output_basic_block): Likewise.
9665         (inst_list_prepend, insert_after_ins): Delete.
9666         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9667         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9668         instruction lists.
9669         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9670         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9671         mono_arch_emit_prolog): Likewise.
9672         * cfold.c (mono_constant_fold): Likewise.
9673         * liveness.c (visit_bb, mono_analyze_liveness,
9674         optimize_initlocals): Likewise.
9675         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9676         * graph.c (mono_draw_code_cfg): Likewise.
9677         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9678         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9679         mono_ssa_cprop): Likewise.
9680         * abcremoval (get_relations_from_previous_bb, process_block):
9681         Likewise.
9682         * local-propagation (mono_cprop_invalidate_values,
9683         mono_local_cprop_bb): Likewise.
9684         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9685         peephole_pass, mono_arch_output_basic_block,
9686         mono_arch_emit_prolog): Likewise.
9687         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9688         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9689         mono_arch_emit_prolog): Likewise.
9690         (insert_after_ins): Delete.
9691         * aliasing.c (print_code_with_aliasing_information,
9692         mono_build_aliasing_information, mono_aliasing_deadce):
9693         Convert to new instruction lists.
9694         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9695         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9696         mono_arch_local_regalloc, mono_arch_output_basic_block):
9697         Likewise.
9698         (insert_after_ins): Delete.
9699         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9700         peephole_pass, mono_arch_output_basic_block): Convert to
9701         new instruction lists.
9702         * mini-codegen (InstList, inst_list_prepend,
9703         insert_after_ins): Delete.
9704         (insert_before_ins, get_register_force_spilling,
9705         get_register_spilling, free_up_ireg, free_up_reg,
9706         create_copy_ins, create_spilled_store, alloc_int_reg,
9707         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9708         to new instruction lists.
9709         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9710         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9711         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9712         (insert_after_ins): Delete.
9713         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9714         mono_arch_local_regalloc, mono_arch_output_basic_block,
9715         mono_arch_call_opcode): Convert to new instruction lists.
9716         (insert_after_ins): Delete.
9717         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9718         peephole_pass, mono_arch_output_basic_block,
9719         mono_arch_emit_prolog): Convert to new instruction lists.
9720
9721 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9722
9723         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9724
9725         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9726         Fixes #353182.
9727
9728         * Makefile.am (version.h): Make this work with non-bash shells.
9729
9730 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9731
9732         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9733
9734 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9737         the InitializeArray optimization.
9738
9739 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9740
9741         * mini.c driver.c: Don't include os/gc_wrapper.h.
9742
9743 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9744
9745         * mini.c (print_jit_stats): Print GC statistics if available.
9746
9747 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9748
9749         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9750
9751 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9752
9753         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9754
9755 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9756
9757         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9758         
9759         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9760
9761         * driver.c (mono_main): Ditto.
9762
9763 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9764
9765         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9766
9767         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9768         in the vtable can't be encoded.
9769         (compile_method): Ditto.
9770
9771 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9772
9773         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9774         defined.
9775
9776         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9777         lmf->rbp.
9778
9779         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9780         the top LMF entry belongs to the current method.
9781
9782         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9783
9784 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9785
9786         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9787         
9788         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9789
9790         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9791
9792         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9793
9794         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9795
9796         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9797         implementation.
9798
9799         * basic-float.cs: Add an ulong->double cast test.
9800
9801 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9802
9803         * mini.c (mono_method_to_ir): Fix a warning.
9804
9805 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9806
9807         * mini-ops.h: Add OP_SWITCH.
9808
9809         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9810         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9811
9812 2007-12-11  Geoff Norton  <gnorton@novell.com>
9813
9814         * mini-s390x.c: Minor change to the MAX() define to allow
9815         it to compile with other gcc versions.
9816
9817 2007-12-11  Geoff Norton  <gnorton@novell.com>
9818
9819         * cpu-s390x.md:
9820         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9821
9822 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9823
9824         exceptions-arm.c (mono_arch_get_restore_context): Restore
9825         the frame pointer.
9826
9827         exceptions-arm.c (throw_exception): Save the frame pointer.
9828         This is a partial fix for #323747. Only the client side is
9829         fixed.
9830
9831 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9832
9833         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9834         was using an unrelated variable to log the class which
9835         needed the cctor to be called. This was crashing on arm.
9836
9837 2007-12-09  Robert Jordan  <robertj@gmx.net>
9838
9839         * mini-x86.c (mono_arch_emit_epilog):
9840         Consider all kinds of 64-bit types. Fixes #323114.
9841
9842 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9843
9844         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9845
9846 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9847
9848         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9849
9850 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9851
9852         * mini.c: run type ctor before allocating an object, not only
9853         when running it's constructor method (fixes at least part of bug #342507).
9854
9855 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9856         
9857         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9858         
9859         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9860         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9861         function.
9862
9863         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9864         mono_generic_class_init_trampoline () the same as it is done with the other
9865         trampolines.
9866
9867         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9868         aot-runtime.c aot-compiler.c: Implement AOT support.    
9869
9870 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9871
9872         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9873         build for archs which don't have the vtable trampoline defined
9874         yet.
9875
9876 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9877
9878         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9879
9880         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9881
9882         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9883
9884         * tramp-<ARCH>.c: Use the new helper function.
9885
9886 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9887
9888         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9889         trampoline call, which takes a vtable argument.
9890
9891         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9892         OP_TRAMPCALL_VTABLEs like other calls.
9893
9894         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9895         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9896         call.  Implemented a support function which fetches the vtable
9897         from a register set.
9898
9899         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9900         Implemented a generic class init trampoline, using the
9901         OP_TRAMPCALL_VTABLE opcode.
9902
9903         * mini.c: Implemented static field access when sharing generic
9904         code.  This implies initing the class using the new
9905         OP_TRAMPCALL_VTABLE call.
9906
9907 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9908
9909         * mini.c: Don't compile methods with sharing enabled if their
9910         classes are disabled for sharing.
9911
9912 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9913
9914         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9915         opcodes. Fixes #346563.
9916
9917         * objects.cs: Add a new test.
9918
9919         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9920
9921         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9922         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9923
9924 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9925
9926         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9927
9928 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9931         code stream.
9932
9933 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9934
9935         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9936
9937         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9938         optimization in the AOT case.
9939         
9940 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9941
9942         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9943         
9944         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9945
9946         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9947
9948         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9949
9950         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9951         is created by the inlined delegate ctor.
9952
9953         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9954
9955         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9956
9957 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * cpu-x86.md: Fix the length of ckfinite.
9960
9961 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9962
9963         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9964         
9965         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9966         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9967
9968         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9969
9970         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9971         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9972
9973 2007-11-28  Martin Baulig  <martin@ximian.com>
9974
9975         * mini-x86.c
9976         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9977         after creating the trampoline.
9978
9979 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9980
9981         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9982
9983         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9984         the same version.
9985
9986         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9987         instead of the calling method to help AOT.
9988
9989         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9990
9991 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9992
9993         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9994         is defined.
9995
9996 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9997
9998         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9999         
10000         * aot-compiler.c (compile_method): Correct check for generic method definitions.
10001         (encode_method_ref): No need to handle generic method definitions specially.
10002
10003         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
10004
10005         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
10006         decode_klass_info.
10007
10008         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
10009         encode_klass_info.
10010         (compile_method): Enable generic sharing.
10011
10012 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
10013
10014         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
10015         (mini_method_compile): Add preliminary support for AOTing shared generic code.
10016
10017         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
10018         generic code.
10019
10020         * mini-trampolines.c: Fix a warning.
10021
10022         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
10023         NEW_PCONST.
10024         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
10025         (generic_class_is_reference_type): Remove unused function.
10026
10027         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
10028         in the generic vtable trampoline case.
10029
10030         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
10031         
10032         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
10033         return an AOT method based on a vtable slot.
10034
10035         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
10036
10037         * mini.c (mini_get_vtable_trampoline): Export this.
10038
10039 2007-11-22  Martin Baulig  <martin@ximian.com>
10040
10041         * debug-debugger.h
10042         (MonoDebuggerInfo): Move `debugger_version' up.
10043
10044 2007-11-22  Martin Baulig  <martin@ximian.com>
10045
10046         * mini-amd64.c
10047         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
10048
10049         * mini-trampolines.c
10050         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
10051         after compiling the method.
10052
10053 2007-11-20  Martin Baulig  <martin@ximian.com>
10054
10055         * debug-mini.c
10056         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
10057         (mono_debugger_remove_breakpoint): Likewise.
10058         (mono_debugger_check_breakpoints): Likewise.
10059
10060         * debug-debugger.c: Implement the new breakpoint interface here.
10061
10062 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
10063
10064         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
10065         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
10066
10067         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
10068
10069 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
10070
10071         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
10072
10073         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
10074         mini.c.
10075
10076         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
10077         mini.c.
10078
10079         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
10080         returning a vtype in a register.
10081
10082         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
10083         here from the arch specific code.
10084
10085         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
10086         mini.c.
10087
10088         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
10089         (mono_arch_emit_prolog): Increment maximum prolog size.
10090
10091         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
10092         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
10093
10094         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
10095         MonoGenericSharingContext.
10096
10097         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
10098         MonoGenericSharingContext. Allocate memory from the cfg mempool.
10099
10100 2007-11-15  Mark Probst  <mark.probst@gmail.com>
10101
10102         * mini.c, mini.h, generic-sharing.c: Functions for producing code
10103         which extract fields out of the runtime generic context.  Full
10104         sharing of the NEWARR opcode.
10105
10106 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10107
10108         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
10109         --enable-minimal=ssa.
10110
10111 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * mini-trampolines.c (mono_delegate_trampoline): Update after 
10114         mono_marshal_get_delegate_invoke () signature change.
10115
10116 2007-11-13  Mark Probst  <mark.probst@gmail.com>
10117
10118         * mini.c: Removed the shared context in favor of the generic
10119         sharing context.  Allocate the MonoJitInfo structure with room for
10120         the generic sharing context if it's needed.
10121
10122         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
10123         domain-internals.h now.
10124
10125         * mini-x86.c: Pass the generic sharing context to get_call_info ().
10126
10127         * generic-sharing.c: Several changes for working without a shared
10128         context and instead operating on open types instead.
10129
10130 2007-11-12  David S. Miller  <davem@davemloft.net>
10131
10132        * inssel-sparc.brg: Fix double instruction emit.
10133
10134 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
10135
10136         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
10137         Get/Set/Address methods.
10138         
10139         * mini.c debug-debugger.c mini-trampolines.c: Update after 
10140         mono_marshal_get_delegate_invoke signature change.
10141
10142 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10143
10144         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
10145         This can happens with dynamic methods. Fixes the other bug in #322722.
10146
10147 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10148
10149         * tramp-arm.c (mono_arch_patch_callsite): Support patching
10150         BX call sequence.
10151
10152         * mini-arm.c (arm_patch): Implement patching of BX call
10153         sequence. Fixes one of the bugs in #322722.
10154
10155 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
10156
10157        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
10158        under Linux.  We only need to flush every 32-byte cache line.    
10159
10160 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
10161
10162         * mini.c:
10163         move_basic_block_to_end: Add branches when needed, eventually creating
10164         a new BB.
10165         optimize_branches: added a parameter that tells if it's ok to create
10166         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
10167         and avoid calling move_basic_block_to_end when it's not ok.
10168         Fixes bug 318677.
10169
10170 2007-11-07  Mark Probst  <mark.probst@gmail.com>
10171
10172         * mini.c: Abort inlining call to InitializeArray if something
10173         looks wrong.  Let the icall handle it, which now has proper safety
10174         checks.
10175
10176 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
10177
10178         * mini.c (mono_spill_call): add support for soft-float.
10179
10180         * mini.c (mono_method_to_ir): add support for soft-float
10181         to inlined functions that return float.
10182
10183         * mini.c (mono_method_to_ir): add support for soft-float
10184         to cee_stsfld opcode on float fields.
10185
10186 2007-11-05  Geoff Norton  <gnorton@novell.com>
10187
10188         * mini-x86.h: Fix the structure access for X86 Leopard.
10189
10190
10191 2007-11-05  Martin Baulig  <martin@ximian.com>
10192
10193         * mini-trampolines.c
10194         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
10195         after compiling the method to notify the debugger.
10196
10197 2007-11-05  Martin Baulig  <martin@ximian.com>
10198
10199         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
10200
10201 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
10204         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
10205
10206 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
10207
10208         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
10209         native-to-managed wrappers.
10210         
10211 2007-11-01  Geoff Norton  <gnorton@novell.com>
10212
10213         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
10214         members.
10215
10216 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10217
10218         * mini.c, mini-x86.c: when getting back from unmanaged code
10219         to managed via a marshaled delegate we also need to set the
10220         right domain.
10221
10222 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10223
10224         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
10225         for amd64.
10226
10227 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10228
10229         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
10230         let the debugger or other external agents to tell the JIT when
10231         a sw breakpoint has been inserted in the code that the JIT needs
10232         to be able to inspect.
10233
10234 2007-10-31  Martin Baulig  <martin@ximian.com>
10235
10236         * debug-debugger.h
10237         (MonoDebuggerInfo): Remove `runtime_class_init'.
10238
10239 2007-10-30  Martin Baulig  <martin@ximian.com>
10240
10241         * debug-mini.h
10242         (mono_debugger_thread_created): Added `MonoThread *' argument.
10243         (mono_debugger_extended_notification): New public method.
10244         (mono_debugger_trampoline_compiled): New public method.
10245
10246         * debug-mini.c
10247         (MonoDebuggerThreadInfo): Added `thread' and
10248         `extended_notifications' fields.
10249
10250         * debug-debugger.c
10251         (debugger_executable_code_buffer): New static variable.
10252
10253         * debug-debugger.h
10254         (MonoDebuggerInfo): Added `executable_code_buffer',
10255         `executable_code_buffer_size', `breakpoint_info_area',
10256         `breakpoint_table' and `breakpoint_table_size'.
10257
10258 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
10259
10260         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
10261         that IP  either is an unused value or the vtable pointer. IMT 
10262         calls use vtable + offset now. Reduced by almost half the size
10263         of IMT entries.
10264
10265 2007-10-26  Jonathan Chambers <joncham@gmail.com>
10266
10267         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
10268         defines to access param registers. Replace long usage with
10269         gsize as sizeof(long) != sizeof(void*) on Win64.
10270
10271         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
10272         on Win64. Fix intrinsic, use _AddressOfReturnAddress
10273         instead of non-existant _GetAddressOfReturnAddress.
10274
10275         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
10276         param registers. Save/restore %rdi and %rsi in MonoLMF.
10277
10278         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
10279         param registers. Modify (throw_exception) signature to take 
10280         %rdi and %rsi on Win64. 
10281
10282         Code is contributed under MIT/X11 license.
10283
10284 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10285
10286         * helpers.c: unlink debugging output files.
10287
10288 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
10289
10290         * mini.c: Move mono_create_ftnptr () to object.c.
10291
10292 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
10293
10294         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
10295         optional. This function can now be used to disassemble code generated
10296         outside the JIT such as trampolines and IMT thunks.
10297
10298         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
10299
10300         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
10301         vtable pointer from a ldr instruction.
10302
10303         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
10304         new IMT call sequence.
10305
10306         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
10307         call sequence for interface invocations.
10308
10309         * mini-arm.c (mono_arch_emit_imt_argument): added, required
10310         for imt support. This function is empty since IMT on ARM requires no
10311         special handling on the IR side.
10312
10313         * mini-arm.c (mono_arch_find_imt_method): added, required for
10314         imt support.
10315
10316         * mini-arm.c (mono_arch_find_this_argument): added, required
10317         for imt support.
10318
10319         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
10320         a ldr instruction to load a value stored in the code stream.
10321
10322         * mini-arm.c (mono_arch_build_imt_thunk):added, required
10323         for imt support.
10324
10325
10326 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * mini.c (mini_init): Install the jump trampoline callback.
10329
10330 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10331
10332         * mini-trampolines.c: handle synchronized methods with the common
10333         vtable trampoline (bug #335601).
10334
10335 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
10338
10339         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
10340         64 bit platforms.
10341
10342         * mini-ia64.h mini-ia64.c: Add support for IMT.
10343
10344         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
10345         prolog. Fixes #331958.
10346
10347 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
10348
10349         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
10350
10351 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10352
10353         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10354         trampoline.
10355
10356 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10357
10358         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10359         trampoline.
10360
10361 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10362
10363         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10364         trampoline.
10365
10366 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10367
10368         * mini-trampolines.c: changed the magic rampoline to understand
10369         the common vtable trampoline method: the method to invoke is
10370         determined by the vtable displacement of the call.
10371
10372 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10373
10374         * mini.c, mini.h: register the common vtable trampoline if the
10375         architecture supports it.
10376
10377 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10378
10379         * cpu-amd64.md: use the correct max length for tls_get.
10380
10381 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10382
10383         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10384         CEE_STELEM_ANY. Fixes #333696.
10385
10386 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10387
10388         * exceptions-x86.c: provide more graceful handling of the case where
10389         we followed a bogus function pointer from managed code (bug #332866).
10390
10391 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10392
10393         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10394         replaces the generic_shared flag and will carry more information
10395         in the future.
10396
10397         * generic-sharing.c: Added mini_type_stack_size() which allows
10398         allows open types if given a generic sharing context.
10399         mini_get_basic_type_from_generic() takes a
10400         MonoGenericSharingContext* instead of a MonoCompile* now.
10401
10402         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10403         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10404         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10405         changes above.  Just passing arguments through to the right
10406         places.
10407
10408 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10409
10410         * mini-arm.c: unify the call emission to emit_code_seq().
10411
10412 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10413
10414         * tramp-arm.c: reduced the trampoline size.
10415
10416 2007-10-10  Mark Probst  <mark.probst@gmail.com>
10417
10418         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
10419         variable handling out of arch-specific code.
10420
10421 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
10422
10423         * mini-arm.c: implemented fast delegate dispatch.
10424
10425 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
10428         that fp elimination is turned off if the space required by locals is too
10429         big. Fixes #331958.
10430
10431 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10432
10433         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
10434         ARM to the new style trampoline.
10435
10436 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10437
10438         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
10439
10440         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
10441
10442 2007-10-09  Martin Baulig  <martin@ximian.com>
10443
10444         * debug-debugger.h
10445         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
10446         `field_info_offset_offset'.     
10447
10448 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10449
10450         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
10451         removed more internal usage of the r11 register and made it available
10452         to the register allocator.
10453
10454 2007-10-08  Mark Probst  <mark.probst@gmail.com>
10455
10456         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
10457         when sharing generics and treat type variables as references.
10458
10459 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10460
10461         * mini-ppc.c: started removing the internal uses of register r11
10462         to eventually allow the register allocator to manage it as an
10463         additional available register.
10464
10465 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10466
10467         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
10468
10469 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10470
10471         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
10472         specific trampolines as they are not performance critical as a jump
10473         target (maybe align as before only for AOT code?). This saves about
10474         200 KB of native code on x86 for monodevelop startup.
10475
10476 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10477
10478         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
10479         monodevelop startup.
10480
10481 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
10482
10483         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
10484
10485         * mini-sparc.h mini-sparc.c: Implement IMT support.
10486
10487         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
10488         its smaller and doesn't clobber sparc_g1.
10489
10490         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
10491
10492 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10493
10494         * mini-ppc.c: optimized the size of the IMT thunks a bit.
10495
10496 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10497
10498         * mini-ppc.c: implemented fast delegate invocation.
10499
10500 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10501
10502         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
10503
10504 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10505
10506         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
10507         code to the new style trampoline in preparation for IMT support.
10508
10509 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
10510
10511         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
10512         systems already. This also reduces the specific trampiline sizes and
10513         prepares for the use of r12 as the IMT identifier register.
10514
10515 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10516
10517         * mini-mips.h: endianess fix (simplified from a patch by
10518         Thomas Kunze <thommy@tabao.de>, bug #323737).
10519
10520 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10521
10522         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
10523         to access ucontext fields and enable netbsd support
10524         (partially from Magnus Henoch <mange@freemail.hu>).
10525
10526 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10527
10528         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
10529         use the preprocessor from the CPP env var if it is set.
10530
10531 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10532
10533         * mini-trampolines.c: fixed an assertion and moved it earlier in the
10534         code, before interface_offset gets used.
10535
10536 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
10537
10538         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
10539         mono_class_setup_vtable () before accessing klass->vtable.
10540
10541 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
10542
10543         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
10544         hackish.
10545
10546 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10547
10548         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
10549         IMT slots (this saves hundreds of KB of memory in programs like
10550         IronPython and Monodevelop).
10551
10552 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10553
10554         * mini.c: print the delegate counter.
10555
10556 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
10557
10558         * mini-x86.c: make it easier to enable the debugging code for IMT
10559         slots.
10560
10561 2007-09-28  Martin Baulig  <martin@ximian.com>
10562
10563         * debug-debugger.h
10564         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
10565         `mono_method_klass_offset' and `mono_method_token_offset'.
10566
10567 2007-09-20  Mark Probst  <mark.probst@gmail.com>
10568
10569         * mini.c: First generics sharing implementation.  Can only share
10570         in very simple cases.  If sharing doesn't work it falls back to
10571         dedicated compilation.
10572
10573         * mini.h: Flag in MonoCompile to specify whether generic
10574         compilation is shared.  Flags enum for marking which generic inst
10575         of a context is used.  Prototypes for helper functions.
10576
10577         * generic-sharing.c: Helper functions for generic method sharing.
10578
10579         * optflags-def.h: Optimization flag (gshared) for enabling generic
10580         method sharing added.
10581
10582         * Makefile.am: generic-sharing.c added.
10583
10584 2007-09-19 Daniel Nauck <dna@mono-project.de>
10585
10586         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
10587
10588 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
10589         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
10590         fixes bug 325507.
10591
10592 2007-09-19  Martin Baulig  <martin@ximian.com>
10593
10594         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
10595         mono_debug_cleanup() is now part of mono_cleanup().
10596
10597 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10598
10599         * driver.c (mono_main): Fix a warning.
10600
10601 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
10602
10603         * aot-compiler.c: Optimize various parts when processing large assemblies.
10604         Fixes ##325568.
10605
10606         * mini.c (mono_patch_info_hash): Improve hash function.
10607
10608 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10609
10610         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
10611         
10612         Code is contributed under MIT/X11 license.
10613
10614 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10615
10616         * mini.c (mini_init): Fix a leak.
10617
10618         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10619
10620 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10621
10622         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10623
10624 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10625
10626         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10627
10628 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10629
10630         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10631         variance tests.
10632
10633         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10634
10635         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10636
10637         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10638
10639         * aot-runtime.c (decode_patch_info): Ditto.
10640
10641 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10642
10643         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10644         static case. Cache delegates in architecture specific code, 
10645         based on number of parameters.
10646         
10647         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10648         in architecture specific code, based on number of parameters.
10649         
10650         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10651         caching happen in architecture specific code now.
10652         
10653         Code is contributed under MIT/X11 license.
10654
10655 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10656
10657         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10658         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10659         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10660
10661         Code is contributed under MIT/X11 license.
10662
10663 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10664         * mini.c: (mono_thread_abort) Fixed bug #82416.
10665
10666 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10667
10668         * mini.: hook the new managed GC allocation feature into the JIT.
10669
10670 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10671
10672         * mini.c: implementation for the new runtime tls opcode.
10673
10674 2007-09-11  Martin Baulig  <martin@ximian.com>
10675
10676         * debug-debugger.h
10677         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10678         `mono_method_inflated_offset'.
10679
10680 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10681
10682         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10683         async exceptions into a method.
10684
10685         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10686         purpose of testing whenever the unwinder works at every instruction.
10687
10688 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10689
10690         * mini.c: check accessibility of method used in ldftn (fixes
10691         bug #82635).
10692
10693 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10694
10695         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10696
10697         * inssel.brg: Fix a warning.
10698
10699 2007-09-03  Martin Baulig  <martin@ximian.com>
10700
10701         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10702         now takes the `main_method' as argument.
10703
10704 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10705
10706         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10707
10708 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10709
10710         * driver.c: include the cil-coff.h header on Windows.
10711         
10712         Code is contributed under MIT/X11 license.
10713
10714 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10715
10716         * mini.c, driver.c: don't include the cil-coff.h header.
10717
10718 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10719
10720         * mini.c: flag places that needs fixes fo soft-float support.
10721
10722 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10723
10724         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10725         endian systems (partially from Dean Jenkins, bug #81924).
10726
10727 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10728
10729         * mini.c (check_linkdemand): Remove embedded reference object in
10730         call to LinkDemandSecurityException.
10731         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10732         with an IntPtr instead of a reference object.
10733
10734 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10735
10736         * mini.c (handle_initobj): Handle alignment properly.
10737
10738         * inssel.brg (mini_emit_memset): Ditto. 
10739
10740         * inssel.brg (mini_emit_memcpy): Ditto. 
10741
10742         * inssel-sparc.brg: Ditto.              
10743
10744         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10745
10746 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10747
10748         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10749         exceptions raised in unmanaged code. Fixes part of #82594.
10750
10751 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10752
10753         * mini.c (mono_method_to_ir), declsec.c
10754         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10755
10756 2007-08-22  Martin Baulig  <martin@ximian.com>
10757
10758         * debug-mini.h
10759         (MonoDebuggerThreadInfo): New typedef.
10760         (mono_debugger_thread_table): New global variable.
10761         (mono_debugger_thread_created): New public function.
10762         (mono_debugger_thread_cleanup): New public function.
10763
10764         * debug-debugger.h
10765         (MonoDebuggerInfo):
10766         - removed `get_current_thread' and `lookup_assembly'.
10767         - removed `data_table'.
10768         - added `thread_table'.
10769
10770         * mini.c
10771         (mono_thread_start_cb): Call mono_debugger_thread_created().
10772         (mono_thread_attach_cb): Likewise.
10773         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10774         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10775         initial domain.
10776
10777         * driver.c (mono_main): Move mono_debug_init() up, before calling
10778         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10779
10780 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10781
10782         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10783         together when passing several arguments of type double (gives a small
10784         speedup and saves a few bytes of generated code).
10785
10786 2007-08-20  Jb Evain  <jbevain@novell.com>
10787
10788         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10789
10790 2007-08-20  Jb Evain  <jbevain@novell.com>
10791
10792         * mini.c (mono_method_to_ir): throw MethodAccessException
10793         and FieldAccessException instead of InvalidProgramException.
10794
10795 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10796
10797         * mini.c: CoreCLR security checks.
10798
10799         * mini.h: Removed MonoSecurityMode (moved to
10800         metadata/security-manager.h) and mono_security_mode global var
10801         (replaced by set/get functions in security-manager.h).
10802
10803         * driver.c: Added "core-clr-test" security mode for testing.  Used
10804         set-function for setting security mode.
10805
10806 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10807
10808         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10809         the new jit_info_table.
10810
10811         * driver.c: Test code for the new jit_info_table (enabled by the
10812         define MONO_JIT_INFO_TABLE_TEST).
10813
10814 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10815
10816         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10817         detection of call <REG> instruction sequence. Fixes build on freebsd.
10818
10819 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10820
10821         * mini-exceptions.c: Fix a warning.
10822
10823 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10824
10825         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10826         stack overflow handling code on amd64 too.
10827
10828         * mini-exceptions.c (mono_setup_altstack): Make this use 
10829         mono_thread_get_stack_bounds ().
10830
10831         * mini-x86.h: Disable sigaltstack on solaris x86.
10832
10833 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10834
10835         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10836
10837 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10838
10839         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10840
10841 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10842
10843         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10844
10845         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10846
10847 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10848
10849         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10850         due to alignment.
10851
10852 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10853
10854         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10855         to be emitted (bug #82281).
10856
10857 2007-08-01  Martin Baulig  <martin@ximian.com>
10858
10859         Merged the `debugger-dublin' branch.
10860
10861         * debug-debugger.h (MonoDebuggerInfo):
10862         Removed the `old_*' compatibility entries.
10863         Added `debugger_version' and `data_table'.
10864         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10865         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10866
10867         * debug-mini.c
10868         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10869         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10870         instead of a `gconstpointer'.
10871         (mono_debugger_insert_method_breakpoint): Return a
10872         `MonoDebugMethodAddressList *'.
10873
10874 2007-06-28  Martin Baulig  <martin@ximian.com>
10875
10876         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10877
10878 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10881         __builtin_frame_address () since it is broken on older gcc versions.
10882
10883 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10884
10885         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10886         on the stack overflow handling and made the managed stack overflows
10887         catchable in most cases using soft guard pages.
10888         * exceptions-x86.c: added code to restore the protection in the soft
10889         guard pages at the end of exception handling.
10890
10891 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10892
10893         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10894
10895 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10896
10897         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10898         exception handling.
10899
10900 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10901
10902         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10903         signal handling support until it has been ported to the new mechanism.
10904         * mini.c: fixed stack overflow detection and use the new
10905         architecture code  to handle signals on the altstack.
10906
10907 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10908
10909         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10910         stack overflows on the alt stack.
10911
10912 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10913
10914         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10915         stack overflows on the alt stack.
10916
10917 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10918
10919         * exceptions-ppc.c: cleanup preparing for altstack support.
10920
10921 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10922
10923         * exceptions-arm.c: cleanup preparing for altstack support.
10924
10925 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10926
10927         * mini.c (print_jit_stats): Output hazard pointer stats.
10928
10929 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10930
10931         * driver.c, mini.c: Replaced security mode flags with a single
10932         enum variable.
10933
10934 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10935
10936         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10937
10938 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10939
10940         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10941         (which doesn't do anything yet) for activating Core CLR
10942         (Silverlight) security.
10943
10944 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10945
10946         * mini-codegen.c: work around a possible gcc bug on arm.
10947
10948 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10949
10950         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10951         message for platforms that don't support AOT compilation.
10952
10953 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10954
10955         * mini.h, mini.c, driver.c: temporary smcs hack.
10956
10957 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10958
10959         * mini-arm.h, mini-arm.c: arm EABI fixes.
10960
10961 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10962
10963         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10964         case.
10965
10966         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10967         trampolines taking a method argument.
10968
10969         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10970
10971         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10972         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10973
10974         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10975         JIT compilation throws an exception. Fixes #82050.
10976
10977 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10978
10979         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10980         with the MONO_EXCEPTION_ defines.
10981
10982 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10983
10984         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10985         #82117.
10986         
10987         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10988         the cause of an assertion.
10989
10990 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10991
10992         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10993         removed.
10994
10995 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10996
10997         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10998         assert. Should fix #82103.
10999
11000 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
11001
11002         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
11003         here too. Fixes #82095.
11004
11005         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
11006         addresses.
11007
11008         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
11009
11010         * mini-amd64.h: Enable IMT for amd64.
11011         
11012         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
11013
11014 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
11015
11016         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
11017
11018 2007-07-12  Mark Probst  <mark.probst@gmail.com>
11019
11020         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
11021         as soon as check_linkdemand sets an exception_type.
11022
11023 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11024
11025         * mini-x86.c: fixed offsets for IMT call sequence.
11026         * mini-x86.h: enable IMT again.
11027
11028 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11029
11030         * trace.c (mono_trace_enter_method): Decode MonoType too.
11031
11032         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
11033
11034         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
11035
11036         * mini-amd64.c: Add preliminary IMT implementation.
11037         
11038 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11039
11040         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
11041         understand the new IMT-base interface invocation (thanks to
11042         Daniel Nauck for the report and the remote debugging session).
11043
11044 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11045
11046         * mini-x86.c: size and speed optimizations for the IMT bsearch.
11047
11048 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11049
11050         * Makefile.am (aotcheck): Make this actually use the AOTed code.
11051
11052 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
11053
11054         * mini-trampolines.c: implement AOT IMT support.
11055         * mini-x86.h: enable IMT support for wider testing.
11056
11057 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11058
11059         * inssel.brg (emit_imt_argument): Add aot support here.
11060
11061         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
11062
11063 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11064
11065         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
11066         of the IMT implementation, partially from massi, with my
11067         implementation of the bsearch sequence. Disabled by default until
11068         the AOT code is implemented.
11069
11070 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
11073
11074         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
11075
11076 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11077
11078         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
11079         arch-independent IMT JIT code from Massimiliano
11080         Mantione (massi@ximian.com) with small cleanups from me.
11081
11082 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11083
11084         * Makefile.am: fix svn invocation to get the svn revision to be
11085         independent of the local language (build fix).
11086
11087 2007-07-09  Mark Probst  <mark.probst@gmail.com>
11088
11089         * mini.c (inline_method): Reset cfg->exception_type if the
11090         inlining is aborted.  Fixes: 82049.
11091
11092 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
11093
11094         * mini.c: remove assert from exception handling code when exception_ptr
11095         is not set.
11096
11097 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11098
11099         * mini.c (mono_codegen): Add an assert.
11100
11101         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
11102         enter and leave code.
11103         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
11104
11105 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11106
11107         * mini-ppc.c: fixed memory corruption for localloc(0)
11108         (bug #81852).
11109
11110 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11111         
11112         * mini.c: Fix warnings.
11113
11114 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
11115
11116         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
11117         to emit better double->int conversions.
11118
11119 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11120
11121         * mini.c: the provided Min/Max optimizations are valid for unisgned
11122         ints.
11123
11124 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
11125
11126         * 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
11127
11128 2007-06-28  Miguel de Icaza  <miguel@novell.com>
11129
11130         * mini.c (mono_running_on_valgrind): Add support for reporting the
11131         method and  its boundaries to valgrind.
11132
11133 2007-06-28  Martin Baulig  <martin@ximian.com>
11134
11135         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11136
11137 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
11138
11139         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
11140
11141         * generic.2.cs: Add new test case.
11142
11143 2007-06-25  Martin Baulig  <martin@ximian.com>
11144
11145         Merged the `debugger-dublin' branch.
11146
11147         * debug-mini.c
11148         (mono_debugger_insert_method_breakpoint): New public method.
11149         (mono_debugger_remove_method_breakpoint): Likewise.
11150         (mono_debugger_check_breakpoints): New static method.
11151         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
11152
11153         * debug-debugger.h (MonoDebuggerInfo):
11154         Renamed (to keep backward compatibility in the vtable):
11155         `insert_breakpoint' -> `old_insert_breakpoint'.
11156         `remove_breakpoint' -> `old_remove_breakpoint'.
11157         `create_string' -> `old_create_string'.
11158         `lookup_class' -> `old_lookup_class'.
11159         `lookup_type' -> removed; changed into a dummy field.
11160         `lookup_assembly' -> `old_lookup_assembly'.
11161         Added (same functionality, but different signature):
11162         `create_string', `lookup_class', `lookup_assembly'
11163         Added new:
11164         `get_method_addr_or_bpt', `remove_method_breakpoint',
11165         `runtime_class_init'.
11166
11167         * debug-debugger.c: Merged the `debugger-dublin' branch.
11168
11169 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
11172         well.
11173         (peephole_pass): Likewise.
11174
11175 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
11176
11177         * driver.c: hopefully make setaffinity work also for ancient
11178         versions of linux.
11179
11180 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
11181
11182         * driver.c : win32 build fix.
11183
11184 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11185
11186         * driver.c: check for the MONO_NO_SMP env var and bind to a single
11187         processor if it is set.
11188
11189 2007-06-21  Martin Baulig  <martin@ximian.com>
11190
11191         * debug-mini.h: New file.
11192
11193         * debug-mini.c
11194         (mono_debugger_insert_breakpoint_full): Moved here from
11195         ../metadata/mono-debug-debugger.c.
11196         (mono_debugger_remove_breakpoint): Likewise.
11197         (mono_debugger_breakpoint_callback): Likewise.
11198
11199 2007-06-15  Raja R Harinath  <rharinath@novell.com>
11200
11201         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11202         changes in MonoGenericClass.
11203
11204 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
11207
11208 2007-06-14  Raja R Harinath  <rharinath@novell.com>
11209
11210         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11211         removal of MonoGenericMethod.
11212
11213 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11214
11215         * mini-exceptions.c: hooks for the exception events profiling API.
11216
11217 2007-06-14  Randolph Chung  <tausq@debian.org>
11218
11219         * Makefile.ma: Add hppa target.
11220         * mini-arch.h: Include mini-hppa.h
11221         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
11222         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
11223         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11224
11225 2007-06-14  Randolph Chung  <tausq@debian.org>
11226
11227         * inssel.brg: Add rules for "chained" compare-branch operations so that
11228         a single compare op can affect multiple branches.  Adjust cost for
11229         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
11230         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
11231         cost for some rules so that they can more easily be overridden by
11232         per-arch rules (with fixes from lupus).
11233         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11234
11235 2007-06-13  Randolph Chung  <tausq@debian.org>
11236
11237         * mini-ops.h: Reorder branch ops so that they match the order of the
11238         corresponding CEE_* ops.  The code expects them this way.
11239         Add new ops for HPPA target.
11240         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11241
11242 2007-06-13  Randolph Chung  <tausq@debian.org>
11243
11244         * mini-exceptions.c: Handle cases where the stack grows towards
11245         larger addresses.
11246         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11247
11248 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11249
11250         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
11251         counter.
11252         * driver.c: explain where a non-matching corlib is found.
11253
11254 2007-06-13  Mark Probst  <mark.probst@gmail.com>
11255
11256         * mini.c (print_jit_stats): Output dynamic code allocation stats.
11257
11258 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
11259
11260         * mini-exceptions.c: Generate a method profile leave event during
11261         an exception to ensure that the profiler gets notified.
11262
11263 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
11266         branch.
11267
11268         * cpu-amd64.md: Add long_and/or/xor opcodes.
11269
11270 2007-06-06  Wade Berrier  <wberrier@novell.com>
11271
11272         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
11273         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
11274         length of instruction shr_imm (expected 8, got 10)
11275
11276 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
11277
11278         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
11279
11280 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11281
11282         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11283         MonoInternalHashTable again (fixed bug in the internal hash table
11284         code).
11285
11286 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11287
11288         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
11289         Have to figure out what makes it crash the SWF regression.
11290
11291 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
11292
11293         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
11294
11295 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11296
11297         * mini.c: optimize out the type check when storing null in a
11298         reference array.
11299
11300 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11301
11302         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11303         MonoInternalHashTable.
11304
11305 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11306
11307         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
11308         signed integer methods.
11309
11310 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11311
11312         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
11313         permanently since the current approach doesn't work.
11314
11315 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11316
11317         * inssel.brg (stmt): Only call delegate->invoke_impl if 
11318         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
11319
11320 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11321
11322         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
11323         the sreg2==rdx case.
11324         
11325         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
11326         account if it contains a rex prefix.
11327         (peephole_pass): Handle OP_FMOVE as well.
11328
11329 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11330
11331         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
11332         as it causes regressions.
11333
11334 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11335
11336         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
11337         static case as well.
11338
11339         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
11340
11341         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11342         (mono_arch_get_this_arg_from_call): Ditto.
11343
11344         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
11345
11346         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
11347         invoke_impl field.
11348
11349         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11350         (mono_arch_get_this_arg_from_call): Ditto.
11351
11352         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11353         
11354         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11355         try to create optimized invoke code and use that for further invocations. 
11356         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11357
11358         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11359
11360 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11361
11362         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11363         sealed classes or methods.
11364         *devirtualization.cs: tests for the new optimization
11365
11366 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11367
11368         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11369         by the update_volatile () function.
11370
11371 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11372
11373         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11374         require it.
11375
11376         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11377
11378 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11379
11380         * mini.c: Add configure checks for header files.
11381         * mini-x86.c: Add configure checks for header files.
11382         * trace.c: Add configure checks for header files.
11383         * aot-runtime.c: Add configure checks for header files.
11384         * aot-compiler.c: Add configure checks for header files.
11385         * driver.c: Add configure checks for header files.
11386         * mini-codegen.c: Add configure checks for header files.
11387         
11388         Code is contributed under MIT/X11 license.
11389
11390 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11391
11392         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11393         icompare_imm -128 + op_iclt. Fixes #81703.
11394
11395 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11398
11399 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11400
11401         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11402         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11403         so that all isinst checks now use "interface_bitmap".
11404
11405 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * cpu-amd64.md (jmp): Fix a warning.
11408
11409         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11410
11411         * basic.cs: Add new regression test.
11412
11413         * basic.cs: Remove test which is now in basic-long.cs.
11414
11415         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
11416
11417         * basic-long.cs: Add new test.
11418         
11419 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
11420
11421         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
11422
11423 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11424
11425         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
11426
11427         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
11428         places.
11429         
11430         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
11431         throwing code a bit.
11432
11433         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
11434         the exception throwing code a bit.
11435
11436         * mini-x86.c (get_call_info): Allocate result from a mempool.
11437
11438 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
11439
11440         * aot-compiler.c (find_typespec_for_class): Fix the assert.
11441
11442         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
11443
11444         * mini.h (MonoCompile): Add 'token_info_hash' field.
11445
11446         * mini.c: Save token->method associations during compilation so the AOT 
11447         compiler can use it.
11448         
11449         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
11450         which reference generic classes and methods.
11451
11452 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
11453
11454         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
11455
11456         * aot-compiler.c (compile_method): Fix a typo in a comment.
11457
11458         * aot-runtime.c (decode_cached_class_info): Skip generic types.
11459
11460         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
11461         everything generic.
11462
11463         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
11464
11465 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
11466
11467         * mini.h (MonoCompile): Add 'args' field.
11468
11469         * mini.c (mono_compile_create_vars): Store variables representing the arguments
11470         into cfg->args.
11471
11472         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
11473
11474 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * mini.c (mono_compile_get_interface_var): Remove this unused function.
11477
11478         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
11479
11480         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
11481         opcodes for some opcodes.
11482
11483         * mini.h *.brg *.c: Use the new opcodes.
11484
11485 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11486
11487         * mini.h: Bumped aot revision.
11488
11489         * inssel.brg: modified code generation of type checks for interfaces
11490         to use the new "MonoClass.interface_bitmap" instead of the old
11491         "MonoClass.interface_offsets".
11492
11493 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11494
11495         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
11496
11497 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
11498
11499         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
11500         64 bit platforms.
11501
11502 2007-04-27  Neale Ferguson <neale@sinenomine.net>
11503
11504         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
11505
11506 2007-04-27  Wade Berrier  <wberrier@novell.com>
11507
11508         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
11509         mini.h) to fix build.
11510
11511 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11512
11513         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
11514         
11515         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
11516         causes the corlib unit tests to fail.
11517
11518 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11519
11520         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
11521
11522         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
11523
11524         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
11525         opcodes to the comparison relations.
11526
11527         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
11528         opcodes to their types.
11529         
11530         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
11531
11532         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
11533         it in cfg->arch.cinfo.
11534
11535         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
11536
11537         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
11538         cfg->cil_offset_to_bb.
11539
11540 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11541
11542         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
11543         created becase of initlocals.
11544
11545 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * mini-alpha.c cpu-alpha.md: More alpha port work from 
11548         Sergey Tikhonov <tsv@solvo.ru>.
11549
11550 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
11551
11552         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
11553
11554 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
11555
11556         * cpu-s390.md (break): Correct the length of break instruction.
11557
11558 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11559
11560         * mini.c: fix a couple of soft-float issues and comments.
11561
11562 2007-04-15  Miguel de Icaza  <miguel@novell.com>
11563
11564         * trace.c (is_filenamechar): - is also a filename char.
11565
11566 2007-04-15  Neale Ferguson <neale@sinenomine.net>
11567
11568         * mini-s390.c: Correct checking for enum type in return value processing.
11569
11570 2007-04-14  Raja R Harinath  <rharinath@novell.com>
11571
11572         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
11573         (version.h): Makefile is in the build directory.
11574
11575 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
11576
11577         * mini-amd64.h: fix for assertion failure on Solaris/amd64
11578
11579 2007-04-11  Martin Baulig  <martin@ximian.com>
11580
11581         * mini.c (can_access_member): Fix handling of generic classes;
11582         fixes #81259.
11583
11584 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
11585
11586         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
11587
11588 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
11589
11590         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
11591
11592 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11593
11594         * mini-codegen.c: make sure the right spill amount is
11595         used for fp or integer registers (fixes the float_sub_spill() on ppc).
11596
11597 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
11598
11599         * mini-ppc.c: fixes for the fp_branch_nan test.
11600
11601 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * basic.cs: Comment out new test which still fails on ia64.
11604
11605 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11606
11607         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
11608
11609 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11610
11611         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11612
11613 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11616         on 64 bit machines. Fixes part of #80738.
11617
11618         * basic.cs: Add regression test.
11619
11620 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * inssel.brg basic.cs: Revert previous change to fix build.
11623
11624         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11625         platforms.
11626         
11627         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11628
11629         * basic.cs: Add new regression test.
11630
11631 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11632
11633         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11634         many arguments.
11635
11636 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11637
11638         * cpu-s390x.md: Correct length of break instruction.
11639
11640 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11641
11642         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11643         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11644
11645 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11646
11647         * *.c: Begin WIN64 port.
11648         * mini.c:  Use correct register in profiler.
11649         * mini-amd64.c: No inline assembly on Win64.
11650         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11651         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11652         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11653         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11654         mono_arch_ip_from_context for Win64.
11655         
11656         Contributed under MIT/X11 license.
11657
11658 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11659
11660         * exceptions-amd64.c (seh_handler): Ditto.
11661
11662         * exceptions-x86.c (seh_handler): Fix a memory leak.
11663
11664 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11665
11666         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11667         mini-s390x.c: fixed peephole optimizations to deal
11668         correctly with 1 and 2 byte reload avoidance.
11669
11670 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11671
11672         * cpu-s390.md, cpu-s390x.md: update localloc length.
11673
11674 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11675
11676         * cpu-g4.md: added missing descriptions.
11677
11678 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11679
11680         *  Makefile.am: Add support so the tail tests are not executed on
11681         PowerPC as that is a known limitation of the PowerPC port.
11682
11683 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11684
11685         * runmdesc.bat:  Move to msvc directory.
11686         
11687 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11688
11689         * runmdesc.bat:  Run executable that was produced by the current
11690         target and sent via an argument.
11691         
11692 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11693
11694         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11695         #81102.
11696
11697         * generics.2.cs: Add regression test.
11698
11699 2007-03-09  Wade berrier  <wberrier@novell.com>
11700
11701         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11702
11703 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11704
11705         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11706         AOT code depends on this.
11707
11708 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11709
11710         * mini.c: more precise tracking of types in the eval stack
11711         (part of fix for bug #81044).
11712
11713 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11714
11715         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11716
11717         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11718
11719 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11720
11721         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11722
11723         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11724
11725 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11726
11727         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11728         a pointer on 64 bit systems. Fixes #80190.
11729
11730         * iltests.il: Add new regression test.
11731
11732 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11733
11734         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11735
11736 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11737
11738         * trace.c: Remove an erroneous alignemnt check when tracing.
11739           Fixes --trace on OSX86.
11740
11741 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11742
11743         * mini-$(arch).h: initialize SP in context for all the archs.
11744
11745 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11746
11747         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11748         regressions in the thread tests.
11749
11750 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11751
11752         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11753         - fixed implementation of LOCALLOC opcode
11754         - implemented non-un compare for floats
11755         - code cleanup
11756         - implementation of FDIV and CKFINITE opcodes
11757         - fixes for latest mono updates
11758         - additional arch opcodes
11759
11760 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11761
11762         * Makefile.am: simplify and merge rules for cross-compilation.
11763
11764 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11765
11766         * local-propagation.c: Actually *apply* the fix for bug 80591...
11767
11768 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11769
11770         * mini-exceptions.c: backuot part of the last change
11771         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11772
11773 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11774         * inssel.brg: Fix bug 59286.
11775
11776
11777 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11778
11779         * mini-exceptions.c: patch from Zoltan to correctly check for
11780         stack boundaries (using the stack register, not the frame register),
11781         fixes bugs #80724, #79717.
11782
11783 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11784
11785         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11786         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11787
11788         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11789         presence of frame pointer elimination.
11790
11791 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11792         
11793         * mini-x86.h: NetBSD UCONTEX_REG defines.
11794
11795 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11796
11797         * inssel-amd64.brg: Fix amd64 build.
11798
11799 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11800
11801         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11802         on amd64.
11803
11804 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11805
11806         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11807         ends.
11808
11809         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11810
11811 2007-01-30 Mark Mason <mason@broadcom.com>
11812
11813            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11814            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11815            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11816            beginning support for CEE_JMP [not quite working yet]
11817            * tramp-mips.c: LMF handling now works
11818         
11819 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11822
11823         * mini.h (NULLIFY_INS): New macro.
11824
11825 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11826
11827         * mini.c: statistical profiler fix for windows, patch
11828         from Tor Lillqvist (tml@novell.com).
11829
11830 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11831         * local-propagation.c: Fix bug 80591.
11832
11833 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11834
11835         * Makefile.am: put back the --export-dynamic option as with
11836         the previous gmodule flags (thanks to Robert Jordan).
11837
11838 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11839
11840         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11841
11842         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11843         simplify and speed up the local register allocator. Also rename some fields
11844         like iassign->vassign.
11845         
11846         * regalloc.c: Remove some functions which are no longer used since their
11847         inlined version is in mini-codegen.c.
11848         
11849         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11850
11851         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11852
11853 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11854
11855         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11856         narrowing. Fixes #80622.
11857
11858         * iltests.il: Add new regresssion test. 
11859
11860 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11861
11862         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11863         debug-debugger.c, debug-debugger.h: warning fixes.
11864         * driver.c: updated copyright year and made it fit in one line.
11865
11866 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11867
11868         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11869
11870 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11873
11874         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11875
11876         * iltests.il: Add new test for bug #80507.
11877
11878 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11879
11880         * mini-arm.h: use soft-float also on vfp for now.
11881
11882 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11883
11884         * mini.c: fix some more soft-float issues.
11885
11886 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11887
11888         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11889
11890 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11891         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11892         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11893         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11894
11895 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11896
11897         * mini-arm.c: typo fix.
11898
11899 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11900
11901         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11902
11903 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11904
11905         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11906         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11907
11908         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11909
11910         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11911
11912         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11913         
11914         * inssel.brg: Fix a warning.
11915
11916         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11917
11918         * abcremoval.c ssa.c ssapre.c: Update after this change.
11919         
11920         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11921
11922         * dominators.c (df_set): Use mono_bitset_union_fast.    
11923
11924 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11925
11926         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11927         mini-codegen.c: reduce relocations and memory usage for the cpu
11928         description.
11929
11930 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11931
11932         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11933
11934         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11935         to reduce their size.
11936
11937 2007-01-19 Mark Mason <mason@broadcom.com>
11938
11939         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11940         * mini-mips.c: more configuration macros, support long conditional branches, additional
11941         asserts, fix epilog instrumentation.
11942         * mini-mips.h: use standard stack walk
11943         * cpu-mips.md: increase size of div, rem and conditional branches
11944         
11945 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11946
11947         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11948         to cpu spec data.
11949
11950 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11951
11952         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11953         (compile_method): Ditto.
11954
11955         * aot-runtime.c (decode_klass_info): Ditto.
11956
11957         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11958         needed by the code generated by inssel.brg. Also fix a warning.
11959
11960 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11961
11962         * mini.c: deal with enums that become genericinsts by
11963         being nested in a generic class (bug #79956).
11964
11965 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11966
11967         * mini.c: match the generic definition to check for
11968         private access with generic types (bug #78431).
11969
11970 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11971
11972         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11973         to make life easier for people cross-compiling that insist on not
11974         using scratchbox.
11975
11976 2007-01-17 Mark Mason <mason@broadcom.com>
11977
11978         * inssel-long.brg: patch to deal with mips missing flags
11979         * inssel-long32-mips.brg: implement overflow checks
11980         * insset-mips.brg: implement overflow checks
11981         * mini-mips.h: implement conditional exception handling
11982         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11983           Remove unused code, minor cleanups.
11984         * exceptions-mips.c: minor cleanups
11985         * mini-ops.h: add mips conditional exception ops
11986         * cpu-mips.md: add mips conditional exception ops
11987
11988         
11989 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11990
11991         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11992         to deal with mips missing of flags.
11993
11994 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11995
11996         * exceptions-ppc.c: execute fault handlers.
11997
11998 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11999
12000         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
12001
12002 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12003
12004         * mini.c: handle also floating point values in initialize_array.
12005
12006 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12007
12008         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
12009         array initialization and make it conditional on the intrins option.
12010
12011 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12012
12013         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
12014         relocations and put the patch info names close to the enum definition.
12015
12016 2007-01-15 Mark Mason <mason@broadcom.com>
12017
12018         * basic.cs, exceptions.cs: break up large tests to increase debugability.
12019
12020 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12021
12022         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
12023
12024 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12025
12026         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
12027
12028 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
12029
12030         * Makefile.am: distribute the mips sources.
12031
12032 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12033
12034         * mini-codegen.h: handle bug #80489 here, by excluding ecx
12035         directly.
12036
12037 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
12038
12039         * cpu-x86.md: back out for now as this triggers other regressions.
12040
12041 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12042
12043         * cpu-x86.md: force src1 and dest regpair for long shift instructions
12044         to eax:edx, so ecx can't get allocated to them (bug #80489).
12045
12046 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
12047
12048         * mini.c, mini-exceptions.c: enabled running fault handlers
12049         (bug #80469).
12050
12051 2007-01-03  Miguel de Icaza  <miguel@novell.com>
12052
12053         * driver.c: If nothing fail, do not use the string "failed",
12054         because it makes it very annoying to view test result logs on the
12055         web. 
12056
12057 2006-12-30  Miguel de Icaza  <miguel@novell.com>
12058
12059         * debug-debugger.c (mono_debugger_main): Rename "main" to
12060         "main_method" to prevent a warning.
12061
12062         Remove a warning for unused field.
12063
12064 2006-12-28  Martin Baulig  <martin@ximian.com>
12065
12066         * debug-debugger.c
12067         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
12068
12069 2006-12-22  Martin Baulig  <martin@ximian.com>
12070
12071         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
12072         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
12073         seperate `.mdb_debug_info' section, so we can access it from the
12074         debugger even if the binary is stripped.
12075
12076         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
12077         from the `.mdb_debug_info' here to prevent the linker from
12078         removing that section.
12079
12080         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
12081         mdb-debug-info64.s.
12082
12083 2006-12-19  Robert Jordan  <robertj@gmx.net>
12084
12085         * mini-x86: enable the code to return small structures in
12086         registers for FreeBSD as well. Fixes bug #80278.
12087         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
12088
12089 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12090
12091         * mini-x86.c: align the stack when calling the profiler
12092         function instrumenting the prolog (on OSX).
12093
12094 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12095
12096         * mini.c: emit a break opcode where Debugger.Break () is called.
12097
12098 2006-12-13  Miguel de Icaza  <miguel@novell.com>
12099
12100         * mini.c (mono_method_to_ir): Provide useful information on this
12101         assert, to prevent others from debugging like I did.
12102
12103 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12104
12105         * mini.c: enable code which was incorrectly commented
12106         (bug #80235).
12107
12108 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12109
12110         * mini-x86.c: enable on OSX, too, the code to return small
12111         structures in registers.
12112
12113 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12114
12115         * mini-x86.c: remove the use of the dynamic code manager here, too.
12116
12117 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12118
12119         * mini.h, debug-debugger.c, tramp-*.c: fixed 
12120         mono_debugger_create_notification_function() to use
12121         mono_global_codeman_reserve () instead of a dynamic code manager.
12122
12123 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
12124
12125         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
12126         ves_array_element_address() jit icall and use a generated
12127         managed method instead (which is about 4 times faster for a rank 3
12128         array access).
12129
12130 2006-11-29  Mark Mason  <mason@broadcom.com>
12131
12132         * basic-calls.cs: additional tests for passing
12133         structures as function arguments.
12134
12135 2006-11-29  Mark Mason  <mason@broadcom.com>
12136
12137         * mini-mips.h: disable custom exception handling
12138         * mini-mips.c: throw/rethrow should use jalr to call
12139         exception stubs.  Fixed bug with passing structures
12140         by value. More support for tracing floating point
12141         functions.
12142
12143 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12144
12145         * mini.c: fixed typo in the soft-float ldind.r4 handling
12146         (bug #80086).
12147
12148 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12149
12150         * mini.c, mini.h, driver.c: added --runtime command line
12151         option to select a different runtime than the autodetected one.
12152         * jit.h: added API for embedders to initialize with a specific
12153         runtime version.
12154
12155 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12156
12157         * mini.c: handle also boxing of r4 values (bug #80024).
12158
12159 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12160
12161         * mini-ppc.c: force indirect calls until we reserve
12162         enough address space for all the generated code.
12163
12164 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
12165
12166         * exceptions-arm.c: workaround bugs in the libc definition
12167         of struct ucontext.
12168
12169 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12170
12171         * inssel.brg: fixes from me and Mark Mason.
12172
12173 2006-11-23  Dick Porter  <dick@ximian.com>
12174
12175         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
12176         semaphore display now we've fixed the initial value
12177
12178 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12179
12180         * inssel.brg: partially revert the last change to fix the build.
12181
12182 2006-11-21  Mark Mason  <mason@broadcom.com>
12183
12184         * inssel.brg: Add and use compare-and-branch macros to support
12185         architectures that do not have condition code registers (ie. MIPS).
12186         * *-mips.{c,brg,md}: Fix copyright statements
12187
12188 2006-11-20  Mark Mason  <mason@broadcom.com>
12189
12190         * Makefile.am: remove mini-codegen.c from list of MIPS sources
12191         * mini.c: Allow GET_CONTEXT to be specified by the arch port
12192         * mini.h: Added declaration for mono_print_ins()
12193         * mini-codegen.c: added ins_spec initializer for MIPS
12194         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
12195         vreg to be virtual and hreg to be non-virtual.
12196         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
12197         is not yet working/implemented correctly.
12198         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
12199         non-static, fixup calls to print_ins() from other parts in the file.
12200
12201 2006-11-20  Mark Mason  <mason@broadcom.com>
12202
12203         * basic-calls.cs: added tests for passing structures as arguments
12204         to calls.
12205
12206 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12207
12208         * inssel-long32.brg: optimize signed division by power of two.
12209
12210 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
12211
12212         * mini-arm.c: added support for interworking with thumb code
12213         (mono must be still be built using the ARM instruction encoding).
12214
12215 2006-11-19  Miguel de Icaza  <miguel@novell.com>
12216
12217         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
12218         verifier has different rules for it.   Fixes a few verifier issues
12219         in the test suite.
12220
12221         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
12222         at the end, so people know what happened.
12223
12224 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12225
12226         * brach-opts.c: in optimize_exception_target() make sure we
12227         are in a catch clause (fixes bug #79871).
12228
12229 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12230
12231         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
12232         more soft-float support fixes.
12233
12234 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
12235
12236         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
12237         that are passed half on the stack and half in registers.
12238
12239 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
12240
12241         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
12242         more mips integration work from Mark E Mason 
12243         <mark.e.mason@broadcom.com>.
12244
12245 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12246
12247         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
12248         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
12249         tramp-mips.c: added sources for the mips port, not
12250         integrated in the build yet. Contributed by
12251         Mark E Mason <mark.e.mason@broadcom.com>.
12252
12253 2006-11-14  Neale Ferguson <neale@sinenomine.net>
12254
12255         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
12256
12257 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12258
12259         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
12260         put the soft-float rules in its own file since it seems to
12261         break s390 compilation.
12262
12263 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12264
12265         * mini-arm.c: fixed wrnings.
12266
12267 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
12268
12269         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
12270         inssel-arm.brg: ARM support for soft-float.
12271
12272 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12273
12274         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
12275         loads and stores of 32 bit fp values.
12276
12277 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
12278
12279         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
12280
12281         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
12282         works. Fixes #79852 and #79463.
12283
12284 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12285
12286         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
12287         more soft-float support WIP and fixes.
12288
12289 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
12290
12291         * mini-arm.c: some VFP updates.
12292
12293 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12294
12295         * mini-exceptions.c: 0 is a valid local var offset in some
12296         architectures, don't assert (bug #78508).
12297
12298 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
12299
12300         * exceptions-arm.c: fixed off by one error in stack walk code.
12301
12302 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12303
12304         * mini.h, mini.c: more precise tracking of type load exceptions.
12305
12306 2006-11-03  Robert Jordan  <robertj@gmx.net>
12307
12308         * Makefile.am: [WIN32] Add monow.exe target.
12309         * driver.c: [WIN32] Don't detach the console when debugging.
12310         Fixes bug #79797.
12311         
12312 2006-10-30  Miguel de Icaza  <miguel@novell.com>
12313
12314         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
12315
12316 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12317
12318         * aot-compiler.c (emit_method_info): Add a case missed earlier.
12319
12320         * driver.c (mini_regression): Fix --regression with AOT.
12321
12322         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
12323
12324 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
12325
12326         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
12327
12328         * mini-sparc.h: Don't use sigaction on sparc/linux.
12329
12330         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
12331
12332         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
12333
12334         * mini-exceptions.c: Add proper include files for getpid ().
12335
12336 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
12337
12338         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
12339         address instead of a MonoJitInfo* to avoid decoding the exception info for the
12340         method.
12341
12342         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
12343         name cache to reduce its size.
12344
12345         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
12346
12347 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12348
12349         * mini-x86.c: Save/restore the current LMF structure more efficiently using
12350         the mono_lmf TLS variable.
12351
12352         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12353         trampoline lmf frames.  
12354
12355         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12356
12357 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12360         the mono_lmf TLS variable.
12361
12362         * mini-exceptions.c: Access the LMF structure through accessors.
12363
12364         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12365         variable instead of in jit_tls->lmf.
12366
12367         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12368         
12369         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12370         trampoline lmf frames.
12371
12372         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12373
12374 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12375
12376        * mini.c trace.c mini-x86.c: Revert these too.
12377         
12378        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12379        signature change.
12380
12381 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12382
12383         * genmdesc.c: removed now dead code.
12384
12385 2006-10-09  Robert Jordan <robertj@gmx.net>
12386
12387         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12388
12389 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12390
12391         * mini.h: do not leave gaps in the opcode values.
12392
12393 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12394
12395         * jit-icalls.h: flag functions as internal here, too.
12396
12397 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12398
12399         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12400         functions with the internal attribute.
12401
12402 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12403
12404         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12405
12406 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12407
12408         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12409         for soft-float.
12410
12411 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12412
12413         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12414         tail calls as on other platforms.
12415
12416         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
12417
12418         * iltests.il: Add a few tailcall tests.
12419
12420 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12421
12422         * driver.c: fix loop for old compilers (bug #79521).
12423
12424 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12425
12426         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
12427
12428         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
12429
12430         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
12431         metadata without any code.
12432
12433         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
12434         more precise debugging information using gdb.
12435
12436 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12437
12438         * inssel-ia64.brg: Make the helper methods static.
12439
12440 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12441
12442         * inssel-x86.brg: make the helper methods static.
12443
12444 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
12445
12446         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
12447
12448 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12449
12450         * mini.c: updates for monoburg changes.
12451         * inssel.brg: make a few helper functions static as they should.
12452
12453 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12454
12455         * Makefile.am: Move mini-codegen.c to common_sources.
12456
12457 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12458
12459         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
12460         instructions.
12461         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
12462         mini-ppc.h: port to use the common local register allocator.
12463
12464 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * mini.h: Remove the comment too then.
12467
12468 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
12469
12470         * mini.h: put back backend.data which is to be used shortly and
12471         doesn't increase the size of MonoInst. If any 64 bit arch aligned
12472         pointers on 4 byte boundaries it'd have much bigger issues running
12473         and you can ifdef it out anyway.
12474
12475 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12476
12477         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
12478         MonoInst size by 4 bytes on 64 bit machines.
12479
12480 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12481
12482         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
12483         replacement with more meaningful field names. Arch maintainers, please
12484         check the assigned names are good enough for your arch.
12485
12486 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
12489         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
12490
12491 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12492
12493         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
12494         relocations and memory requirements, put the optimization flags
12495         definitions in their own file.
12496
12497 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
12498
12499         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
12500
12501         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
12502
12503 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
12504
12505         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
12506
12507 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
12508
12509         * inssel.brg: use the correct function to get the size of an item
12510         in an array, given an element class.
12511         * aot-compiler.c: do not access class->class_size directly.
12512
12513 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12514
12515         * mini.h, debug-mini.c: added a debugging function to print
12516         info about local variables and arguments in a jitted method.
12517
12518 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
12519
12520         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12521
12522         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
12523
12524 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12525
12526         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
12527         inner and outer loops when passing vtypes.
12528
12529 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
12530
12531         * mini-ppc.c: take into account the cpu errata for cache flushing
12532         which caused some random errors (bug #79381).
12533
12534 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12535
12536         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
12537         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
12538
12539 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12540
12541         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
12542         loaded.
12543
12544         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
12545         freebsd ports tree.
12546
12547         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
12548         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
12549
12550         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
12551         displacement.
12552
12553 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
12556
12557 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
12558
12559         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
12560         macro does not have to be changed during debugging.
12561
12562         * 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>.
12563
12564         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
12565
12566         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
12567         
12568         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
12569         MONO_ARCH_NO_EMULATE_MUL is defined.
12570
12571         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
12572
12573         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
12574
12575         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
12576
12577         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
12578         
12579 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12580
12581         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
12582         stuff to mini-exceptions.c where it is used.
12583
12584         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
12585         setup code, the real one is in mini-exceptions.c.
12586
12587         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
12588         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
12589         some changes from the freebsd ports tree.
12590
12591         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
12592         constants.
12593         
12594         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
12595
12596 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
12597
12598         * mini.c: on Linux, check for /proc to be mounted
12599         (bug# 79351, novell bug#201204).
12600
12601 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12602
12603         * mini.c: handle cases where pthread_attr_getstack() behaves
12604         incorrectly (bug #78096).
12605
12606 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
12607
12608         * mini-arm.c: support larger stack frames (bug #79272).
12609
12610 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12613
12614         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12615         tokens.
12616
12617         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12618         mono_class_from_name () to find a class from its name.
12619
12620         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12621
12622 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12623
12624         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12625
12626 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12627
12628         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12629
12630 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12631
12632         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12633         callinfo->trampoline.
12634
12635         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12636         fixes #79271.
12637         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12638         future.
12639
12640 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12641
12642         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12643
12644 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12645
12646         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12647         stats.method_trampolines, it is already done by the generic trampoline code.
12648
12649         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12650         
12651 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12652
12653         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12654
12655         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12656
12657         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12658
12659         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12660         
12661         * mini.c (print_jit_stats): Print new stats.
12662
12663         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12664
12665 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12666
12667         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12668         Address on two dimensional arrays. Fixes #78729.
12669
12670         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12671
12672         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12673         a method.
12674
12675         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12676
12677         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12678         #79130.
12679         
12680         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12681         a race condition.
12682         (mini_get_ldelema_ins): Ditto.
12683
12684 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12687         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12688         Fixes #79213.
12689
12690 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12691
12692         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12693         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12694
12695         * exceptions-s390x.c: Cosmetic change.
12696
12697         * tramp-s390.c: Fix warning.
12698
12699         * cpu-s390.md: Correct length of mul_imm.
12700
12701 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12702
12703         * aot-compiler.c: added binary writer with ELF backend
12704         implementation (only on Linux/x86 for now).
12705
12706 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * Makefile.am: Don't run net 2.0 AOT tests.
12709
12710         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12711         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12712
12713         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12714
12715 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12716
12717         * aot-compiler.c: simplified and refactored the asm-writing code
12718         to allow different backends.
12719
12720 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12721
12722         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12723
12724         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12725         little. Share patches of type TYPE_FROM_HANDLE as well.
12726
12727         * mini.c (mono_patch_info_equal): New helper function.
12728         (mono_patch_info_hash): Ditto.
12729
12730         * aot-compiler.c (emit_method_code): Fix s390 build.
12731
12732         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12733         is not handled because it is stored as a flag and not as a type ctor. Fixes
12734         #79016.
12735
12736 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * aot-compiler.c: Fix computation of GOT slot statistics.
12739         
12740         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12741         Also remove support for not PIC AOT.
12742
12743         * mini.h: Bump AOT file format version.
12744
12745         * objects.cs: Add a test for #78990.
12746
12747         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12748         (peter.dettman@iinet.net.au). Fixes #79087.
12749
12750         * basic-long.cs: Add a test for the above.
12751
12752 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12753
12754         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12755         
12756         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12757         code somewhat.
12758
12759 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12760
12761         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12762         exceptions.
12763
12764 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12765
12766         * mini.c: Don't verify COM proxy invoke calls
12767         
12768
12769 2006-08-10  Dick Porter  <dick@ximian.com>
12770
12771         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12772         which process is holding semaphores locked.
12773
12774 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12775
12776         * mini-ia64.c mini-amd64.c: Fix #79027.
12777
12778         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12779
12780         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12781
12782         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12783         implicit arguments in a vararg call. Fixes #79027.
12784
12785 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12786
12787         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12788         (mono_get_array_new_va_signature): Ditto.
12789
12790 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12791
12792         * aot-runtime.c: Call init_plt lazily.
12793
12794         * inssel-long.brg: Fix unsigned long->int conversion.
12795
12796         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12797
12798         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12799         that most data is now in the .rss/.data section.
12800
12801 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12804
12805         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12806
12807         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12808
12809         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12810
12811         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12812         virtual call. Fixes #79010.
12813
12814         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12815         and use the result as the this argument in the real call.
12816
12817         * generics.2.cs: Add a new test for #79010.
12818         
12819 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * mini-x86.c: Fix a warning.
12822
12823         * aot-compiler.c: Add a bunch of statistics.
12824
12825         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12826
12827 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12828
12829         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12830
12831 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * 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>.
12834
12835 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12836
12837         * mini.c (mono_method_to_ir): Obtain the original method in the
12838         CIL stream and use this to perform validation.
12839
12840         Fixed: #78816
12841
12842 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12843
12844         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12845         (mono_arch_call_opcode): Ditto.
12846
12847         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12848         #78826.
12849
12850         * mini.c (mono_patch_info_dup_mp): New helper function.
12851         
12852         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12853         compilation. Fixes #78827.
12854
12855 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12856
12857         * declsec.c: Use original security informations for
12858           MONO_WRAPPER_MANAGED_TO_MANAGED.
12859
12860 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12861
12862         * mini.c: Allow Com Interop methods/classes and
12863         don't verify COM wrapper calls
12864         
12865
12866 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12867
12868         * inssel-long32.brg: Fix long->i4 checked conversion.
12869
12870         * exceptions.cs: Add a test for the above.
12871
12872 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12873
12874         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12875
12876         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12877         leaks.
12878
12879         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12880         #78775.
12881
12882 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12883
12884         * mini.c: Fix solaris/x86 exception handling.
12885
12886         * Makefile.am: Get rid of $(ICU_LIBS).
12887
12888 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12889
12890         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12891         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12892         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12893
12894         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12895
12896         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12897         this function causes a SIGSEGV.
12898
12899 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12900
12901         * mini.c: Remove unused solaris/x86 includes.
12902
12903 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12904
12905         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12906
12907 2006-06-20  Jb Evain  <jbevain@gmail.com>
12908
12909         * cpu-g4.md: fix max length of start_handler instruction.
12910
12911 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12912         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12913
12914 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12915         * ssa.c: Fixed bug 78653 for SSA based deadce.
12916         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12917         MonoInst.flags, used in SSA based deadce.
12918         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12919         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12920
12921 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12922
12923         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12924         it can end up using non executable memory on ppc64 systems
12925         running ppc32 userspace (fix from Johannes Berg).
12926
12927 2006-06-14  Dick Porter  <dick@ximian.com>
12928
12929         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12930         4.1.1
12931
12932 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12933         * mini.c: Made so that inline is locally disabled if it would
12934         trigger a .cctor, because too many apps depend on this behavior
12935         (which seems to be also the one of the MS CLR).
12936
12937 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12940         No idea why this worked before.
12941
12942         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12943         which branch to outer exception clauses since they could skip the
12944         inner finally clauses. Fixes #78633.
12945
12946         * exceptions.cs: Add a test for the above.
12947
12948         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12949         Fixes #78629.
12950
12951         * iltests.il: Add a test for the above.
12952
12953 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12956         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12957
12958         * iltests.il: Add a test for the above.
12959
12960 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12963         
12964         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12965         methods as instrinsics.
12966
12967 2006-06-09  Wade Berrier <wberrier@novell.com>
12968
12969         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12970         (simple-cee-ops.h ssapre-mini-ops.h)
12971
12972 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12973
12974         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12975         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12976         instruction).
12977         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12978         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12979
12980 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12981
12982         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12983
12984 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12985
12986         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12987         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12988         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12989         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12990         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12991         of opcodes, so that bug 78549 should not happen again.
12992         * ssapre.c: Updated to use the renamed files.
12993
12994 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12995
12996         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12997         in OP_ATOMIC_EXCHANGE_I4.
12998
12999 2006-06-07  Wade Berrier <wberrier@novell.com>
13000
13001         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
13002         in mono_debugger_create_notification_function)
13003
13004 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
13005
13006         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
13007         
13008         * mini.c (type_from_stack_type): Disable some changes which do not
13009         seem to work.
13010
13011         * driver.c: Reenable opts.
13012
13013         * mini.h (MonoStackSlot): New structure to keep track of the verification state
13014         of the evaluation stack.
13015         
13016         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
13017         evaluation stack trace at entry to the bblock.
13018
13019         * mini.c (merge_stacks): New function to perform verification of stack merges.
13020         Turned off by default.
13021
13022         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
13023         STACK_MP.
13024         
13025 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
13026
13027         * local-propagation.c: Fixed bug 78549.
13028
13029 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
13030
13031         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
13032
13033 2006-06-02  Miguel de Icaza  <miguel@novell.com>
13034
13035         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
13036         tramp-arm.c, tramp-ia64.c
13037         (mono_debugger_create_notification_function): Update signature to
13038         new signature and use new protocol for creating the notification
13039         function.  
13040
13041         Should fix the build.
13042
13043 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
13044
13045         * exceptions-ppc.c (mono_jit_walk_stack)
13046         (ves_icall_get_frame_info): Fix the build
13047
13048 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13049
13050         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
13051
13052 2006-05-31  Raja R Harinath  <rharinath@novell.com>
13053
13054         * il2tests.2.il: New file for generics CIL tests.  Add test for
13055         #78019.
13056         * Makefile.am: Update.
13057
13058         Fix #78019
13059         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
13060         to nullable types.
13061
13062 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
13063
13064         * aliasing.c: Fixed bug 78311.
13065
13066 2006-05-29  Martin Baulig  <martin@ximian.com>
13067
13068         * mini-exceptions.c (mono_find_jit_info): When computing the
13069         native offset, check whether we're actually inside the method's
13070         code; call mono_debug_print_stack_frame() to format the frame.
13071         (ves_icall_System_Exception_get_trace): Call
13072         mono_debug_print_stack_frame() to format the stack frame.
13073         (ves_icall_get_trace): Update to the new debugging API.
13074         (mono_jit_walk_stack_from_ctx): Likewise.
13075         (ves_icall_get_frame_info): Likewise.
13076
13077         * mini.c (get_method_from_ip): Use the new debugging API.
13078         (mono_print_method_from_ip): Likewise.
13079
13080         * exceptions-ppc.c
13081         (mono_jit_walk_stack): Use the new debugging API.
13082         (ves_icall_get_frame_info): Likewise.   
13083
13084 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13085
13086         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
13087
13088 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
13089
13090         * mini.c: Added "limitator" to inline for debugging.
13091
13092 2006-05-24  Martin Baulig  <martin@ximian.com>
13093
13094         * debug-debugger.c (mono_debugger_init): Create a private,
13095         malloc()-based code manager for the notification function and
13096         intentionally leak it on exit.  This fixes the crash-on-exit race
13097         condition.
13098
13099         * tramp-amd64.c
13100         (mono_debugger_create_notification_function): Added
13101         `MonoCodeManager *' argument.
13102
13103         * tramp-x86.c
13104         (mono_debugger_create_notification_function): Added
13105         `MonoCodeManager *' argument.
13106
13107 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
13108
13109         * aliasing.c: Fixed 64 bit issue.
13110         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13111         default since all known bugs are fixed (one more time!).
13112
13113 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13114
13115         * mini.c: write barrier support.
13116
13117 2006-05-23  Martin Baulig  <martin@ximian.com>
13118
13119         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
13120         check at the top of the file.
13121
13122 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
13123
13124         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
13125         reverting changes without reason and without changelog entries.
13126
13127 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13128
13129         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
13130         to a few opcodes. Fixes #78439.
13131
13132         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
13133         consistency with other archs.
13134
13135         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
13136
13137 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13138
13139         * debug-debugger.c: fix the build.
13140
13141 2006-05-17  Martin Baulig  <martin@ximian.com>
13142
13143         * debug-debugger.c
13144         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
13145         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
13146         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
13147         (debugger_attach): Call GC_mono_debugger_add_all_threads().
13148
13149 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
13152
13153 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13154
13155         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
13156         MONO_TYPE_GENERICINST.
13157         
13158         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
13159         MONO_TYPE_GENERICINST.
13160
13161 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13162
13163         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
13164         #78325.
13165
13166 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
13167
13168         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
13169         mempool.
13170         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
13171
13172 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13173
13174         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
13175         mono_trace_cleanup ().
13176
13177         * iltests.il: Fix problem with the newly added test.
13178
13179         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
13180         due to register constraints, free up the previous hreg. Fixes #78314.
13181
13182         * iltests.il: Add new test for #78314.  
13183
13184         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
13185         Interlocked.Add. Fixes #78312.
13186
13187         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
13188         
13189 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * inssel.brg (mini_emit_virtual_call): Fix a warning.
13192
13193 2006-05-05  Martin Baulig  <martin@ximian.com>
13194
13195         * debug-mini.c (mono_debug_open_block): New method.
13196
13197         * mini-amd64.c
13198         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13199         the beginning of each basic block.
13200
13201         * mini-x86.c
13202         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13203         the beginning of each basic block.
13204
13205 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13206
13207         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13208         default until I understand why they break the build on amd64.
13209
13210 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * mini.c (mini_cleanup): Call mono_cleanup ().
13213
13214         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
13215         errors.
13216
13217 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13218
13219         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
13220         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13221         default since all known bugs are fixed, and I cannot reproduce bug
13222         77944... I'm asking Matt Hargett to test again after this commit.
13223
13224 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
13225
13226         * mini-codegen.c: Fixed typo that thrashed inline.
13227
13228 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
13229
13230         * dominators.c (compute_dominators): Avoid using a worklist since
13231         it is not correct in some cases. Instead, iterate over all bblocks as
13232         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
13233
13234 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13235
13236         * mini.c (mono_jit_compile_method_inner): Use
13237         mono_prepare_exception_from_error that resets the value
13238         internally.
13239
13240 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13241
13242         * mini.c: Move the mini_loader_error_to_exception to metadata. 
13243         
13244 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13245
13246         * aliasing.c: Fixed bug 78210.
13247
13248 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13249
13250         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13251         default until all their problems (or the ones they trigger) are fixed.
13252
13253 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
13256         
13257         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
13258         as loaded only after resolving patches since that could invoke the same method.
13259
13260         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
13261
13262         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
13263         functions.
13264
13265         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
13266         AOT loader.
13267
13268         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
13269         stack.
13270
13271         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
13272         made from AOT code through the PLT table.
13273
13274         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
13275         holding the plt offset when a call is made to the aot plt trampoline.
13276         
13277 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13278
13279         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
13280         amd64 AOT support.
13281
13282         * Makefile.am (common_sources): Fix build breakage.
13283
13284         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
13285         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
13286         intra-assembly calls if possible.
13287         
13288         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
13289
13290         * mini-trampolines.c: Handle PLT entries.
13291
13292         * mini.c: Avoid creating a GOT var for calls.
13293
13294         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
13295         from mscorlib code.
13296
13297         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
13298         from mscorlib code.
13299
13300         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
13301         AOT code.       
13302
13303         * mini.h: Bump AOT file format version.
13304         
13305         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
13306         covers more cases.
13307
13308 2006-04-25  Martin Baulig  <martin@ximian.com>
13309
13310         * driver.c: Disable copyprop, consprop and inline when running
13311         inside the debugger.
13312
13313 2006-04-25  Martin Baulig  <martin@ximian.com>
13314
13315         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
13316         with `get_current_thread' and added `detach'.
13317         (MonoDebuggerMetadataInfo): Added `thread_size',
13318         `thread_tid_offset', `thread_stack_ptr_offset' and
13319         `thread_end_stack_offset'.
13320
13321 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
13324         aot-runtime.c.
13325
13326         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
13327         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
13328
13329         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
13330
13331         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
13332
13333         * aot.c: Add support for ADJUSTED_IID.  
13334
13335 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * aot.c (emit_method_order): Don't align method_order_end.
13338
13339         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
13340         the interface ID changes.
13341
13342 2006-04-21  Dick Porter  <dick@ximian.com>
13343
13344         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
13345         cleaning up a thread.  Fixes the new part of bug 77470.
13346
13347 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
13348
13349         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
13350         to managed wrapper.
13351                      
13352 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13353
13354         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13355         
13356         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13357         SIGSEGV. Fixes #78072.
13358
13359         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13360         unregister our SIGABRT handler.
13361
13362 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13363
13364         * mini.c: Disabled inline where it can alter the call stack in a
13365         way visible from managed code.
13366         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13367         default.
13368
13369 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13372         on other platforms. Fixes #78089.
13373
13374 2006-04-13  Martin Baulig  <martin@ximian.com>
13375
13376         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13377         determine whether we're inside the debugger.
13378
13379         * debug-debugger.h
13380         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13381
13382 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13385         handler clauses. Fixes #78024.
13386
13387         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13388         in the CALL_MEMBASE opcodes. Fixes #78088.
13389         (mono_arch_get_vcall_slot_addr): Ditto.
13390
13391 2006-04-10  Martin Baulig  <martin@ximian.com>
13392
13393         * debug-debugger.c: The thread handling code has now been moved
13394         into ../metadata/threads.c.
13395
13396 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13397
13398         * driver.c (mono_main): Fix --with-gc=none build.
13399
13400         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13401         (mono_spillvar_offset_float): Ditto.
13402         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13403         hreg, not when its !global, since on ia64, there is a third category: stacked
13404         registers.      
13405
13406 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13407
13408         * mini.c: set MonoInst->klass for load field address and a few other
13409         places.
13410
13411 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13414
13415 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13416
13417         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
13418         the branch opt changes.
13419
13420 2006-04-06  Dick Porter  <dick@ximian.com>
13421
13422         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
13423         
13424         * wapihandles.c (mini_wapi_seminfo): 
13425         * driver.c (mono_main): Add semaphore info option
13426
13427 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13428
13429         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
13430         branch optimization changes. Fixes #78009.
13431
13432 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13433
13434         * mini.c: ignore accessibility of methods in managed->native wrappers.
13435
13436 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13437
13438         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
13439         
13440         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
13441
13442 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * mini.c: Modify the branch optimizations to preserve the invariant that
13445         the entries inside the in_bb and out_bb arrays are unique.
13446         (mono_unlink_bblock): Avoid creation of new arrays.
13447
13448 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
13449
13450         * mini.c (mono_unlink_bblock): Fix regression caused by previous
13451         change (#77992).
13452
13453 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
13454
13455         * mini.c (optimize_branches): Remove the "optimizations" in
13456         the cbranch1/cbranch2 -> branch cases which were causing several
13457         problems in the past. Fixes #77986.
13458
13459 2006-03-31  Chris Toshok  <toshok@ximian.com>
13460
13461         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
13462         default optimizations :(
13463
13464 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13465
13466         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
13467         branch.
13468
13469 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
13470
13471         * local-propagation.c: Added comments to structs and removed
13472         "Mono" prefixes from local tree mover types.
13473
13474 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
13475
13476         * Makefile.am (arch_sources): Define this for each architecture so 
13477         libmono_la_SOURCES is defined in one place.
13478
13479 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13480
13481         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
13482         from handles/.
13483
13484 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
13485
13486         * driver.c: print the GC name supplied by configure.
13487
13488 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
13489
13490         * local-propagation.c: Added tree mover, and moved here all the
13491         local propagation code from mini.c
13492         * mini.c: Added support for treeprop, and moved all the local
13493         propagation code to local-propagation.c
13494         * mini.h: Added support for treeprop
13495         * driver.c: Added support for treeprop, enabled consprop, copyprop,
13496         treeprop, inline and deadce by default
13497         * Makefile.am: Added local-propagation.c
13498
13499 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
13500
13501         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
13502
13503 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
13504
13505         * debug-debugger.c: make it compile without the Boehm GC.
13506
13507 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13508
13509         * mini.c: fixed issue with mismatch when an icall is registered
13510         with multiple names but same address.
13511
13512 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13513
13514         * declsec.c, mini-exceptions.c: use write barrier to set reference
13515         fields of managed objects.
13516
13517 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13518
13519         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
13520         (can_access_internals): Fix a warning.
13521
13522         * mini.c (print_method_from_ip): Rename this to 
13523         mono_print_method_from_ip so it gets exported.
13524
13525         * trace.c: Deal with strings inside StringBuilder's containing garbage
13526         and fix memory leaks. Fixes #77848.
13527
13528 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13529
13530         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
13531         fixes #77787.
13532
13533 2006-03-16 Neale Ferguson <neale@sinenomine.net>
13534         
13535         * mini-s390.c: Remove OP_X86_TEST_NULL.
13536
13537 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13538
13539         * mini.c: use the correct GetHashCode() for the moving collector.
13540
13541 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
13542
13543         * liveness.c: Regalloc spill cost tuning.
13544
13545 2006-03-15 Neale Ferguson <neale@sinenomine.net>
13546         
13547         * mini-s390x.h: Correct S390_LONG macro.
13548
13549         * mini-s390x.c: Cleanup unused code.
13550
13551 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13552
13553         * jit-icalls.h: New file.
13554
13555         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
13556         icalls and include that instead of including jit-icalls.c.
13557
13558         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
13559         OP_X86 opcodes.
13560
13561 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
13562
13563         * mini.c: when checking for member accessibility, also check for
13564         friend assemblies and for explicit interface implementations.
13565
13566 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13567
13568         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
13569
13570         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
13571
13572         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13573         common cases are done first.    
13574
13575         * mini-ops.h: Only define platform specific opcodes on the given platform.
13576
13577         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
13578         branch.
13579         
13580 2006-03-14  Martin Baulig  <martin@ximian.com>
13581
13582         Revert Paolo's change from r57348:
13583
13584         * mini.h: don't use gboolean for bitfields.
13585         * mini.c: verifier changes for fields and methods accessibility.
13586
13587 2006-03-13  Neale Ferguson <neale@sinenomine.net>
13588
13589         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
13590
13591         * mini-s390x.c: Fix conv_r_un.
13592
13593         * cpu-s390, cpu-s390x.md: Fix lengths.
13594
13595 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
13596
13597         * mini.c: nested types have access to all the nesting
13598         levels, not just the enclosing types.
13599
13600 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13601
13602         * mini.c: added a few more verification checks.
13603
13604 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
13605
13606         * liveness.c: Merge optimizations from the linear-il branch.
13607
13608 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13609
13610         * mini-ia64.c (emit_call): Add a comment.
13611
13612         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13613
13614         * tramp-ia64.c: Fix some warnings.
13615
13616 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13617
13618         * mini.h: don't use gboolean for bitfields.
13619         * mini.c: verifier changes for fields and methods accessibility.
13620
13621 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13624         lazy icall wrapper changes.
13625
13626         * dominators.c: Replace all the dominator algorithms with faster
13627         ones from the linear-il branch.
13628
13629         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13630         the mempool.
13631
13632         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13633         common cases are done first.
13634
13635         * mini-amd64.c: Fix some warnings.
13636
13637         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13638         from the mempool.
13639
13640         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13641         added code.
13642
13643         * mini.h: Add a missing prototype.
13644
13645 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13646
13647         * mini.c: Compile icall wrappers lazily.
13648
13649         * mini-codegen.c: Use printf instead of g_print since its much faster.
13650
13651         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13652         function.
13653
13654         * mini.c (optimize_branches): Cache the negative result from 
13655         remove_block_if_useless ().
13656
13657         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13658         Also fix some bblock linking issues.
13659
13660         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13661         assembly files.
13662
13663         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13664
13665         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13666         accessed fields first, for better cache behavior.
13667         
13668 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13669
13670         * mini.c: speedup IList<T> array accesses.
13671
13672 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13673
13674         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13675         inline_costs counter. Fixes #77190.
13676
13677 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13678
13679         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13680         trace messages. Fixes #77706.
13681
13682 2006-03-04  Martin Baulig  <martin@ximian.com>
13683
13684         * tramp-amd64.c, tramp-x86.c
13685         (mono_debugger_create_notification_function): Use
13686         mono_global_codeman_reserve() to allocate a buffer at runtime and
13687         return it.
13688
13689         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13690
13691         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13692         notification function at runtime and then call `initialize' in the
13693         `MONO_DEBUGGER__debugger_info' vtable.
13694
13695 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13696
13697         * iltests.il: Fix a visibility problem.
13698
13699 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13700
13701         * driver.c, mini.c: add hooks for the counters API.
13702
13703 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13704
13705         * driver.c: show disabled options.
13706
13707 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13708
13709         * linear-scan.c: always use cost-driven selection.
13710
13711 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13712
13713         * jit-icalls.c (helper_compile_generic_method): Revert change from
13714         2006-02-24.
13715
13716 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13717
13718         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13719
13720 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13721
13722         * inssel.brg: style fixes, mostly to force the updated monoburg
13723         to run for people using svn.
13724
13725 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13726
13727         * mini.c: match monoburg changes.
13728
13729 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13730
13731         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13732         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13733         declaration in the header file.
13734
13735 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13736
13737         * helpers.c: reduce relocations and mem usage.
13738
13739 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13740
13741         * mini.h, mini-codegen.c: disable logging features if
13742         requested by configure.
13743
13744 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13745
13746         * mini.c: tiny verifier changes.
13747
13748 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13749
13750         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13751         cpu-pentium.md: stack alignment changes for osx/x86,
13752         partially from Geoff Norton <gnorton@customerdna.com>.
13753
13754 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13755
13756         * jit-icalls.c (helper_compile_generic_method): Update to changes
13757         in metadata/class.c.
13758
13759 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13760         
13761         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13762         
13763         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13764         interface calls with large offsets.
13765
13766 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13767
13768         * jit-icalls.c (helper_compile_generic_method): Document the
13769         special-case we depend on so that we can inflate the method twice
13770         with the same context with no bad side-effects.
13771
13772 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13773
13774         * mini-x86.c, mini-amd64.c: fix for case when xen support
13775         is disabled.
13776
13777 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13778
13779         * mini-x86.c, mini-amd64.c: generate code to access tls items
13780         in a faster way for Xen systems.
13781
13782 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13783
13784         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13785         updates and compilation fixes for the OSX/x86 port, mostly from
13786         Geoff Norton <gnorton@customerdna.com>.
13787
13788 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13789
13790         * inssel.brg: faster interface call implementation
13791         to sync with the interface_offsets MonoVTable changes.
13792
13793 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13794
13795         * mini.c: more verification checks.
13796
13797 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13798
13799         * mini.c: added a few more verification checks.
13800
13801 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13802
13803         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13804         facility on the processor and use it if available.
13805
13806 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13807
13808         * driver.c, aot.c, mini.c: throw exception if the IL code is
13809         invalid or unverifiable.
13810
13811 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13812
13813         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13814         m.StructField.
13815
13816 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13817
13818         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13819
13820 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13821
13822         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13823         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13824         handling of instantiated generic valuetypes.
13825
13826 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13827
13828         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13829         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13830         instead.
13831
13832         * generics.2.cs: Revert the nullable reftypes tests.
13833
13834 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13835
13836         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13837         using __builtin_frame_address (1) as it doesn't work in the presence
13838         of optimizations. Hopefully fixes #77273.
13839
13840         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13841         -> generics.cs change as it doesn't work with some automake versions.
13842
13843 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13844
13845         * mini.c: handle systems that sue a different way to
13846         retrieve the stack address of the current thread.
13847
13848 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13849
13850         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13851         it specially in the makefile.
13852
13853         * generics.2.cs: Add tests for nullable reference types.
13854
13855 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13856
13857         * mini.c: always handle the case when mono_jit_init()
13858         is called in a thread different from the main thread,
13859         confusing libgc (bug #77309).
13860
13861 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13862
13863         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13864
13865 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13866
13867         * mini.c: change optimize_branches () to use a single loop
13868         and introduce a new optimization to simplify some range checks.
13869
13870 2006-02-03  Martin Baulig  <martin@ximian.com>
13871
13872         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13873         and merged with debugger_thread_manager_add_thread().
13874         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13875         inform the debugger about the main thread.
13876
13877 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13878
13879         * basic.cs: Add test for div.un/rem.un constant folding.
13880
13881 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13882
13883         * cpu-s390x.md: correct int_xor_imm length
13884
13885 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13886
13887         * generics.2.cs: New test for #77442.
13888
13889         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13890         #77442.
13891
13892 2006-02-02  Martin Baulig  <martin@ximian.com>
13893
13894         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13895         <mono/metadata/mono-debug-debugger.h>   
13896
13897         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13898
13899 2006-02-02  Martin Baulig  <martin@ximian.com>
13900
13901         * debug-debugger.h: New header file for debug-debugger.c.
13902
13903         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13904         function is a separate thread anymore; add support for attaching.
13905
13906 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13907
13908         * tramp-x86.c: Fix a warning.
13909
13910 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13911
13912         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13913         on very large methods.
13914
13915         * aot.c (load_patch_info): Fix a warning.
13916
13917 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13918
13919         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13920         mini-ops.h: alu membase optimizations.
13921
13922 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13923
13924         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13925         to speedup StringBuilder.
13926
13927 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13928
13929         * dominators.c (mono_compute_natural_loops): Fix detection of
13930         loop body start blocks.
13931
13932         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13933
13934 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13935
13936         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13937         #75145.
13938
13939 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13940
13941         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13942
13943 2006-01-25  Martin Baulig  <martin@ximian.com>
13944
13945         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13946         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13947         started to cleanup this file a little bit.
13948
13949 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13950
13951         * mini.c: optimize a codepath frequently happening in generics code.
13952
13953 2006-01-23  Martin Baulig  <martin@ximian.com>
13954
13955         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13956
13957         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13958         functions directly.
13959
13960         * driver.c: debug-debugger.c is only available if
13961         `MONO_DEBUGGER_SUPPORTED' is defined.   
13962
13963 2006-01-23  Martin Baulig  <martin@ximian.com>
13964
13965         * debug-debugger.c: Only enable this on platforms where the Mono
13966         Debugger is working (x86 and x86_64).
13967
13968 2006-01-21  Martin Baulig  <martin@ximian.com>
13969
13970         The Mono Debugger is now using the normal `mono' instead of the
13971         `mono-debugger-mini-wrapper' when executing managed code.
13972
13973         * debug-debugger.c: New file; previously known as
13974         debugger/wrapper/wrapper.c.
13975
13976         * debug-mini.c (mono_init_debugger): Removed.
13977
13978         * driver.c (mono_main): Added new `--inside-mdb' command line
13979         argument which is used when running inside the debugger.
13980
13981 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13982
13983         * liveness.c (mono_analyze_liveness): Remove some unused data
13984         structures.
13985
13986 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13989
13990 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13991
13992         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13993         depends on implementation details of monobitset.
13994
13995         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13996         Fixes #77271.
13997
13998 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13999
14000         * liveness.c: Update after monobitset changes.
14001
14002 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
14005
14006 2006-01-11 Neale Ferguson <neale@sinenomine.net>
14007
14008         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
14009
14010         * mini-s390x.c: Remove warning messages.
14011
14012 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14013
14014         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
14015
14016 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
14017
14018         * generics.2.cs: Add ldelem/stelem_any test.
14019
14020 2006-01-10 Neale Ferguson <neale@sinenomine.net>
14021
14022         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
14023
14024 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
14025
14026         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
14027         
14028 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
14029
14030         * generics.2.cs: Reenable vtype tests.
14031
14032         * inssel-x86.brg: Remove an icorrect valuetype rule.
14033
14034 2006-01-06 Neale Ferguson <neale@sinenomine.net>
14035
14036         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
14037         initial support for OP_ABS.
14038
14039 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14040
14041         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
14042
14043 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14044
14045         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
14046         conversion and implement LADD/LSUB.
14047
14048         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
14049         architectures.
14050
14051 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14052
14053         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
14054
14055         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
14056         architectures.
14057
14058 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14059
14060         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
14061         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
14062         (stack walk problem).
14063
14064 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
14065
14066         * aot.c (mono_aot_load_method): Fix a warning.
14067
14068 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14069
14070         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
14071
14072 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * iltests.il: Add test for #77148.
14075
14076         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
14077         #77148.
14078
14079 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14080
14081         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
14082
14083 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14084
14085         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
14086         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
14087
14088         * basic-long.cs: Add lconv-to-r4/r8 tests.
14089
14090 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14091
14092         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
14093
14094         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
14095         here as on other archs.
14096
14097 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14098
14099         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
14100
14101 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14102
14103         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
14104         
14105         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
14106
14107         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
14108         instrument_prolog; Add memory_barrier instruction.
14109
14110 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
14111
14112         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
14113
14114 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
14115
14116         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
14117
14118         * aliasing.c inssel.brg: Fix warnings.
14119
14120         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
14121         could skip initialization of some parts of memory.
14122
14123         * mini.c mini-ia64.c: Fix warnings.
14124
14125         * inssel-sparc.brg: Add an implementation of lneg which actually works.
14126
14127 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14128
14129         * aliasing.c (mono_build_aliasing_information): Add a workaround for
14130         a crash seen on sparc.
14131
14132         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
14133         
14134         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
14135
14136 2005-12-21 Neale Ferguson <neale@sinenomine.net>
14137
14138         * mini-ops.h: Add s390_backchain instruction
14139
14140         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
14141
14142         * cpu-s390.md: Add s390_backchain instruction
14143
14144         * mini-s390.c: Significant ABI changes
14145
14146         * mini-s390.h: Cater for zero length structures
14147
14148 2005-12-20 Neale Ferguson <neale@sinenomine.net>
14149
14150         * mini-s390.c: ABI fixes
14151
14152         * inssel-s390.brg: Remove debug statements
14153
14154         * cpu-s390.md: Fix length of ATOMIC_xx operations
14155
14156 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
14157
14158         * basic-float.cs: Add float<->long conversion tests.
14159
14160 2005-12-16 Neale Ferguson <neale@sinenomine.net>
14161
14162         * mini-s390.c: Fix LOCALLOC processing.
14163
14164         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
14165
14166 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14167
14168         * iltests.il: Add tests for some opcodes not covered by the other
14169         tests.
14170
14171 2005-12-15 Neale Ferguson <neale@sinenomine.net>
14172
14173         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
14174         register loading for Tail processing; Correct trace output.
14175
14176         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
14177
14178         * cpu-s390.md: Correct size of jmp instruction. 
14179
14180 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14181
14182         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
14183
14184 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14185
14186         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
14187           Bring s390 up to current level.
14188
14189 2005-12-12  Zltan Varga  <vargaz@gmail.com>
14190
14191         * generics.2.cs: Disable the newly added tests as they do not work yet.
14192         
14193         * generics.2.cs: Add valuetype tests.
14194
14195 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * basic-long.cs: Add i4->u8 test.
14198
14199         * objects.cs: Add tests for JIT intrinsic.
14200
14201         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
14202         optimizations lost by a mistake.
14203
14204 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * basic-long.cs: Remove a test moved to objects.cs.
14207
14208         * arrays.cs: Add more array tests.
14209
14210 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14211
14212         * arrays.cs: Add new tests for multi-dimensional arrays.
14213
14214 2005-12-06  Raja R Harinath  <rharinath@novell.com>
14215
14216         * Makefile.am (test_sources2): Add generics.2.cs.
14217         (EXTRA_DIST): Add test_sources2.
14218
14219 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14220
14221         Support for boxing and unboxing nullable types as well as the
14222         isinst operation on nullables, per the CLI ammendment.
14223
14224         * inssel.brg (CEE_ISINST): Special case for nullable
14225
14226         * mini.c (handle_unbox_nullable): new method
14227         (handle_box): Special case for nullable types
14228         (mono_method_to_ir): Call handle_unbox_nullable in correct
14229         places.
14230
14231         * generics.2.cs: New test suite
14232
14233         * Makefile.am: Support for regression tests with generics.
14234
14235 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
14236
14237         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
14238         allocated to registers. Fixes #76800.
14239
14240 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
14241
14242         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
14243
14244 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
14245
14246         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
14247         of platforms.
14248
14249 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
14252         objects.cs.
14253
14254         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
14255         
14256         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
14257 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
14258
14259         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
14260         single precision before storing to a single precision location.
14261
14262 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14263
14264         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
14265
14266 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
14269         correct files.
14270
14271         * basic.cs: Remove test_0_byte_compares test which was moved to
14272         objects.cs a long time ago.
14273
14274 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
14275
14276         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14277
14278 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
14279
14280         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
14281         handlers are called.
14282
14283         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
14284         throwing code.
14285
14286          * mini-ia64.c: Add support for the throw->branch exception 
14287         optimization.   
14288
14289         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
14290
14291 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14292
14293         * mini.c: Enabled "fastpath" deadce :-)
14294         
14295 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14296
14297         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
14298         alias analysis pass to support it.
14299         * mini.h: Likewise.
14300         * ssa.c: Likewise.
14301         * liveness.c: Likewise (liveness computation can use aliasing
14302         information to be more accurate).
14303         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
14304         moreover made so that "--compile-all" uses the given optimization
14305         flags and not the default ones.
14306         * aliasing.c: Alias analysis (new file).
14307         * aliasing.h: Likewise.
14308         * Makefile.am: added "aliasing.c" and "aliasing.h".
14309         
14310 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14311
14312         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
14313         OP_L opcodes.
14314
14315 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
14316
14317         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
14318         fp >= end_of_stack exit condition, as it is not needed, and it might
14319         become true for fp eliminated frames.
14320
14321 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14322
14323         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
14324         coded offsets.
14325
14326 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
14327
14328         * mini-arm.c: fixed alignment of doubles/longs to match
14329         the C ABI (bug #76635).
14330
14331 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
14332
14333         * aot.c: fix compilation with --enable-minimal=aot.
14334
14335 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
14336
14337         * mini-arm.c: fixed compatibility with the new
14338         floating point emulator package for compares.
14339
14340 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
14341
14342         * mini.c : reverted sig->pinvoke changes (r51396-51397).
14343
14344 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
14345
14346         * mini-exceptions.c (print_stack_frame): Output to stderr.
14347         (mono_handle_native_sigsegv): Ditto.
14348
14349 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14350
14351         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
14352         OP_LCONV_TO_OVF_I implementation.
14353
14354         * mini-amd64.c: Add support for the throw->branch exception 
14355         optimization.
14356
14357         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14358         when the catch clause catches a more general exception, i.e. Object.
14359
14360 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14361
14362         * cpu-ia64.md: Remove unused opcodes.
14363
14364         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14365         specific defines for architectures defining USE_SIGACTION.
14366
14367         * mini-ia64.c: Fix some warnings.
14368
14369         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14370         version seemed to skip a frame.
14371
14372 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14373
14374         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14375         only calls which are made to native code use this flag.
14376
14377 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14378
14379         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14380         varargs methods as well.
14381         
14382         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14383         which have save_lmf set. Reorganize methods prologs a bit.
14384
14385         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14386         debugger to the proper place.
14387
14388 2005-10-29  Martin Baulig  <martin@ximian.com>
14389
14390         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14391         when running inside the debugger until the debugger has support
14392         for it.
14393
14394 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14395
14396         * mini.h: Fix a warning.
14397
14398 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14399
14400         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14401         we expose publicly, this returns the string.
14402
14403 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14404
14405         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14406         with fp elimination.
14407
14408 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14409
14410         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14411         native stacktrace using the glibc 'backtrace' function if available.
14412
14413 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14414
14415         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
14416
14417         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
14418         handle SIGSEGVs received while in native code.
14419
14420         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
14421         code, call mono_handle_native_sigsegv which will abort the runtime
14422         after printing some diagnostics, instead of converting it into a
14423         confusing NullReferenceException.
14424
14425 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14426
14427         * cpu-pentium.md: Remove unused opcodes.
14428
14429 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
14430
14431         * mini-amd64.h (MonoLMF): Add rsp field.
14432
14433         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
14434         the lmf too.
14435
14436 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
14437
14438         * mini-codegen.c (get_register_spilling): Fix some warnings.
14439
14440 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
14441
14442         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
14443         elimination during exception handling. Enable fp elimination by
14444         default.
14445
14446         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
14447         elimination.
14448
14449 2005-10-16  Martin Baulig  <martin@ximian.com>
14450
14451         * mini-exceptions.c
14452         (mono_debugger_run_finally): New public method for the debugger.
14453
14454 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14455
14456         * debug-mini.c (mono_debug_init_method): Fix warning.
14457
14458         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
14459         the 'exname' parameter const to fix some warnings.
14460
14461 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
14462
14463         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
14464         introduced by the previous patch.
14465
14466 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
14467
14468         * basic-float.cs: Add test for precision of float arithmetic.
14469
14470         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
14471         when loading/storing single values from/to memory.
14472
14473         * mini.c (mono_jit_compile_method_with_opt): Create the function
14474         pointers in the correct domain.
14475
14476 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14477
14478         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
14479         introduced by previous patch.
14480         
14481         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
14482         when out_filter_idx is NULL.
14483
14484         * mini-exceptions.c: Don't run filter clauses twice during exception
14485         handling. Fixes #75755.
14486
14487 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
14488
14489         * aot.c: Add support for ldflda wrappers.
14490
14491         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
14492         #75902.
14493
14494 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
14495
14496         * mini.c, mini.h: do not consider exception handlers blocks when
14497         setting up interface variables.
14498
14499 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
14500
14501         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
14502
14503 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
14504
14505         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
14506         causes a regression.
14507
14508         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
14509
14510 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
14511
14512         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
14513         of the OP_P definitions.
14514
14515         * TODO: Add a proposal for dealing with the CEE/OP mess.
14516
14517         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
14518         optimizations from the x86 port.
14519
14520         * cpu-amd64.md: Ditto.
14521
14522         * basic.cs basic-long.cs: Add tests.
14523
14524 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
14525
14526         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
14527         Patrik Torstensson's implementation of my exception-handling
14528         optimization idea, when the exception object is not used
14529         (bug #62150).
14530
14531 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
14532
14533         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
14534         of the mul_imm optimizations from the old jit.
14535
14536 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
14537
14538         * mini.c, liveness.c: patch by Patrik Torstensson and
14539         Zoltan Varga to improve performance in methods with
14540         exception clauses.
14541
14542 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
14543
14544         * driver.c: Remove 'Globalization' entry from --version.
14545
14546 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
14549         there is a profiler interested in JIT events.
14550
14551         * aot.c: Load profile files produced by the AOT profiling module, and
14552         reorder methods based on the profiling info. Add a 'method_order' table
14553         to the AOT file to make mono_aot_find_jit_info work with the reordered
14554         methods.
14555
14556         * mini.h: Bump AOT file version info.
14557
14558 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
14559
14560         * mini-arm.h: work around what looks like a gcc bug when optimizations
14561         are enabled.
14562
14563 2005-09-28  Raja R Harinath  <rharinath@novell.com>
14564
14565         * Makefile.am (AM_CFLAGS): Don't use += to append inside
14566         conditionals.  Use ...
14567         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
14568
14569 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
14570
14571         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
14572         to determine the amount of memory to copy when passing valuetypes.
14573
14574         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
14575         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
14576
14577 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
14578
14579         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
14580         information about aot.
14581
14582 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
14583
14584         * *.c: Replace the use of {Enter,Leave}CriticalSection with
14585         macros. This will allow a deadlock debugger to easily be plugged
14586         in.
14587
14588 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
14589
14590         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
14591
14592 2005-09-27  Raja R Harinath  <rharinath@novell.com>
14593
14594         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
14595         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
14596         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
14597         ($(arch_built)) [CROSS_COMPILING]: Error out.
14598
14599 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * aot.c: Add support for the no_special_static flag for classes.
14602
14603 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14604
14605         * Reapply reverted patches.
14606
14607         * *: Revert r50174 as well.
14608
14609         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
14610
14611 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14612
14613         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14614
14615 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14616
14617         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14618         part of the SIG_HANDLER_SIGNATURE.  
14619
14620 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14621
14622         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14623         statistics.
14624
14625         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14626         introduced by previous patch.
14627
14628 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14629
14630         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14631         saved registers too.
14632
14633         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14634         upon the information returned by get_call_info ().
14635         
14636         * mini-x86.c (add_float): Fix stack size calculation.
14637         (mono_arch_call_opcode): Rewrite this so it works based up the
14638         information returned by get_call_info ().
14639         (mono_arch_get_this_vret_args): Ditto.
14640
14641 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14642
14643         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14644         in cinfo to determine the registers which need to be used.
14645
14646 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14647
14648         * driver.c (mono_main): Add --server and --desktop flags. 
14649
14650 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14651
14652         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14653         registers as global registers.
14654
14655         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14656         longer needed with the new register allocator.
14657
14658         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14659
14660         * cpu-ia64.md: Remove unused opcodes.
14661         
14662         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14663         
14664 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14665
14666         * cpu-amd64.md: Remove unused opcodes.
14667
14668         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14669         needed with the new register allocator.
14670
14671         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14672         reg-reg moves.
14673
14674 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14675
14676         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14677
14678 2005-09-16  Martin Baulig  <martin@ximian.com>
14679
14680         * exceptions-amd64.c
14681         (throw_exception): Don't call mono_debugger_throw_exception() if
14682         we're a rethrow - see the FIXME in the code.
14683
14684 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14685
14686         * mini.c (mono_init_exceptions): This only works on some architectures.
14687         
14688 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14689
14690         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14691         on ia64.
14692
14693         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14694
14695         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14696         now in mini-exceptions.c.
14697
14698 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14699
14700         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14701         now in mini-exceptions.c.
14702
14703 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14704
14705         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14706         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14707
14708         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14709         code into mini-exceptions.c. Add some assertions to it.
14710
14711 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14712
14713         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14714         (<software@solmersa.com>). Fix as errors on windows.
14715
14716 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14717
14718         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14719         method info into the LMF.
14720
14721 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14722         
14723         * mini-ia64.c: Add proper unwind info for method epilogs.
14724
14725         * exceptions-ia64.c: Add some code to help debugging.
14726         
14727         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14728
14729         * mini-exceptions.c: Fix warning.
14730
14731 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14732
14733         * mini.c: Really fix build.
14734
14735         * mini-x86.c mini-amd64.c: Fix build.
14736
14737 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14738
14739         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14740
14741         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14742         some Interlocked methods as intrinsics.
14743
14744         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14745         for Thread methods as well.
14746
14747         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14748
14749         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14750
14751         * mini-ia64.c mini-x86.c mini-amd64.c 
14752         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14753         OP_MEMORY_BARRIER.
14754         
14755         * mini.c (mono_init_exceptions): Fix build breakage.
14756
14757 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14758
14759         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14760         of instructions. Use the new ia64_unw_op macros for emitting unwind
14761         info.
14762
14763         * mini.c (mono_init_exceptions): Initialize exception handling
14764         related trampolines at startup.
14765
14766 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14767
14768         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14769
14770 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14771
14772         * mini.c: Handle type loading errors gracefully during compilation and
14773         throw the appropriate exception.
14774
14775 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14776
14777         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14778         for the mono binary.
14779
14780 2005-09-09  Martin Baulig  <martin@ximian.com>
14781
14782         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14783         the release.
14784
14785 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14786
14787         * mini-arm.h: use emulation for conv.r.un for the release.
14788
14789 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14790
14791         * mini-arm.c, objects.cs: more fixes and tests for them.
14792
14793 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14794
14795         * mini-arm.c: align structures to at least 4 bytes to be able
14796         to keep our current optimized memcpy.
14797
14798 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14799
14800         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14801
14802 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14803
14804         * mini.c: ignore SIGPIPE.
14805
14806 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14807
14808         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14809
14810         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14811
14812 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14813
14814         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14815
14816 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14817
14818         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14819         exception handling support.
14820         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14821         patch by Brian Koropoff <briank@marakicorp.com>).
14822
14823 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14824
14825         * mini.c: revert another 'optimization' which breaks when
14826         items on the eval stack need to be saved at a basic block end
14827         (bug #75940).
14828
14829 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14830
14831         * jit-icalls.c: for arrays, ensure we always provide
14832         lower bounds.
14833
14834 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14835
14836         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14837         
14838         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14839
14840 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14841
14842         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14843         arguments in their original register.
14844
14845 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14846
14847         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14848         memset/memcpy.
14849
14850         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14851         when ssapre is enabled.
14852
14853         * inssel-long.brg: Fix bug in previous patch.
14854
14855         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14856         multiplication by a constant.
14857
14858 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14859
14860         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14861         icc.
14862
14863         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14864         saving registers.
14865
14866 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14867
14868         * inssel-arm.brg: apply changes tested by Brian Koropoff
14869         <briank@marakicorp.com>.
14870
14871 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14872
14873         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14874         
14875 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14876
14877         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14878         to the same register if dreg is just a base register.
14879         (print_ins): Improve printing of membase opcodes.
14880
14881         * inssel-x86.brg: Add optimized ldind(reg) rules.
14882
14883         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14884
14885 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14886
14887         * mini.c: when running under valgrind, set the stack bottom for
14888         the GC at the actual approximate stack for the app (fixes running
14889         mono with valgrind).
14890
14891 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14892
14893         * mini.c: do no break at the first valuetype to init found
14894         (fixes bug #75791).
14895
14896 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14897
14898         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14899
14900 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14901
14902         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14903
14904 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14905
14906         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14907
14908 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14909
14910         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14911
14912         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14913         code.
14914
14915         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14916         code.
14917
14918         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14919         methods.
14920
14921 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14922
14923         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14924
14925 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14926
14927         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14928         in the tail recursion optimization.
14929
14930         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14931         debug info into the assembly file.
14932
14933         * iltests.il: Add test for filter regions.
14934
14935         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14936         initial stack of filter regions. Fixes #75755.
14937
14938 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14939
14940         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14941         stack requirements.
14942
14943 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14944
14945         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14946         the check for an already compiled method on non-ia64 platforms.
14947         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14948         proper domain.
14949
14950         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14951
14952         * inssel-x86.brg: Add some optimized call rules.
14953
14954 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14955
14956         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14957         method here.
14958
14959         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14960         mono_arch_patch_delegate_trampoline.
14961
14962         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14963
14964         * mini-trampolines.c: Fix build.
14965
14966         * mini-amd64.h: Add delegate trampolines.
14967
14968         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14969
14970         * inssel-amd64.brg: Add optimized call rules.
14971         
14972         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14973
14974         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14975
14976 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14977
14978         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14979         change.
14980
14981         * mini-ia64.c: Remove LMF fixmes.
14982
14983         * mini-ia64.h: Remove most fields from LMF.
14984
14985         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14986
14987         * mini-trampolines.c: Add support for IA64 function descriptors.
14988
14989         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14990         for IA64 function descriptors.
14991
14992 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14993
14994         * tramp-arm.c: patch the vtable for virtual calls. Added
14995         support code to register/unregister the LMF.
14996         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14997         more LMF work.
14998
14999 2005-08-19  Dick Porter  <dick@ximian.com>
15000
15001         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
15002         bit value if needed.
15003
15004 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15005
15006         * mini.c (mini_get_method): Move handling of wrapper data here.
15007
15008         * mini.c (mono_method_to_ir): Add support for dynamic methods.
15009
15010         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
15011         virtual.
15012
15013         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
15014         bblock->code does not remain empty.
15015
15016 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
15017
15018         * arrays.cs: Add regression test for #75832.
15019
15020         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
15021         rules. Fixes #75832.
15022
15023         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
15024         instruction scheduling.
15025
15026 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
15027
15028         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
15029
15030 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15031
15032         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
15033
15034         * mini-codegen.c: Fix VC build.
15035
15036         * cpu-pentium.md: Increase length of atomic_exhange_i4.
15037
15038 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15039
15040         * mini.h: fix signature for mono_register_opcode_emulation.
15041
15042 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
15043
15044         * mini.c: Get rid of most of the helper_sig_... constants using
15045         mono_create_icall_signature ().
15046
15047 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15048
15049         * jit-icalls.c (helper_ldstr): New helper function.
15050
15051         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
15052
15053         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
15054         throw, load the string using a helper call instead of creating a string object.
15055
15056         * aot.c: Update after LDSTR changes.
15057
15058         * mini.h: Bump AOT file version.
15059         
15060         * aot.c: Save class size info into the AOT file. Print more statistics during
15061         compilation.
15062
15063         * mini.h: Bump AOT file version.
15064
15065         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15066         ordering of disasm cases. Fixes #74957.
15067
15068 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
15069
15070         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
15071         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
15072         the generic code needed for the ARM port.
15073
15074 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
15075
15076         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
15077         inssel-arm.brg: more ARM features and fixes.
15078
15079 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
15080
15081         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
15082         ARM port work in progress.
15083
15084 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15085
15086         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
15087
15088         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
15089
15090         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
15091
15092         * inssel.brg (mini_emit_memset): Add support for unaligned access.
15093
15094         * *-ia64.*: Ongoing IA64 work.
15095         
15096         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
15097
15098 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15099
15100         * TODO: Remove out-of-data todo stuff.
15101
15102         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
15103         dead code.
15104
15105         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
15106
15107         * mini.h: Bump corlib version.
15108
15109 2005-07-27  Martin Baulig  <martin@ximian.com>
15110
15111         * mini-codegen.c
15112         (create_copy_ins): Added `const unsigned char *ip' argument; set
15113         `copy->cil_code' from it.
15114
15115 2005-07-27  Martin Baulig  <martin@ximian.com>
15116
15117         * mini-exceptions.c (mono_handle_exception): Don't call
15118         mono_debugger_handle_exception() for filters.
15119
15120 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
15121
15122         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
15123         as well.
15124
15125 2005-07-26  Martin Baulig  <martin@ximian.com>
15126
15127         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
15128
15129         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
15130         helper_compile_generic_method() if the method is actually virtual
15131         and non-final.
15132
15133 2005-07-26  Martin Baulig  <martin@ximian.com>
15134
15135         * mini.c
15136         (trampoline_code): Renamed to `mono_trampoline_code' and made it
15137         public; this is now accessed directly by the debugger.
15138         (mono_generic_trampoline_code): Removed.
15139
15140         * debug-mini.c
15141         (mono_debug_init_method): Also add interncalls and wrappers.
15142
15143 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
15144
15145         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
15146
15147 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15148
15149         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
15150
15151 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15152
15153         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
15154
15155 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15156
15157         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
15158         getting TLS offsets on AMD64 too.
15159
15160 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
15161
15162         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
15163
15164 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
15165
15166         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
15167         inssel-arm.brg, mini-arm.h: ARM port work in progress.
15168
15169 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15170
15171         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
15172
15173         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
15174         to mini.c.
15175
15176         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
15177         mono_sparc_is_virtual_call ().
15178         
15179         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
15180
15181         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
15182         trampoline parameters.
15183
15184         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
15185         
15186         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
15187         to mono_arch_get_vcall_slot_addr.
15188
15189         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
15190         trampoline code.
15191
15192         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
15193
15194 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15195
15196         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
15197
15198 2005-07-19  Martin Baulig  <martin@ximian.com>
15199
15200         * exceptions-amd64.c (throw_exception): Call
15201         mono_debugger_throw_exception() here like we're doing it on i386.
15202
15203 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15204
15205         * mini-ia64.c: Add optimized TLS access support.
15206
15207 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
15208
15209         * mini-exceptions.c: Ongoing IA64 work.
15210
15211         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
15212
15213         * mini.c: Use the default optimization set when embedding. Fixes
15214         #75194.
15215
15216 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
15217
15218         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
15219         of trampolines to a separate file.
15220
15221         * mini-trampolines.c: New file.
15222
15223         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
15224         separate file.
15225         
15226         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
15227         amd64/ia64 code.
15228
15229         * mini-codegen.c: Fix cygwin build.
15230
15231 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
15232
15233         * mini.c: Add some minor changes needed by the IA64 port.
15234
15235         * *-ia64.*: Ongoing IA64 work.
15236
15237 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
15238
15239         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
15240         trampolines into arch-independent and arch-dependent parts.
15241
15242         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
15243
15244 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
15245
15246         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
15247
15248         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
15249         the xp-regalloc-branch for amd64.
15250
15251         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
15252         xp-regalloc-branch for x86.
15253
15254 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15255
15256         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
15257
15258 2005-07-06  Martin Baulig  <martin@ximian.com>
15259
15260         * mini.c
15261         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
15262         (mono_jit_runtime_invoke): Likewise.
15263
15264 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15265
15266         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
15267         on x86 too.
15268         
15269         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
15270         without loading their metadata. Reorganize the file format so exception handling+
15271         debug info is kept separate from normal method info. Create MonoJitInfo 
15272         structures for methods lazily.
15273
15274         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
15275         loading metadata.
15276         (x86_class_init_trampoline): Patch AOT class init trampolines too.
15277
15278         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
15279
15280         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
15281         in AOT code.
15282
15283         * mini.h: Bump AOT file version.
15284
15285 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
15286
15287         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15288
15289 2005-07-01  Raja R Harinath  <rharinath@novell.com>
15290
15291         * Makefile.am (check-local): Call semdel-wrapper.
15292
15293 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
15294
15295         * mini-x86.c: Revert the last change as it seems to break the build..
15296
15297 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15298
15299         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15300         
15301         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
15302
15303 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
15304
15305         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
15306         outside of the macro, so strange stuff doesn't happen with gcc4
15307         (NEW_AOTCONST_TOKEN): Likewise.
15308
15309 2005-06-28  Martin Baulig  <martin@ximian.com>
15310
15311         * mini.c (mini_class_is_system_array): New static method; use this
15312         instead of `klass->parent == mono_defaults.array_class' everywhere
15313         since this also works for the new generic array class.
15314
15315 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
15316
15317         * inssel.brg: Remove warnings.
15318
15319 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
15320
15321         * mini-ia64.c: Ongoing IA64 work.
15322
15323         * basic-float.cs: Add float->i1 conversion test.
15324
15325         * iltests.il: Add conv.u4 test.
15326
15327 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
15328
15329         * inssel-long.brg: Fix bug caused by last change.
15330
15331 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
15332
15333         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
15334         BSDs.  Allows the x86 JIT to work on OSX86
15335
15336 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
15337
15338         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
15339         u4->i8 conversion.
15340
15341         * mini-ia64.c: Ongoing IA64 work.
15342
15343 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
15344
15345         * mini-ia64.c: Ongoing IA64 work.
15346
15347         * driver.c: Clean up jit_code_hash as well when using --regression.
15348
15349         * inssel-long.brg: Fix long->i4/u4 conversion rules.
15350
15351         * basic-long.cs: Add tests for long->u4 conversion.
15352
15353 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15354
15355         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15356         that we do not depend on undefined C behavior: the order stuff
15357         gets evaluated within an expression. Fixes mono when compiled on
15358         GCC 4.
15359
15360 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15361
15362         * *-ia64.*: Ongoing IA64 work.
15363
15364         * aot.c: Lower memory usage while loading AOT methods.
15365
15366         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15367
15368         * mini.h: Bump AOT file format version.
15369
15370 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15371
15372         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15373
15374 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15375
15376         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15377         not on callee assembly). Fixed some comments.
15378
15379 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15380
15381         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15382         it gets proper disassembly.
15383         (emit_method_info): Remove some dead code.
15384
15385         * mini.c (mini_method_compile): Allways allocate the GOT var in
15386         mono_method_to_ir for emulating opcodes.
15387
15388 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15389
15390         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15391         before freeing the code memory. Fixes #74990.
15392
15393         * objects.cs: Add regression test for #74992.
15394
15395         * liveness.c: Extend live ranges of arguments to the beginning of the
15396         method. Fixes #74992.
15397
15398         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15399         so it points into the faulting instruction.
15400
15401 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15402
15403         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15404
15405         * *-ia64.*: Ongoing IA64 work.
15406
15407         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15408
15409 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15410
15411         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15412
15413         * *-ia64.*: Ongoing IA64 work.
15414
15415 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
15416
15417         * basic-long.cs: Add tests for add/sub.ovf.
15418
15419         * basic.cs: Add tests for sub.ovf.
15420
15421         * *-ia64.*: Ongoing IA64 work.
15422
15423 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
15424
15425         * *-ia64.*: Ongoing IA64 work.
15426
15427         * basic.cs: Add conv.ovf.i4.un test.
15428
15429 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
15430
15431         * mini.c: (remove_block_if_useless) Fixed bug 75061.
15432         
15433 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15434
15435         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
15436
15437 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
15438
15439         * *-ia64.*: Ongoing IA64 work.
15440
15441 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15442
15443         * trace.[ch]:
15444         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
15445
15446 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
15447
15448         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
15449
15450 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
15451
15452         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
15453
15454         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
15455         of a call is callable by a near call.
15456
15457 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
15458
15459         * mini-ia64.c: Ongoing IA64 work.
15460
15461 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
15462
15463         * genmdesc.c: Make the generated array non-static.
15464
15465         * inssel-long.brg: Fix LSHR_IMM rule.
15466
15467         * *-ia64.*: Ongoing IA64 work.
15468
15469         * *-ia64.*: Ongoing IA64 work.
15470
15471 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15472
15473         * *-ia64.*: Ongoing IA64 work.
15474
15475         * *-ia64.*: Ongoing IA64 work.
15476         
15477         * mini-ia64.c: Ongoing IA64 work.
15478
15479         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
15480
15481 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15482
15483         * objects.cs basic-calls.cs: Move some tests to objects.cs.
15484         
15485         * objects.cs basic-long.cs: Move some tests to objects.cs.
15486
15487 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
15488
15489         * *-ia64.*: Ongoing IA64 work.
15490
15491         * iltests.il: Add a new test.
15492
15493         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
15494         newobj. Fixes #75042.
15495
15496 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
15497
15498         * *-ia64.*: Ongoing IA64 work.
15499         
15500         * *-ia64.*: Ongoing IA64 work.
15501         
15502         * *-ia64.*: Ongoing IA64 work.
15503
15504         * basic.cs objects.cs: Move tests accessing static variables as well.
15505
15506         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
15507
15508 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
15509
15510         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
15511
15512         * driver.c: Always print failed tests.
15513
15514         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
15515         frame pointer.
15516
15517         * *ia64*: Ongoing IA64 work.
15518
15519 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
15520
15521         * basic.cs: Add tests for add.ovf. Fix warnings.
15522
15523 2005-05-18  Miguel de Icaza  <miguel@novell.com>
15524
15525         * driver.c (mono_main): Avoid crash if no argument is passed to
15526         --break;  Do not use g_error, but f_printf.   And fix all other
15527         ocurrences of the same crash.
15528
15529 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
15530
15531         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
15532         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
15533         Fixes #74742.
15534
15535 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
15536
15537         * *-ia64.*: Add beginnings of IA64 backend.
15538
15539         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
15540
15541 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
15542
15543         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
15544         Fixes #74925.
15545
15546         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
15547
15548         * mini-amd64.c: Fix a warning.
15549
15550 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
15551
15552         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
15553         in float_neg. Fixes #74897.
15554
15555         * mini-amd64.c (emit_call): Fix another near call bug.
15556
15557 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
15558
15559         * declsec.c: Keep the appdomain information in the structure. Added a 
15560         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
15561         value gets overwritten).
15562         * declsec.h: Set the default MonoArray for the the stack to 6. Added
15563         an MonoAppDomain member to MonoSecurityFrame.
15564         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
15565         used in the stack walk. Now use a MonoArray which grow (double) when
15566         it gets full.
15567
15568 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
15569
15570         * mini.c: Re-enabled runtime cleanup, since running threads should
15571         now properly stop when exiting.
15572
15573 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
15574
15575         * mini-codegen.c: New file contaning the arch-independent local
15576         register allocator. Not used by any architectures yet.
15577
15578         * mini.h linear-scan.c: Merge some changes from the 
15579         mini-xp-local-regalloc branch.
15580
15581 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
15582
15583         * mini-amd64.c (emit_call): Fix calls to native functions when the
15584         runtime is compiled as a shared library. Fixes #74756.
15585
15586         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
15587         on a literal field. Fixes #74751.
15588
15589 2005-04-25  Raja R Harinath  <rharinath@novell.com>
15590
15591         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
15592
15593 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
15594
15595         * objects.cs: Add missing null casting test.
15596
15597 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
15598
15599         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
15600         in wrapper methods. Also rename 'address' variable to 'offset'.
15601
15602 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
15603
15604         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
15605         warnings.
15606         
15607         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
15608
15609         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
15610         work on windows.
15611
15612 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15613
15614         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15615
15616 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15617
15618         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15619         just the last bytes.
15620
15621 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15622
15623         * aot.c (mono_compile_assembly): Fix warning.
15624
15625         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15626         by the _MSC_VER stuff.
15627
15628 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15629
15630         * inssel-long.brg: Fix #74588.
15631
15632         * cpu-amd64.md: Fix #74591.
15633
15634         * iltests.il: Add new regression tests.
15635
15636 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15637
15638         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15639         valuetype.
15640
15641 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15642
15643         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15644
15645         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15646         from Bill Middleton <flashdict@gmail.com>.
15647
15648 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15649
15650         * arrays.cs: Add new regression test. Fix warnings.
15651
15652 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15653
15654         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15655         and leakage in CKFINITE.
15656
15657         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15658         this to a null op since it is called on amd64 too.
15659
15660         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15661
15662         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15663         body since this is not used on amd64.
15664         
15665         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15666
15667         * mini-amd64.c: Remove obsolete fixmes.
15668
15669         * mini.c (print_method_from_ip): Fix debugging support.
15670
15671 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15672
15673         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15674         so that expressions that don't give much gain are not reduced.
15675         * ssapre.h: Likewise.
15676
15677 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15678
15679         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15680
15681         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15682
15683         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15684
15685 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15686
15687         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15688
15689         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15690
15691 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15692
15693         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15694         stack touching.
15695
15696         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15697
15698         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15699
15700         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15701
15702         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15703         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15704
15705         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15706
15707         * mini-x86.c: Fix up stack overflow handling.   
15708
15709         * exceptions.cs: Add new regression test.
15710
15711 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15712
15713         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15714         mono_jit_thread_attach.
15715
15716         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15717
15718 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15719
15720         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15721         avoid calling constructors using callvirt.
15722
15723         * inssel.brg: Fix #74073.
15724
15725 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15726
15727         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15728         compilation with non-GCC compilers.
15729         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15730         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15731
15732 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15733
15734         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15735         klass->interface_offsets (will likely fix bug#74073).
15736
15737 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15738
15739         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15740
15741 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15742
15743         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15744         to amd64_div_reg_size ().
15745         
15746         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15747
15748 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15749
15750         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15751
15752 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15753
15754         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15755
15756 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15757
15758         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15759         
15760         * mini.c (mono_precompile_assembly): Load and precompile referenced
15761         assemblies as well. Fixes #74015.
15762
15763 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15764
15765         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15766
15767 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15768
15769         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15770         a lot of checks and (anyway) permissions cannot work until corlib is 
15771         loaded.
15772
15773 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15774
15775         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15776
15777 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15778
15779         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15780         calls (fixes bug#72824).
15781
15782 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15783
15784         * mini.c: fix tail recursion elimination (see test in bug#73936).
15785
15786 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15787
15788         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15789         some fp functions in sse2 mode.
15790
15791 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15792
15793         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15794
15795 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15796
15797         * mini.h mini.c: Add mono_get_jit_tls_key ().
15798
15799         * mini-x86.c: Enable fast TLS support on windows.
15800
15801 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15802
15803         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15804         * mini.c: Check for p/invoke method when generating code. If a
15805         p/invoke method, or it's class, isn't decorated with [Suppress
15806         UnmanagedCodeSecurity] then generate code to call System.Security.
15807         UnmanagedDemand (only if the security manager is active).
15808
15809 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15810
15811         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15812         last change as it seems to cause strange crashes.
15813         
15814 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15815
15816         * *.c: handle unsafe function pointers where needed.
15817
15818 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15819
15820         * mini.c (mono_jit_free_method): Remove the fixme too.
15821
15822 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15823
15824         * mini.c: As discussed, make the code actually free the delegate
15825         thunk now, to enable the debugging of delegate problems, use
15826         MONO_DEBUG=1 when running Mono. 
15827
15828         This takes also care of parts of the leaks as seen by Joe.
15829
15830 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15831
15832         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15833         thread_tls_offset calculation.
15834
15835 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15836
15837         * declsec.c: Reworked linkdemand checks for icall. The previous code
15838         was using the declaration code (untrusted) and didn't work as expected
15839         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15840         specific case.
15841
15842 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15843
15844         * iltests.il: Add new localloc test.
15845
15846         * mini-amd64.c: Handle large stack allocations the same way as on
15847         windows if stack overflow handling is working.
15848         
15849         * mini-amd64.c: Allocate the signal stack using mmap.
15850
15851         * mini.c (sigsegv_signal_handler): Fix reading of context.
15852
15853         * mini-exceptions.c: Fix up stack overflow handling.
15854
15855         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15856
15857         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15858
15859         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15860
15861         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15862
15863         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15864         tramp_init functions as they are no longer needed.
15865
15866 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15867
15868         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15869         
15870         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15871
15872         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15873         
15874         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15875         support that now.
15876
15877         * mini-ops.h: Add OP_LMUL_IMM.
15878
15879         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15880         long mul/div opcodes as intrinsic.
15881
15882         * mini-amd64.c (emit_call): Handle the case when the callee might be
15883         an AOT method.
15884
15885 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15886
15887         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15888         extra safe.
15889         
15890         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15891
15892         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15893
15894 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15895
15896         * mini.c (mono_codegen): Don't leak here, to help people running
15897         monogrind.
15898
15899 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15900
15901         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15902         conversions in sse2 mode.
15903
15904         * basic-float.cs: Add regression test.
15905         
15906         * mini-amd64.c: Reenable sse2.
15907
15908 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15909
15910         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15911
15912 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15913
15914         * driver.c: Copyright text should include 2005.
15915         
15916 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15917
15918         * cpu-amd64.md (load_membase): Fix more max lengths.
15919
15920 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15921
15922         * cpu-amd64.md (load_membase): Fix max length.
15923
15924         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15925
15926         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15927
15928         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15929         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15930
15931         * basic-float.cs: Add rounding regression test.
15932
15933         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15934
15935 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15936
15937         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15938         structures in registers for pinvoke wrappers.
15939
15940 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15941
15942         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15943
15944 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15945
15946         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15947         wrapper to mono_jit_thread_attach.
15948
15949         * mini.c (mini_jit_thread_attach): New jit icall.
15950
15951         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15952         native->managed wrappers.
15953
15954         * exceptions.cs: Add new regression test.
15955
15956         * mini.c (optimize_branches): Check regions in the cbranch to throw
15957         block case as well. Fixes #73242.
15958
15959 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15960
15961         * mini.c: thread safety fixes.
15962
15963 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15964
15965         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15966         patching stuff, since delegates use jump trampolines so there is
15967         no caller.
15968
15969         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15970         jump trampolines.
15971         
15972         * tramp-amd64.c: Fix build.
15973
15974         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15975         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15976
15977         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15978         Rename this to mono_arch....
15979         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15980
15981         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15982
15983         * mini-amd64.c (emit_call): If both the caller and the callee is
15984         guaranteed to have 32 bit addresses, emit a normal call.
15985
15986         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15987
15988         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15989         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15990         method_ptr inside delegates.
15991
15992 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15993
15994         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15995         invalidated. Fixes #73001.
15996
15997         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15998
15999         * mini-x86.c: Only use stdcall for pinvokes on windows.
16000
16001 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
16002
16003         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
16004         * mini-x86.c: remove unreliable __thread var offset detection,
16005         use the correct accessors and enable by default.
16006
16007 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
16008
16009         * mini.c (mono_jit_free_method): Fix memory leak.
16010
16011 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
16012
16013         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
16014
16015 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
16016
16017         * cpu-amd64.md: Fix lengths of atomic opcodes.
16018
16019 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
16020
16021         * driver.c: try to not imply using ICU is any good.
16022
16023 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
16024
16025         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
16026         functions as inline ops.
16027
16028         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
16029         some Interlocked functions as inline ops.
16030
16031         * mini.c (move_basic_block_to_end): Fix bug in last patch.
16032
16033         * mini.h (MonoBasicBlock): Reorganize fields a bit.
16034
16035         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
16036
16037         * mini.c: Add support for OP_NOT_TAKEN.
16038
16039         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
16040         structures in registers for pinvoke wrappers.
16041
16042         * mini-amd64.c: Fix warnings.
16043
16044 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
16045
16046         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
16047
16048         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
16049
16050         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
16051         address instead of loading the address from it.
16052
16053         * mini-x86.c: Add support for returning small structs in registers
16054         on Win32. Fixes part of #70864.
16055         
16056 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
16057
16058         * trace.c (get_token): Improve error checking.
16059
16060 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
16061
16062         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
16063
16064 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
16065  
16066         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
16067         it can be reused for MonoClass.
16068         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
16069         _LINKDEMAND.
16070
16071 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
16072
16073         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
16074         instead of a MonoReflectionMethod. The method information wasn't used
16075         when displaying SecurityException details (but will be now).
16076
16077 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
16078
16079         * Makefile.am : windows build fix.
16080
16081 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
16082
16083         * iltests.il: Add new regression test.
16084
16085         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
16086         #72522.
16087
16088 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
16089  
16090         * mini.c: Moved linkdemand check into helper function check_linkdemand
16091         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
16092         LDFTN, LDVIRTFTN).
16093
16094 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
16095
16096         * declsec.c: Added statistics counter for different kinds of 
16097         LinkDemands.
16098         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
16099         (and commented) declaration.
16100         * mini.c: Added statistics counter for security Demand code 
16101         generation. Added display of security statistics.
16102
16103 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
16104
16105         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
16106         Fix compilation errors under gcc-2.95.
16107
16108 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
16109
16110         * mini.c, driver.c: Use the new jit trampoline hashtable
16111
16112 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16113
16114         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
16115
16116 2005-02-11  Martin Baulig  <martin@ximian.com>
16117
16118         * debug-mini.c (mono_debug_close_method): Free the line number array.
16119
16120 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16121
16122         * aot.c: Break up large methods into smaller ones. Share GOT slots for
16123         icalls.
16124
16125         * mini.h: Bump AOT file format version. 
16126
16127 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
16128
16129         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
16130         APTC and P/Invoke.
16131         * declsec.h: Added macros to get/set lazyly initialized security 
16132         informations about assemblies. Added new enum for different type of
16133         possible LinkDemand violation. Added function to check LinkDemands.
16134         * mini.h: Added a field to MonoCompile to hold any security violation
16135         detected when JITting a method (so it can be thrown later).
16136         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
16137         and CEE_CALLVIRT. Added code to throw exception at the end of
16138         mini_method_compile (note: the exception is unhandled right now).
16139
16140 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
16141
16142         * mini.c, jit-icalls.c: use the managed implementation of
16143         memset for initobj and memset, to avoid managed <-> unmanaged
16144         transitions.
16145
16146 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16147
16148         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
16149         optimization if it would need a GOT var.
16150
16151         * basic.cs: Add tests for constant propagation and switch statements.
16152
16153         * ssa.c: Fix out-of-range constant propagation and switch statements.
16154
16155 2005-02-09    <vargaz@freemail.hu>
16156
16157         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
16158
16159 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
16160
16161         * cpu-amd64.md (load_membase): Fix max length of load_membase.
16162
16163 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16164
16165         * mini.c: update to new signature of mono_class_get_allocation_ftn().
16166
16167 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
16168
16169         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
16170         arithmetic operations.
16171
16172 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
16173
16174         * mini-ppc.c: add a workaround for broken user code that
16175         DllImports vararg functions with non-vararg signatures.
16176
16177 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
16178
16179         * mini.c (mono_jit_compile_method_inner): Add detection and a 
16180         meaningfull error message for assemblies written in Managed C++.
16181
16182         * tramp-amd64.c mini-amd64.h: Add support for 
16183         create_trampoline_from_token ().
16184
16185         * aot.c mini-x86.c abcremoval.c: Applied patch from
16186         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
16187
16188 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
16189
16190         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
16191         which takes a MonoImage/token as parameter instead of a MonoMethod.
16192
16193         * aot.c: Use the new trampoline for initializing vtables.
16194
16195         * aot.c: Add support for ldfld/stfld_remote wrappers.
16196
16197         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
16198         rules for compare <MEM>, IMM.
16199
16200         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
16201
16202         * aot.c: Handle inherited finalizers correctly.
16203
16204 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
16205
16206         * inssel.brg (stmt): Add a missing _setup_... ().
16207
16208         * aot.c: Save some parts of the class state to the AOT file and use it
16209         to recompute that state when a class is initialized.
16210
16211         * mini.c: Install AOT hooks into the runtime.
16212
16213         * mini.h: Bump AOT file format version.
16214         
16215         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
16216         Fixes #72148.
16217
16218         * iltests.il: Add new test.
16219
16220 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
16221
16222         * mini.c: fix typo.
16223
16224 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
16225
16226         * mini.c: setup the statistical profiler in the thread attach
16227         callback to cope with the new single thread code.
16228
16229 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
16230
16231         * mini-ppc.c: ensure we have enough room for the profiler
16232         calls (fixed bug#72084).
16233
16234 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
16235
16236         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
16237         it.
16238
16239 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16240
16241         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
16242
16243 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16244
16245         * ssapre.c: Fixed an issue with down safety (this allows IronPython
16246         to succesfully execute parrotbench).
16247         * ssapre.h: Likewise.
16248
16249 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16250
16251         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
16252         variable for stores to method arguments (fixes a SSAPRE issue).
16253
16254 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16255
16256         * mini.c: handle value types in dup, fixes gen-112.cs.
16257
16258 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
16259
16260         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
16261         sequence for calls in dynamic methods to avoid thunks.
16262
16263 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
16264
16265         * mini.c: correctly remove dynamic methods from the hashtable.
16266
16267 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16268
16269         * driver.c: Disabled SSAPRE until fix the bug that appears
16270         in IronPython's parrotbench.
16271
16272 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
16273
16274         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
16275
16276         * mini.c (mono_method_to_ir): Revert the previous change.
16277         
16278         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
16279         when AOT compiling.
16280
16281         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
16282         mono_jit_info_table_find () etc. when running under valgrind.
16283
16284         * inssel.brg: Fix warnings.
16285
16286         * mini-exceptions.c: Fix warnings.
16287
16288 2005-01-31  Martin Baulig  <martin@ximian.com>
16289
16290         * driver.c (compile_all_methods_thread_main): Don't try to compile
16291         generic methods or anything which has type parameters.
16292
16293 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16294
16295         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
16296
16297         * TestDriver.cs: Add --verbose flags.
16298
16299         * graph.c ssa.c: Fix 64 bit warnings.
16300         
16301         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
16302         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
16303         Fix 64 bit warnings.
16304
16305         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
16306         variable not spotted by gcc.
16307         
16308         * mini-amd64.c inssel-amd64.brg: Applied patch from  
16309         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
16310         X86_COMPARE_MEMBASE opcodes.
16311
16312         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
16313
16314 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16315
16316         * *: MonoMethod->signature might be NULL now. You *MUST* use
16317         mono_method_signature.
16318
16319 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16320
16321         * driver.c (compile_all_methods_thread_main): Compile the methods
16322         without invoking cctors.
16323
16324 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16325
16326         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
16327         * basic-calls.cs: test for the above.
16328
16329 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16330
16331         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
16332         MonoJitInfo changes.
16333
16334 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
16335
16336         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
16337         eagerly if it contains dynamic methods.
16338         
16339         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
16340
16341         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
16342         trace, it is now computed by an icall from trace_ips.
16343         
16344         * mini-exceptions.c: Fix a warning.
16345
16346 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16347
16348         * mini-exceptions.c: don't bother getting stack trace info if
16349         it's not going to be used.
16350
16351 2005-01-27  Raja R Harinath  <rharinath@novell.com>
16352
16353         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16354         ssapre-mini-ops.h.
16355
16356 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16357
16358         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16359
16360         * aot.c: Avoid calling mono_method_get_header () if not needed.
16361
16362         * mini.h: Bump AOT file format version.
16363         
16364         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16365
16366         * mini.c (mono_print_tree): Print more info for calls.
16367
16368 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16369
16370         * declsec.h: Remove warning by adding missing include for marshal.h
16371
16372 2005-01-26  Martin Baulig  <martin@ximian.com>
16373
16374         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16375         `ip' twice.
16376
16377 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16378
16379         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16380         flags.
16381
16382         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16383
16384         * aot.c (mono_compile_assembly): Fix a warning.
16385
16386 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16387
16388         * declsec.c: Look for security attributes on the original MonoMethod 
16389         (and not the wrapped one). This fix permissions on icalls.
16390
16391 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16392
16393         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16394
16395         * mini.c (mono_allocate_stack_slots): Add a fixme.
16396
16397         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16398
16399 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16400
16401         * inssel.brg: optimize casts of sealed types (more
16402         optimizations waiting for fixes in remoting).
16403
16404 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16405
16406         * inssel.brg (stmt): Add another dummy rule.
16407
16408         * driver.c: Fix warnings.
16409
16410         * driver.c (mono_main): If running under valgrind, instruct glib to use
16411         the system allocation functions so valgrind can track the memory
16412         allocated by the g_... functions.
16413
16414         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16415
16416         * mini-ops.h: Add OP_DUMMY_STORE opcode.
16417
16418         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
16419
16420         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
16421         variables in try regions.
16422
16423         * mini.c (mini_method_compile): Don't disable optimizations on large
16424         methods when AOT compiling.
16425
16426         * mini.c (mono_allocate_stack_slots): New arch independent method to 
16427         allocate stack slots. Not yet used.
16428
16429 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
16430
16431         * debug-mini.c (mono_debug_close_method): Plug some leaks.
16432
16433 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
16434
16435         * mini-ppc.c: make the branch info relative as the code
16436         buffer can be reallocated.
16437
16438 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
16439
16440         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
16441         * driver.c: Removed the AOT/security restriction. Now initialize the
16442         security manager (in metadata) if --security is used.
16443         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
16444         rather than the pointer to declarative security, when AOT is used.
16445
16446 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
16447
16448         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
16449         basic blocks, reduced intrinsic exception throwing code size.
16450
16451 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
16452
16453         * driver.c (mini_usage): Reorder the usage screen.
16454
16455 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
16456
16457         * mini.c (mono_resolve_patch_target): Fix warning.
16458
16459 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
16460
16461         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
16462         previous patch.
16463
16464         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16465
16466         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
16467         breaks the amd64 build.
16468
16469         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
16470         register allocation. Fixes #71454.
16471
16472         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16473
16474         * arrays.cs: Add new regression test.   
16475
16476 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16477
16478         * ssapre.c: Turned usage of snprintf to GString.
16479         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
16480         (I left it on by mistake in my previous commit).
16481
16482 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
16483
16484         * mini.c, cfold.c, basic-calls.cs: preserve side effects
16485         on cond branch optimization (fixes bug# 71515).
16486
16487 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16488
16489         * abcremoval.c: Fixed bug 71062.
16490         * abcremoval.h: Likewise.
16491
16492 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16493
16494         * mini.c: Added a new functionality to optimize_branches, the removal
16495         of useless basic blocks, and fixed some problem in the removal of
16496         critical edges; some utility functions added for both purposes.
16497         * ssapre.c: Added complex expression support, and fixed bug 70637.
16498         * ssapre.h: Likewise.
16499         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
16500         enabled in SSAPRE.
16501         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
16502         * driver.c: Re-enabled SSAPRE.
16503
16504 2005-01-19  Martin Baulig  <martin@ximian.com>
16505
16506         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
16507         the result of mono_get_method_constrained().
16508
16509 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
16510
16511         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
16512         manager.
16513
16514 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
16515
16516         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
16517         be detected.  Fixes #59296.
16518
16519 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
16522         which can happen. Fixes #71361.
16523
16524 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16525
16526         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
16527         manager.
16528
16529 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16530
16531         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
16532         appdomain-unload.exe to fail.
16533         
16534         * mini.c: Fix some memory leaks.
16535
16536 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
16537
16538         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
16539         Fixed bug and sped up some codepaths.
16540
16541 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * mini.c: Fix some memory leaks.
16544
16545         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
16546         conversion.
16547
16548         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
16549
16550         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
16551         #71320.
16552
16553         * iltests.il: Add regression test for #71320.
16554
16555 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
16556
16557         * mini.c (mono_codegen): Fix installation of profiler hooks.
16558
16559         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
16560
16561 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
16562
16563         * mini.h, mini.c, cfold.c: optimize access to enum
16564         readonly fields, too. Eval conditional branches if possible
16565         to perform unreachable code removal in more cases.
16566
16567 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
16568
16569         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
16570
16571         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
16572         code manager.
16573
16574         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
16575         WinXP DEP. Fixes #71244.
16576
16577 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
16578
16579         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
16580
16581 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
16582
16583         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
16584
16585 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16586
16587         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
16588         changes.
16589
16590         * mini.h: Bump AOT version.
16591
16592         * mini.h (MonoCompile): Change exvar to a hash table.
16593
16594         * mini.c: Allocate a separate exvar for each handler block.
16595
16596         * mini.c: Get rid of the computation of filter_lengths, its not needed.
16597
16598         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
16599         ex var with the pending exception and only throw if the two are equal.
16600         Fixes #68552.
16601         
16602         * exceptions.cs: Add tests for rethrow and nested catch clauses.
16603
16604         * mini-x86.c: Fix warnings.
16605
16606         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
16607         used by all the ports now.
16608
16609         * aot.c: Add write-symbols and save-temps options.
16610
16611 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16612
16613         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16614
16615 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16616
16617         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16618         operations.
16619
16620         * tramp-s390.c: Check vtable slot belongs to the domain.
16621
16622         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16623         as per other platforms.
16624
16625         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16626
16627 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16628
16629         * driver.c: we don't run the Main() code in a subthread anymore.
16630
16631 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16632
16633         * mini.c: added experimental rtc support in the statistical
16634         profiler: if the user has the permission, more accurate statistics
16635         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16636         The MONO_RTC value must be restricted to what the linux rtc allows:
16637         power of two from 64 to 8192 Hz.
16638
16639 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16640
16641         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16642
16643 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16644
16645         * mini-ppc.c: better icache flush for smp.
16646
16647 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16648
16649         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16650
16651         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16652         amd64 port, not yet used.
16653
16654 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16655
16656         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16657         a struct type.
16658
16659 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16660
16661         * driver.c: Added --security option to activate the security manager.
16662         Right now this will allow code generation for declarative demands and
16663         is disabled when AOT is specified.
16664         * mini.c: Add code generation for declarative security demands.
16665         * mini.h: Add mono_use_security_manager as an extern gboolean.
16666
16667 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16668
16669         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16670         emitting more dense assembly code.
16671
16672         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16673         exception throwing stuff.
16674
16675 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16678         dead code.
16679
16680         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16681         left in by mistake.
16682
16683         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16684         fixed.
16685
16686         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16687
16688         * tramp-*.c: Only patch vtable slots if the object is in the current
16689         domain. Fixes appdomain-unload.exe.
16690
16691         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16692         
16693         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16694         x86 branch.
16695
16696 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16697
16698         * mini.c (reverse_branch_op): New helper function.
16699
16700         * mini.c (optimize_branches): Run the new optimization only on 
16701         platforms which support it. Also reverse all kinds of branches.
16702
16703         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16704
16705         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16706         a throw statement.
16707
16708         * mini.c (optimize_branches): Reverse not-equals branches if the false
16709         bblock is a throw. This happens a lot of time with argument checking in
16710         corlib.
16711
16712         * mini.c (mono_codegen): Add support for placing basic blocks after
16713         the function epilogue.
16714
16715         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16716         function epilogue.
16717         
16718 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16719
16720         * mini.c (setup_stat_profiler): Only set this up if the platform
16721         supports ITIMER_PROF.
16722
16723 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16724
16725         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16726         previous patch.
16727
16728         * inssel.brg: Fix a warning.
16729
16730 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16731
16732         * mini.c: added support for statistical profiler 
16733         (run with: --profile=default:stat).
16734
16735 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16736
16737         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16738
16739         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16740
16741         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16742         related to global registers from the amd64 port.
16743
16744 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16745
16746         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16747
16748         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16749         with global registers.
16750         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16751
16752         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16753
16754 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * debug-mini.c (encode_value): Fix off-by-one.
16757
16758         * aot.c (encode_value): Likewise.
16759
16760         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16761
16762 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16763
16764         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16765         AOT.
16766
16767         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16768         
16769         * aot.c (emit_method_info): Increase size of temp buffer.
16770
16771         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16772         the AOT case.
16773
16774 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16775
16776         * aot.c (emit_method_info): Fix build.
16777         
16778         * aot.c: Further rework of the AOT file format to reduce the size of
16779         the method info data.
16780
16781         * mini.h: Bump AOT file format version.
16782
16783 2004-12-27  Martin Baulig  <martin@ximian.com>
16784
16785         * mini.c (mini_get_method): New static method; call
16786         mono_get_method_full() and mono_get_inflated_method().
16787         (mono_method_to_ir): Use mini_get_method() instead of
16788         mono_get_method_full(). 
16789
16790 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16791
16792         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16793
16794 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16795
16796         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16797
16798         * inssel-amd64.brg: Add some optimization rules.
16799
16800 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16801
16802         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16803         standard not GC'd stuff is fine.
16804
16805 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16806
16807         * aot.c: Rework the AOT file format to get rid of most of the global
16808         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16809
16810         * mini.h: Bump AOT file format version.
16811         
16812 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16813
16814         * mini.h: Bump AOT file format version.
16815
16816         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16817         address is inside a GOT.
16818
16819         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16820
16821         * cpu-pentium.md: Increase the maximum size of some instructions which
16822         might involve a got access.
16823         
16824         * mini.c (get_method_from_ip): Another debug helper function.
16825
16826         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16827         when got var accesses are created during the decompose phase.
16828
16829         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16830
16831         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16832         argument mini_compile_method and to MonoCompile, and use this to
16833         determine whenever a given method is compiled for AOT. This allows the
16834         other methods compiled during AOT compilation to be free of AOT stuff,
16835         so the backends does not need to add special support for them by
16836         creating a fake GOT etc.
16837
16838         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16839         longer needed.
16840
16841 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16842
16843         * mini.c (mono_method_to_ir): It turns out that some of the
16844         x-appdomain wrappers are lax with types, so just ignore this for
16845         all wrappers.
16846
16847         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16848         at the vtable->klass. If it is non-shared code we can just use the
16849         vtable.
16850
16851 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16852
16853         * mini-ppc.c: access MonoDomain from tls, too.
16854
16855 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16856
16857         * declsec.c: Removed unused variable (and related warning ;-)
16858
16859 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16860
16861         * iltests.il: New test for LDELEMA on an array of ref types.
16862
16863         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16864         all ldelema's on reftypes.
16865         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16866         it was the wrong place to put it.
16867
16868         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16869         register to pop to make this cleaner, at the request of Paolo.
16870
16871 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16872
16873         * mini-ops.h (OP_GETHASHCODE): New op.
16874
16875         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16876
16877         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16878         operation.
16879
16880         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16881         by 25%.
16882         
16883         * mini-x86.c (mono_arch_output_basic_block): Rather than
16884
16885         add ebp, 4
16886
16887         Emit
16888
16889         pop edx
16890
16891         The first is 3 bytes while the second is 1. This saves 36 kb on
16892         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16893         see a small boost because of icache locality.
16894
16895         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16896
16897 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16898
16899         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16900         started code sharing with the generic code.
16901
16902 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16903
16904         * mini-ppc.c, cpu-g4.md: added code for direct access to
16905         tls data slots.
16906
16907 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16908
16909         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16910          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16911         to OP_TLS_GET.
16912
16913 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16914
16915         * declsec.c|h: Added functions to cache the declarative stack modifiers
16916         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16917         structure.
16918         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16919         created. Register internal calls for System.Security.SecurityFrame::
16920         _GetSecurityFrame and _GetSecurityStack.
16921         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16922         the definitions for the new stack walk/callback mechanism.
16923         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16924         first security frame for LinkDemands and InheritanceDemands) and
16925         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16926         from lupus.
16927         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16928         walk initialization (lupus).
16929
16930 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16931
16932         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16933         idiom.
16934         (handle_loaded_temps): Do not create a temporary variable for
16935         things that we know are temps. They will never be modified.
16936         (mono_spill_call): Set MONO_INST_IS_TEMP
16937         (mono_emulate_opcode): ditto
16938         (emit_tree): ditto
16939         (mono_method_to_ir.CEE_DUP): ditto
16940
16941 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16942
16943         * mini.c (type_to_eval_stack_type): Make this handle the void type
16944         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16945         (emit_tree): use ip_in_bb to special case some common idioms
16946         Update all callers to pass in the IP.
16947         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16948
16949         This gives us a nice 2% speedup in mcs bootstrap.
16950
16951         * mini-x86.c (peephole_pass): Peephole pass to make
16952         mov  [foo], eax
16953         push [foo]
16954
16955         into
16956
16957         mov [foo], eax
16958         push eax
16959
16960         * mini.c (ip_in_bb): new method.
16961         (mono_method_to_ir): use this method rather than doing the hash
16962         lookup ourselves.
16963
16964         * linear-scan.c (mono_linear_scan): When expiring actives, you
16965         don't need to keep around variables that expire on this
16966         instruction. This makes it so that:
16967              a = b + 1
16968         will turn into:
16969              store (ebx add (ebx, 1))
16970         which will become
16971              add ebx, 1
16972
16973 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16974
16975         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16976         combination to avoid doing two copies. Fix up problems with previous
16977         patch.
16978
16979         * mini.c: Fix 64 bit warnings.
16980
16981         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16982
16983 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16984
16985         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16986         changes from the x86 code.
16987
16988         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16989
16990 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16991
16992         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16993         throwing code to reduce its size, unify the AOT and non-aot code and 
16994         get rid of relocations in the AOT case.
16995
16996         * mini-x86.h mini.c exceptions-x86.c 
16997         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16998         raise corlib exceptions which doesn't require relocations in the 
16999         caller.
17000
17001         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
17002
17003 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
17004
17005         * mini.c (mono_emit_method_call): Only allocate the got var when it is
17006         needed.
17007
17008         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
17009         in the AOT case.
17010
17011 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17012
17013         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
17014         with add function when used from Inc/dec atomic 
17015         functions. Re-enabled optimization on x86.
17016         * mini-ops.h: renamed atomic_add functions to
17017         allow _add to match the Interlocked::Add and
17018         _add_next to match Interlocked::Inc/Dec.
17019
17020 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
17021
17022         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
17023         linking of BBs to the end BB, and enabled SSAPRE also with
17024         consprop and copyprop (which was prevented by that bug).
17025
17026 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17027
17028         * mini-x86.c: disabling the Interlocked optimizing code. 
17029
17030 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17031
17032         * aot.c (load_aot_module): Move reading of got_addr after the AOT
17033         file version check.
17034         
17035 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17036
17037         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
17038         interlocked optimization due lack of support on x86, rewrote 
17039         exchange to take into account that base may be in eax.
17040         
17041         xsp works again; activated Interlocked optimizing code.
17042         
17043 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17044
17045         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
17046
17047 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
17048
17049         * mini-ops.h: Add new opcodes.
17050
17051         * mini.h: Add new patch types. Add got_var to MonoCompile.
17052
17053         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
17054         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
17055         make it work with all kinds of patchable code.
17056
17057         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
17058         address of the GOT, and referencing entries in the GOT.
17059
17060         * mini.c: Add code to load the GOT address if needed by an opcode.
17061
17062         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
17063         independent AOT code on the x86 using an elf-style Global Offset Table.
17064
17065 2004-12-14  Raja R Harinath  <rharinath@novell.com>
17066
17067         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
17068
17069 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17070
17071         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
17072         when running xsp.
17073
17074 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
17075
17076         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
17077         of Interlocked:Increment/Decrement/Add as inline ops.
17078         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
17079
17080 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
17081
17082         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
17083         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
17084
17085 2004-12-12  Duncan Mak  <duncan@ximian.com>
17086
17087         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
17088         again. `patch_info->table_size' is no longer valid after Zoltan's
17089         commit #37636.
17090
17091 2004-12-12  Martin Baulig  <martin@ximian.com>
17092
17093         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
17094         if we are the "real" method, ie. not an inlined method inside it.
17095
17096 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
17097
17098         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
17099         before we look in the special fields table. This fixes
17100         ../tests/thread-static-init.cs.
17101
17102 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17103
17104         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
17105         for Array get_Rank and get_Length. Fixes bug #70465.
17106
17107 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
17108
17109         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
17110         separate structure to reduce the size of MonoJumpInfo.
17111
17112 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
17113
17114         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
17115
17116 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
17117
17118         * mini.c (mini_get_inst_for_method): Changed to allow ports
17119         to return a MonoInst instead of opcode 
17120         (renamed mini_get_opcode_for_method to better reflect the new functionality)
17121         
17122         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
17123         Allow ports to return a created MonoInst instead of op-code, will enable
17124         new optimizations.
17125         (renamed mini_get_opcode_for_method to better reflected the functionality)
17126
17127 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
17128
17129         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
17130
17131 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17132
17133         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
17134         Fixes #69985.
17135
17136 2004-12-08  Martin Baulig  <martin@ximian.com>
17137
17138         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
17139         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
17140
17141 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17142
17143         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
17144         correctly.
17145
17146         * exceptions.cs: Disable some tests which depend on properties of x86 fp
17147         arithmetic.
17148
17149 2004-12-08  Raja R Harinath  <rharinath@novell.com>
17150
17151         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
17152
17153 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
17154
17155         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
17156         bug introduced by the previous patch.
17157
17158 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17159
17160         * mini-ppc.c, objectc.cs: handle large structs passed by value
17161         (fixes bug #69972).
17162
17163 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
17164
17165         * mini-ppc.c: OP_ARGLIST implementation from
17166         Geoff Norton  <gnorton@customerdna.com>.
17167
17168 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
17169
17170         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
17171         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
17172
17173 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17174
17175         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
17176
17177 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17178
17179         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
17180         support.
17181
17182 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
17183
17184         * mini-sparc.c: Zero out localled-ed memory.
17185
17186         * iltests.il: Add tests for zeroing out localloc-ed memory.
17187
17188 2004-12-04  Martin Baulig  <martin@ximian.com>
17189
17190         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
17191         mono_method_get_signature_full().       
17192
17193 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
17194
17195         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
17196         and some utility functions (always for SSAPRE), integrated SSAPRE.
17197         * mini.h: Likewise.
17198         * driver.c: Added ssapre option.
17199         * ssa.c: Small fix on OP_ARG handling.
17200         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
17201         * Makefile.am: Likewise.
17202
17203 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
17204
17205         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
17206         now in the xp code.
17207
17208         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
17209         icall.
17210
17211 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17212
17213         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
17214         
17215         * cpu-s390.md : Increase instruction length of oparglist.
17216
17217         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
17218
17219 2004-11-30  Martin Baulig  <martin@ximian.com>
17220
17221         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
17222         virtual generic methods.  We call a special helper_compile_generic_method()
17223         icall to retrieve the method from the vtable, inflate and compile
17224         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
17225
17226         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
17227
17228 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
17229
17230         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
17231
17232 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
17233
17234         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
17235         Fixes #69929.
17236
17237 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
17238
17239         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
17240         platforms with PIC aot.
17241
17242 2004-11-28  Martin Baulig  <martin@ximian.com>
17243
17244         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
17245         Fixes gen-112.cs.
17246
17247 2004-11-28  Martin Baulig  <martin@ximian.com>
17248
17249         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
17250         the result of mono_type_get_underlying_type() to check whether
17251         we're byref.
17252
17253 2004-11-26  Martin Baulig  <martin@ximian.com>
17254
17255         * mini.c
17256         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
17257         in the g_assert().
17258
17259 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
17260
17261         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
17262         the same way as the other arguments so they won't get clobbered.
17263
17264         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
17265         calls through R11 since it is clobbered by the trampoline code.
17266
17267 2004-11-26  Raja R Harinath  <rharinath@novell.com>
17268
17269         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
17270         pick up in-tree mscorlib.dll.
17271
17272 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
17273
17274         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
17275
17276         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
17277         runtime data/code are now stored in a table similar to the GOT in ELF. 
17278         This allows the code itself to be position independent.
17279
17280         * aot.c: Fix loading of referenced assemblies after the lazy assembly
17281         loading changes.
17282
17283         * aot.c: Attach ELF type (object/function) directives to all global
17284         symbols.
17285
17286         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
17287
17288         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
17289
17290         * mini-amd64.h: Turn on PIC AOT code.
17291
17292         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
17293         returning the offset within an OP_AOTCONST instruction where the GOT
17294         offset needs to be added.
17295
17296         * mini.h: Bump AOT file format version.
17297
17298 2004-11-25  Martin Baulig  <martin@ximian.com>
17299
17300         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
17301         uninflated generic methods.
17302
17303 2004-11-25  Martin Baulig  <martin@ximian.com>
17304
17305         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
17306
17307 2004-11-24  Martin Baulig  <martin@ximian.com>
17308
17309         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
17310         original klass (this only applies for generic instances).
17311
17312 2004-11-24  Martin Baulig  <martin@ximian.com>
17313
17314         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
17315         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
17316         that array).
17317
17318 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17319
17320         * mini.c (mono_method_to_ir): Disable inlining for methods containing
17321         localloc. Fixes #69678.
17322
17323         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
17324         
17325 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
17326
17327         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
17328         used SSE registers on pinvoke calls. Fixes #69774.
17329
17330 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
17331
17332         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
17333         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
17334
17335 2004-11-23  Raja R Harinath  <rharinath@novell.com>
17336
17337         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
17338         Refer directly to the mcs/ tree.
17339
17340 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17341
17342         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
17343         Check if a trampoline for a synchronized method is required. 
17344
17345 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
17346
17347         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
17348         with localloc if needed. Throe arithmetric exception in
17349         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
17350         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
17351
17352 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17353
17354         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17355         types before switching on type.  Fixes #69622.
17356
17357 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17358
17359         * Makefile.am (check-local): New.  Integrate into 'make check'.
17360         (MCS,RUNTIME): Define using in-tree mono and mcs.
17361         (ILASM): New.
17362         (%.exe): Use $(ILASM).
17363
17364 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17365
17366         * mini-ppc.c: adjust initial prolog size (bug #69691).
17367
17368 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17369
17370         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17371         #69664.
17372
17373 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17374
17375         * Makefile.am (clean-local): Rename from 'clean'.
17376
17377 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17378
17379         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17380         to mono_arch_is_int_overflow. 
17381         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17382         SIGFPE events.
17383
17384 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17385
17386         * declsec.c|h: New files to support declarative security attributes.
17387         Added function to check if a method has (applicable) security.
17388         * mini.c|h: Add check for declarative security attributes in
17389         mono_method_check_inlining.
17390         * Makefile.am: Added declsec.c and declsec.h to the build.
17391
17392 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17393
17394         * mini.c, mini.h: update to keep dynamic code info per-domain.
17395
17396 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17397
17398         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17399         (mini_init): Get rid of it from here too.
17400
17401 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17402
17403         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17404         implemented OP_RETHROW (patch by Geoff Norton
17405         <gnorton@customerdna.com>).
17406
17407 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17408
17409         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17410         between appdomains.  Fixes appdomain-unload on PPC.
17411
17412 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17413
17414         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17415         mini-exceptions.c: handle the new wrapper types.
17416         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
17417         token value as a MonoClass* when compiling a wrapper.
17418         mono_jit_create_remoting_trampoline now takes an additional
17419         MonoRemotingTarget parameter.
17420         
17421 2004-11-10  Martin Baulig  <martin@localhost>
17422
17423         * mini.c (mono_method_to_ir): Use `generic_container->context'
17424         rather than creating a new one.
17425
17426 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17427
17428         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
17429
17430         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
17431
17432 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
17433
17434         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
17435         the experimental aot cache stuff.
17436
17437 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17438
17439         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17440         mini-exceptions.c: update to exception clause structure changes.
17441
17442 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17443
17444         * exceptions-x86.c (throw_exception): Fix warnings.
17445
17446         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
17447         for OP_RETHROW.
17448
17449 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17450
17451         * exceptions-sparc.c (get_throw_exception): Really fix this.
17452
17453 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
17454
17455         * tramp-*.c: we no longer support icalls without wrappers, so
17456         a bit of code can be removed here
17457
17458 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
17459
17460         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
17461         patch.
17462
17463         * cpu-sparc.md: Add op_rethrow.
17464
17465         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
17466
17467         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
17468
17469         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
17470         * mini-ops.h: Add OP_RETHROW.
17471
17472         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
17473
17474         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
17475
17476 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17477         
17478         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
17479         Makes the output much easier to read
17480
17481 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
17482
17483         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
17484         prevents another huge leak when compiling with ssa. Secondly, the
17485         performance of doing this rather than freeing the lists is much
17486         better. GList does a lock every time you allocate a list link,
17487         so that it can use a memory pool. So, it is better to just use
17488         a memory pool of our own.
17489         
17490         * ssa.c, linear-scan.c: replace g_list_remove_link with
17491         g_list_delete.  The remove one does not free the GList, so we were
17492         leaking memory. On -O=all --compile-all with corlib, this cut down
17493         3 MB of allocations.
17494
17495 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17496
17497         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
17498
17499         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
17500
17501         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
17502         into a new function mono_create_jit_trampoline ().
17503
17504 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
17505
17506         * trace.c (get_spec): Allow tracing of classes without a namespace.
17507
17508 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
17509
17510         * mini.c: Fix pointer overwrite in mini_method_compile.
17511
17512 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
17513
17514         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
17515         The darwin ABI needs some special handling for 1 and 2 byte structs
17516         Lets use lbz/lhz instead of lwz everywhere.
17517         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
17518         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
17519         Use stb/sth for the former, and put the latter always on stack instead of in
17520         argument registers.
17521
17522 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
17523
17524         * trace.c (is_filenamechar): Add '_'.
17525
17526 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
17527
17528         * mini-s390.c: Fix prolog length to allow for large trace requirements.
17529
17530         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
17531
17532 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
17533
17534         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
17535         depends on libmonogc. Fixes #68805.
17536
17537 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
17538
17539         * mini.c (mono_jit_free_method): Provide extra information for
17540         this error.  Currently this leaks, but will be turned into a
17541         developer option in the future.
17542
17543 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
17544
17545         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
17546
17547 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17548
17549         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
17550         boundary. Fixes reading of PATCH_INFO_R4 and R8.
17551         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
17552
17553 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
17556         trampolines for AOT code.
17557
17558 2004-10-22    <vargaz@freemail.hu>
17559
17560         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
17561         constructed types. Fixes #68136.
17562
17563 2004-10-21  Martin Baulig  <martin@ximian.com>
17564
17565         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
17566         if it returns true, unwind the stack to the call instruction.
17567
17568 2004-10-21    <vargaz@freemail.hu>
17569
17570         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
17571
17572         * mini.h: Bump AOT version number.
17573
17574         * objects.cs: Add another test for unbox trampolines.
17575
17576         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
17577         valuetype methods.
17578
17579 2004-10-20    <vargaz@freemail.hu>
17580
17581         * driver.c: Add SHARED to the set of optimizations tested.
17582
17583         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
17584
17585         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
17586         used by CEE_NEWARR.
17587
17588         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
17589
17590 2004-10-20  Martin Baulig  <martin@ximian.com>
17591
17592         * mini-exceptions.c (mono_handle_exception): Call
17593         mono_debugger_handle_exception() to tell the debugger about
17594         catch/finally clauses.
17595
17596 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
17597
17598         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
17599
17600         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
17601         #68447.
17602
17603 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
17604
17605         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
17606         methods as their native size, fixed bug #57543, #57545.
17607         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
17608         This saves a temporary register and mullw call down into 1 (minor perf
17609         increase for cases like sum = sum * 5;  This use to translate into:
17610             li r11,5
17611             mullw r28,r28,r11
17612         It now translates to
17613             mulli r28,r28,5
17614
17615 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17616
17617         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17618         #68388.
17619
17620 2004-10-11  Martin Baulig  <martin@ximian.com>
17621
17622         * mini.c (mono_method_to_ir): If we're a generic method, get the
17623         MonoGenericContainer from our MonoMethodNormal and create a
17624         MonoGenericContext from it.
17625
17626 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17627
17628         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17629
17630         * basic-long.cs: Add test for checked i8->i2 cast.
17631
17632 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17633
17634         * inssel-ppc.brg: added a couple of speedup rules.
17635
17636 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17637
17638         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17639         to speed up rebuilds.
17640
17641 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17642
17643         * mini-s390.c: Minor fix to OP_OR_IMM.
17644
17645 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17646
17647         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17648         better. Fixes appdomain-unload.exe on sparc.
17649
17650 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17651
17652         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17653         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17654         see bug 67324.
17655
17656 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17657
17658         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17659
17660 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17661
17662         * mini.c: Always generate a field read/write wrapper for members
17663         of the class MarshalByRefObject since the actual instance could
17664         be a CBO.
17665
17666 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17667
17668         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17669
17670 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17671
17672         * driver.c mini.h trace.c: Move the setting of the main assembly into
17673         a separate function called mono_trace_set_assembly () and call it after
17674         actually loading the main assembly. Fixes #66872.
17675
17676 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17679         using the code manager.
17680
17681 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17682
17683         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17684
17685 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * cpu-amd64.md: Fix bug in previous patch.
17688         
17689         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17690         #66650.
17691
17692 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17693
17694         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17695         mini-exceptions.c: updates for changed stack walk interface.
17696
17697 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17698
17699         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17700
17701 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17702
17703         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17704
17705 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17706
17707         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17708         since assemblies can't be unloaded.
17709         
17710 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17711
17712         * cpu-amd64.md: Fix more instruction lengths.
17713
17714         * cpu-amd64.md: Fix lengths of some instructions.
17715
17716 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17717
17718         * inssel.brg: Make the array ldelema check aot friendly.
17719
17720 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17721
17722         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17723
17724         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17725
17726 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17727
17728         * mini-x86.c: Fix build.
17729
17730         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17731         mono_type_get_underlying_type () helper function to simplify code.
17732         
17733 2004-09-09  Martin Baulig  <martin@ximian.com>
17734
17735         * mini-amd64.c: Don't access `type->data.klass' directly, call
17736         mono_class_from_mono_type() instead since the type may be a
17737         generic instance.
17738
17739 2004-09-09  Martin Baulig  <martin@ximian.com>
17740
17741         * mini-amd64.c (get_call_info): Fix support for generic instances.
17742         (add_valuetype): Use mono_class_from_mono_type() to get the class
17743         since we can be a generic instance.
17744
17745 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17746
17747         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17748
17749 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17750
17751         * liveness.c: reset spill costs on each scan: bug 62107
17752
17753 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17754
17755         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17756         unnecessary line that doesn't compile
17757
17758 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17759
17760         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17761         trampolines, make them call an error function so people can fix their
17762         code.
17763
17764 2004-09-06  Martin Baulig  <martin@ximian.com>
17765
17766         * mini.c (mono_method_to_ir): When initializing locals, handle a
17767         generic instances like a valuetype if it's a valuetype and like a
17768         class if it's a class.
17769
17770 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17771
17772         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17773         stack. Fixes #64674.
17774
17775         * exceptions.cs: Add test for unwinding of call arguments.
17776
17777 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17778
17779         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17780         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17781         set the carry/borrow flag). The sparc and s390 implementations
17782         can now use optimized versions (and simplify the code). ppc bugfixes.
17783
17784 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17785
17786         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17787
17788 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17789
17790         * inssel-amd64.brg: Remove leftover 32 bit rule.
17791
17792         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17793
17794 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17795
17796         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17797         mono_arch_find_jit_info functions into a new function. Fix a memory
17798         leak.
17799
17800         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17801         refactored code.
17802         
17803 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17804
17805         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17806         as well.
17807         
17808         * exceptions.cs: Add array size tests.
17809
17810         * mini.c: Allocate a separate icall wrapper for each arity of 
17811         mono_array_new_va. Fixes #59509.
17812
17813         * exceptions.cs: Add testcase for 64578.
17814
17815         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17816
17817         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17818         
17819 2004-09-02  Martin Baulig  <martin@ximian.com>
17820
17821         * mini.c (mono_method_to_ir): When initializing the locals, call
17822         handle_initobj() on the generic instance itself, not its
17823         underlying type.
17824
17825 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17828         MonoJitInfo for dynamic methods.
17829
17830         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17831
17832         * mini.c: Add support for freeing JIT data for dynamic methods.
17833         
17834 2004-09-01  Martin Baulig  <martin@ximian.com>
17835
17836         * mini-x86.c (is_regsize_var): Added support for generic
17837         instances.
17838         (mono_arch_emit_prolog): Make this compile again, use
17839         `x86_push_imm_template (code)'.
17840
17841 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17842
17843         * mini-x86.c: make all push_imm instructions that get
17844         patched always emit the long form
17845
17846 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17847
17848         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17849         in a per-domain hash.
17850
17851         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17852         types.
17853
17854 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17855
17856         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17857         work.
17858         
17859         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17860         work.
17861
17862         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17863         Beginnings of SSE2 support.
17864
17865         * exceptions.cs: Add more tests for checked int<->uint casts.
17866
17867 2004-08-28  Martin Baulig  <martin@ximian.com>
17868
17869         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17870         generic instances.
17871
17872         * mini.c
17873         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17874         Handle generic instances recursively.
17875
17876 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17877
17878         * iltests.il: test for conv.u8 on a constant
17879
17880 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17881
17882         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17883         LCONV_x4 (shrun_32 (membase)).
17884
17885 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17886
17887         * inssel-x86.brg: c&p rules for push/setret of long
17888
17889 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17890
17891         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17892         compare (regvar, base)
17893
17894         * inssel-x86.brg: more burg love
17895
17896         * inssel.brg: more cleanup
17897
17898         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17899
17900 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17901
17902         * basic-long.cs, basic-calls.cs: new tests for optimization.
17903
17904 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17905
17906         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17907         patch.
17908
17909 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17910
17911         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17912         
17913 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17914
17915         * inssel.brg (mini_emit_memcpy): use 
17916         NO_UNALIGNED_ACCESS to disable memcpy optimization
17917
17918 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17919
17920         * mini-amd64.c: Handle generic types in various places.
17921
17922         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17923
17924 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17925
17926         * mini.c (handle_box): Fix warning.
17927
17928         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17929
17930         * mini-amd64.h: Enable the emit_state optimization.
17931
17932         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17933
17934         * mini-amd64.c: Add some new 64 bit peephole opts.
17935
17936         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17937
17938         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17939
17940         * mini-amd64.c: Register allocator fixes.
17941
17942         * mini.c: Add an optimization to emit_state to avoid allocation of new
17943         registers on some platforms.
17944
17945 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17946
17947         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17948
17949         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17950         allocation. Fixes #63085.
17951
17952         * basic-long.cs: Add new regression test.
17953
17954         * mini-amd64.c: Register allocator improvements.
17955
17956 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17957
17958         * mini-amd64.c (read_tls_offset_from_method): Add another code
17959         sequence.
17960
17961         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17962         instruction sequence for nullifying class init trampolines.
17963
17964         * objects.cs: Add new regalloc test.
17965
17966         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17967
17968 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17969
17970         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17971         
17972         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17973         arguments.
17974
17975         * driver.c: Fix profiling after TLS changes.
17976         
17977         * driver.c (mono_main): Set mono_stats.enabled if needed.
17978
17979         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17980         CEE_BOX.
17981
17982 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17983
17984         * mini-x86.c: use a 1 op rather than a 2 op tls access
17985         instruction -> faster.
17986
17987 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17988
17989         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17990         x86 backend.
17991
17992 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17993
17994         * exceptions-sparc.c (throw_exception): fix typo
17995
17996 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17997
17998         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17999         set tree->dreg correctly with tls. Allow any
18000         register to be used.
18001
18002         * mini-x86.c (read_tls_offset_from_method): add new code
18003         generation pattern seen with GCC.
18004
18005
18006 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18007
18008         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
18009         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18010         exceptions-sparc.c: fix some performance issues in exception
18011         handling and setting of the stack trace for exceptions that were
18012         already thrown.
18013
18014 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18015
18016         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
18017         x86 backend.
18018         
18019         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
18020         registers.
18021
18022 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18023
18024         This patch inlines tls access, when possible.
18025         
18026         * mini.h: new arch functions for TLS intrinsics.
18027         All platforms updated with a stub.
18028
18029         * mini.c: use the new intrinsics
18030
18031         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
18032         arch specific intrinsic for tls variables
18033
18034 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18035
18036         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
18037         under windows.
18038
18039 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18040
18041         * mini.c: thread local allocation
18042
18043 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
18044
18045         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
18046
18047         * Makefile.am: Link against the static version of libmonogc.
18048         
18049         * Makefile.am: Link the static versions of the convenience libraries
18050         into the mono executable.
18051
18052         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
18053
18054 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
18055
18056         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
18057         on integer overflow.
18058
18059         * mini-amd64.c: Reorganize function call code.
18060
18061         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
18062
18063 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18064
18065         * inssel-x86.brg: use xor eax,eax.
18066         
18067         * basic.cs: new tests
18068
18069 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18070
18071         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
18072         in exception throwing code.
18073         
18074 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18075
18076         * inssel-x86.brg: use xor esi,esi.
18077
18078 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18079
18080         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
18081         can trace methods compiled during mini_init () too.
18082
18083         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
18084         CEE_CONV_U4.
18085
18086 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18087
18088         * Makefile.am: static link on x86 (r=zoltan)
18089
18090 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18091
18092         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
18093         code since it causes some programs to fail.
18094
18095 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
18096
18097         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
18098
18099 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18100
18101         * mini.c: ovfops_op_map - add STACK_OBJ case for
18102         CONV_I 
18103         * basic.cs: add test_0_pin_string as test
18104         case for above.
18105
18106 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18107
18108         * Makefile.am: build C# if srcdir != builddir
18109
18110 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18111
18112         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
18113         fall-through blocks.
18114
18115 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18116
18117         * driver.c: enable loop by default again and include abcrem in -O=all.
18118
18119 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
18120
18121         * iltests.il: Add some localloc tests.
18122
18123         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
18124
18125         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
18126         Fixes #62574.
18127
18128         * inssel-amd64.brg: Add some optimizations.
18129
18130         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
18131         for gcc-3.4.
18132
18133         * Makefile.am: Statically link mono against libmono on AMD64.
18134         
18135         * mini-amd64.c inssel-amd64.brg: Optimizations.
18136
18137 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
18138
18139         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
18140
18141         * tramp-amd64.c: Patch calling code in trampolines.
18142
18143 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
18144
18145         * mini-amd64.c: pinvoke struct passing fixes.
18146
18147 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
18148
18149         * mini-sparc.c: redo change, make mono_arch_cpu_init call
18150         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
18151
18152 2004-08-05  Duncan Mak  <duncan@ximian.com>
18153
18154         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
18155         CEE_LDELEM_ANY.
18156
18157 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18158
18159         * mini-amd64.c (emit_move_return_value): Move return value for normal
18160         calls too.
18161
18162 2004-08-05  Martin Baulig  <martin@ximian.com>
18163
18164         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
18165         `type->type'; just modify `type' itself when dealing with enums
18166         and generic instances.
18167         (check_call_signature): Make `simple_type' a `MonoType *'.
18168
18169 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18170
18171         * mini.c: Use OP_PADD to add offsets to addresses.
18172
18173         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
18174
18175 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
18176
18177         * mini-sparc.c (mono_arch_emit_epilog): fix check
18178         for folding last op into restore instruction
18179
18180 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
18183         helper methods using the code manager.
18184         
18185         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
18186
18187         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
18188
18189 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18190         
18191         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
18192           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
18193
18194         * mini-s390.c: fix tail processing
18195
18196 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
18197
18198         * mini-ppc.c: mul.ovf.un exception name fix.
18199
18200 2004-08-03  Martin Baulig  <martin@ximian.com>
18201
18202         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
18203         instances; before jumping to `handle_enum', also modify `ptype'.
18204
18205 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
18206
18207         * cpu-sparc.md: fcall maximal length too small.
18208
18209 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
18210
18211         * mini-amd64.c mini.h: Add initial support for passing/returning 
18212         structures to/from pinvoked methods.
18213
18214 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
18215
18216         * mini-ppc.c: reg allocator fix.
18217
18218 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
18219
18220         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
18221
18222         * inssel.brg: Optimize memset on 64 bit machines.
18223
18224         * mini-amd64.c: Fix some vararg cases.
18225
18226 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18227
18228         * mini-s390.c: Corrected macro in emit_float_to_int
18229
18230         * s390-abi.cs: Tests to exercise the s390 ABI
18231
18232 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
18235         caller saved regs.
18236
18237         * basic.cs: Add a test for add.ovf.un.
18238
18239 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
18240
18241         * mini-sparc.c: add case for OP_IDIV_UN
18242
18243 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18244
18245         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
18246         
18247         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
18248
18249 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
18250
18251         * basic.cs: regression tests.
18252
18253         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
18254         regressions.
18255
18256 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18257
18258         * basic.cs: Add a new test.
18259
18260         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
18261         and AOT. Various fixes and optimizations.
18262
18263         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
18264
18265 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
18266
18267         * mini-ppc.c: make sure temp regs are not used for global reg
18268         allocation.
18269
18270 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
18271
18272         * cpu-sparc.md: conv_i8 fix for 64bits
18273
18274         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
18275
18276 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
18277         
18278         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
18279         add opcode for cmp BYTE PTR [eax], imm.
18280
18281         * inssel.brg: Make memcpy and memset takes bases.
18282
18283 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18284
18285         * *-amd64.*: More AMD64 work.
18286         
18287 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18288
18289         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
18290         add a compare-not-equal opcode.
18291         
18292 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18293
18294         * mini.c: Use mono_init_from_assembly instead of mono_init.
18295         
18296 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18297
18298         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
18299
18300         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
18301
18302         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
18303
18304         * inssel.brg: 64 bit fixes.
18305
18306         * mini.h (MonoCallInst): Add some AMD64 specific data.
18307
18308         * mini.h: Add some OP_P opcodes.
18309
18310 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18311
18312         * basic.cs: tests for 61797 and 61740
18313
18314 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18315
18316         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
18317         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
18318
18319 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
18320
18321         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
18322
18323         * *-amd64*.*: Ongoing AMD64 work.
18324
18325 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
18326
18327         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
18328
18329         * *-amd64*: Ongoing AMD64 work.
18330
18331         * mini-arch.h: Add AMD64 support.
18332
18333         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
18334
18335         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
18336
18337         * mini-ops.h: Add new opcodes.
18338
18339         * Makefile.am: Add AMD64 support.
18340
18341         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
18342         rules into the inssel-long*.brg files.
18343
18344         * *-amd64.*: Add beginnings of AMD64 backend.
18345
18346 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
18347
18348         * mini.c (print_dfn): commenting out the code that prints
18349         the cil. With -O=deadce, this makes -v -v crash.
18350         
18351         * cpu-pentium.md: make checkthis have a length of 2
18352
18353 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18354
18355         * mini-sparc.h: fix implementations of __builtin
18356         functions for Sun compiler for V9.
18357
18358 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18359
18360         * mini.c: use the new stelem.ref wrapper
18361         * exceptions.cs, arrays.cs: new stelem.ref tests
18362
18363 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18364
18365         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18366         new XSP should work with these changes).
18367
18368 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18369         
18370         * inssel-{long32,x86,}.brg: trivial optimizations.
18371         
18372 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18373
18374         * mini.c: load value when emitting box operation in
18375         constrained calls.
18376
18377 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18378
18379         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18380         is one byte shorter than cmp DWORD PTR [eax], 0.
18381
18382 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18383
18384         * inssel-ppc.brg: arguments on the stack are always
18385         relative to the stack pointer (spotted by Neale Ferguson).
18386
18387 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18388
18389         * exceptions-x86.c: delay appending the method name to the trace until
18390         after mono_jit_info_table_find is called, as this gets the real
18391         MonoMethod.
18392
18393 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18394
18395         * aot.c: register roots
18396
18397 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18398
18399         * aot.c : I could just use PLATFORM_WIN32 flag.
18400
18401 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18402
18403         * aot.c : Reverting the previous fix. This time it broke linux build.
18404
18405 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18406
18407         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18408
18409 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * mini.c (handle_stack_args): Remove some more debugging code.
18412         
18413         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18414
18415         * driver.c mini.h aot.c: Allow additional options to be specified with
18416         --aot and pass them to mono_compile_assembly.
18417
18418         * aot.c: Add experimental code to AOT compile all loaded assemblies
18419         on demand and save the code into a cache in the filesystem.
18420
18421         * aot.c: Add support for more wrapper methods.
18422         
18423         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
18424         58863.
18425
18426         * cpu-*.md: Remove removed opcodes.
18427
18428         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
18429         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
18430         related icalls to marshal.c.
18431
18432 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
18435
18436         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
18437
18438         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
18439
18440 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
18441         * liveness.c: If liveness is recomputated we need to reset the information
18442         for each variable. This way, if the liveness range has been narrowed
18443         by optimizations that happened after the last computation, we can return
18444         a smaller range.
18445         
18446         For example, if you have
18447         
18448         {
18449                 int i = 0;
18450                 
18451                 // Tons of code that does not affect i
18452                 
18453                 i = foo ();
18454                 ...
18455         }
18456         
18457         i = 0 is dead code and will be removed by SSA. However, when
18458         linear scan gets to the code, i will still appear to be live
18459         throughout the entire block. This prevents good register allocation.
18460
18461 2004-07-06  Martin Baulig  <martin@ximian.com>
18462
18463         * debug-mini.c (mono_debug_init_method): Allow
18464         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
18465         (mono_debug_add_icall_wrapper): New method.
18466
18467         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
18468
18469 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
18470
18471         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
18472         optimization.
18473
18474 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
18475
18476         * aot.c (mono_aot_load_method): Fix loading of debug info.
18477
18478 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * aot.c: Add logging support.
18481
18482 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18483
18484         * mini.h: Add prototype for mono_print_method_from_ip.
18485
18486         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
18487
18488         * inssel.brg: 64 bit fixes.
18489
18490         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
18491         inssel-long32.brg.
18492
18493         * Makefile.am: Add SPARC64 support.
18494
18495 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18496
18497         * aot.c: Fix alignment problems on 32 bit platforms.
18498
18499 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18500
18501         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
18502         SPARC64.
18503
18504         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
18505         problems.
18506
18507         * mini.h: Bump AOT file version. Some 64 bit fixes.
18508
18509 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18510
18511         * inssel-sparc.brg: Add new rule to avoid register moves.
18512
18513         * inssel.brg: Add ldind_to_load_membase helper function.
18514
18515 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
18516
18517         * mini.c: OffsetToStringData intrinsic.
18518         
18519 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18520
18521         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
18522
18523         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
18524         regression tests.
18525
18526         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
18527 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18528
18529         * mini.c: reinstated mono_compile_get_interface_var()
18530         on x86, too, since the change breaks the Gtk# build there as well.
18531
18532 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18533
18534         * driver.c: remove loop from the default optimizations: it seems to
18535         interact badly with some of the other options (see bug #60613).
18536
18537 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
18538
18539         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
18540         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
18541
18542 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
18543
18544         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
18545         vararg-using methods.
18546
18547 2004-06-21  Martin Baulig  <martin@ximian.com>
18548
18549         * mini/mini-exceptions.c
18550         (mono_handle_exception): Added `gpointer original_ip' argument.
18551         After calling mono_unhandled_exception(), call
18552         mono_debugger_unhandled_exception() and if that returns true,
18553         restore the context and return.
18554
18555 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18556
18557         * mini-ppc.c: prefer the use of relative branches so
18558         they won't need to be patched in aot code (patch from Patrick Beard).
18559
18560 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18561
18562         * aot.c: patch from Patrick Beard to make the output assembly
18563         more correct for the MacOSX assembler. Small tweak to
18564         generate sane images on Linux/PPC, too.
18565
18566 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18567
18568         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
18569         case until bug #59509 is fixed (shows up in #60332).
18570
18571 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18572
18573         * mini.c: make sure the needed wrappers are compiled, too, with
18574         precomp.
18575
18576 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
18577
18578         * driver.c: remove NPTL reference in --version output.
18579
18580 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18581
18582         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
18583         generate valid assembly for the Mach-O assembler.
18584
18585 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18586
18587         * driver.c: don't include abcrem in the all optimization specifier
18588         since it slows down jit compilation too much for now.
18589
18590 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
18591
18592         * mini.c: use BIGMUL only if both operands have the same signage.
18593         * iltests.il: Test for bug 60056. (errors related to signage in
18594         BIGMUL).
18595
18596         r=lupus.
18597
18598 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
18599
18600         * mini.c, aot.c: memory leak fixes.
18601
18602 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18603
18604         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
18605
18606 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
18607
18608         * Makefile.am: remove the -static hack completely, it links in
18609         statically glib as well.
18610
18611 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18612
18613         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18614         * exceptions.cs: make it compile with new mcs/csc.
18615
18616 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18617         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18618         and added relevant test case.
18619
18620 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18621
18622         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18623         regressions in gtk-sharp.
18624
18625 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18626
18627         * exceptions.cs: New regression tests.
18628
18629         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18630
18631 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18632
18633         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18634
18635 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18636
18637         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18638
18639         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18640
18641 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18642
18643         * mini.c (mono_jit_runtime_invoke): Init class in this
18644         method instead of trusting mono_jit_compile_method to
18645         do the work (because wrappers can be in object class)
18646
18647 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18648
18649         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18650
18651         * basic-long.cs: New regression test.
18652
18653 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18654
18655         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18656         and div/rem checks.
18657
18658 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18659
18660         * Makefile.am: fix miguel's change to build mono statically against
18661         libmono (track build dependencies).
18662
18663 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * cfold.c: Some glib versions do not have G_MININT32.
18666
18667 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18668
18669         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18670         with precision of tan, atan, sin and cos, and implemented related
18671         regressions tests (fixes bug 54467, but one new problem appeared and
18672         is not fixed yet).
18673
18674 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18675
18676         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18677
18678         * exceptions.cs: Add test for constant folding && division by zero.
18679
18680         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18681         since driver.c is in libmono too, so the optimization was useless.
18682
18683         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18684         variable to driver.c so the compiler can emit more efficient code to
18685         access them.
18686
18687 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18688
18689         * Makefile.am: don't distribute generated inssel.[ch] files.
18690
18691 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18692
18693         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18694         into the default appdomain. Fixes #58707.
18695
18696         * jit-icalls.c: Remove the broken approximation for truncl, doing
18697         no conversion is better.
18698
18699         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18700         Fixes #58863.
18701
18702 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18703
18704         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18705         of the mcrxr instruction which is not available on some processors
18706         even if it's documented to be. Implement add and sub overflow correctly
18707         (still not complete for long unsigned). Speed up icalls a bit.
18708
18709 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18710
18711         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18712         we run .cctor in the current domain instead of target_domain.
18713         
18714         Fixes bug #58558, .cctor not being called in -O=shared.
18715
18716 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18717
18718         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18719
18720 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18721
18722         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18723         which can be done with an imm8, do it that way.
18724         (mono_arch_output_basic_block): ditto for a jmp
18725         (mono_arch_emit_prolog): Computate maximum offset of a label.
18726
18727 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18728
18729         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18730         now tries to allocate prefered physical reg's for virtual
18731         regs. This reduces the number of emited spills/loads with
18732         20-30% on our core assemblies.
18733
18734 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18735
18736         * jit-icalls.c: truncl() is not needed and trunc() is
18737         the correct thing to do anyway (bug #58287).
18738
18739 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18740
18741         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18742         if available.
18743
18744 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18745
18746         * driver.c: enable loop optimizations by default.
18747
18748 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18749
18750         * mini-x86.c: fix calc of max loop size when aligning loops start.
18751
18752 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18755         the stack.
18756
18757 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18758
18759         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18760         should set carry.
18761
18762         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18763
18764         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18765         
18766         * mini.c (inline_method): Allways inline some wrappers even if the cost
18767         is too large. Fixes #58785.
18768
18769         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18770         
18771 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18772
18773         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18774         (crichton@gimp.org). Beginning of support for sparc/linux.
18775
18776         * mini-sparc.c: Optimize retrieval of LMF address.
18777
18778 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18779
18780         * exceptions-ppc.c:  handle alloca in methods with clauses.
18781
18782 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18783
18784         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18785
18786 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18787
18788         * mini.c: Delegate most of the abort signal work to 
18789           mono_thread_request_interruption, which also handles Stop and Suspend
18790           states.
18791
18792 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18793
18794         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18795         supports the save/restore lmf opcodes.
18796
18797 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18798
18799         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18800         by gcc-3.4 as well.
18801
18802         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18803
18804 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18805
18806         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18807         methods which contain array accesses.
18808
18809         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18810         boundaries. Fixes #58537.
18811
18812         * iltests.il: Add regression test for #58537.
18813
18814 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18815
18816         * mini-x86.c (mono_arch_local_regalloc): Last part of
18817         fix for bug #58633 (releasing register to early).
18818
18819 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18820
18821         * basic-long.cs: Add new regression test.
18822
18823 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18824
18825         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18826         register too early on the chain.
18827
18828 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18829
18830         * mini.c (create_helper_signature): Use a helper function to reduce
18831         the code which needs to be written. Also set the calling convention of
18832         icalls on windows. Fixes #57840.
18833
18834 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18835
18836         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18837         exceptions-ppc.c: added helper function to get the instruction address
18838         from a signal handler context.
18839
18840 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18841
18842         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18843         from gonzalo.
18844
18845 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18846
18847         * helpers.c: Add new env variable to pass args to objdump.
18848         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18849
18850 2004-05-17  Radek Doulik  <rodo@ximian.com>
18851
18852         * Makefile.am (common_sources): added abcremoval.h so it get
18853         disted and daily mono packages on go-mono.com will build again
18854
18855 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18856
18857         * abcremoval.c: Fixed coding style, added copyright header.
18858
18859         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18860
18861         * mini.h: Added prototype for abc removal main function.
18862
18863         * build_relations_propagation_table.pl: Added copyright header.
18864
18865 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18866
18867         * basic-long.cs: reg test for complex ceq_long bug.
18868
18869 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18870
18871         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18872         reg in long and clob case (bug #58343). Fixed/added comments.
18873
18874 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18875
18876         * mini.c (mono_jit_runtime_invoke): Follow new convention
18877         of calling the invoke method with an function pointer.
18878
18879 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * ChangeLog: Fix author of memory leak patch.
18882
18883 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18884
18885         * Makefile.am: fix make dist as well...
18886
18887
18888 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18889
18890         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18891         on archs where pointers are 4 bytes long.
18892
18893         * Makefile.am: Added abcremoval.c source file.
18894
18895         * abcremoval.c: Added abcremoval.c.
18896
18897         * abcremoval.h: Added abcremoval.h.
18898
18899         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18900
18901         * inssel.brg: Enabled bounds check removal.
18902
18903         * mini.c: Added support for abcrem optimization.
18904
18905         * mini.h: Added abcrem optimization label.
18906
18907         * driver.c: Added support for abcrem optimization.
18908
18909         * propagated_relations_table.def: Added propagated_relations_table.def.
18910
18911 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18912
18913         * mini.c, cfold.c: fix style.
18914
18915 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18916
18917         * mini.c: handle issue with the low-level implementation of
18918         some long opcodes (bug #54209).
18919
18920 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18921
18922         * basic.cs: test for my new cmov stuff.
18923
18924 2004-05-13      Patrik Torstensson
18925
18926         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18927         opt and added peephole documentation.
18928
18929 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18930
18931         * tramp-ppc.c: rewrote the generic trampoline code.
18932
18933 2004-05-11      Patrik Torstensson
18934
18935         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18936
18937 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18938
18939         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18940
18941         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18942         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18943
18944         * mini.c: Add new icalls for AsAny marshalling.
18945
18946 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18947
18948         * tramp-ppc.c, mini-ppc.c: more cleanups.
18949
18950 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18951
18952         * mini.c: no warnings.
18953
18954 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18955
18956         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18957
18958 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18959
18960         * mini.c: In the thread abort signal handler, if the thread is in the
18961         process of being stoped, don't throw the Abort exception, just stop the
18962         thread.
18963
18964 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18965
18966         * tramp-ppc.c: removed old code.
18967
18968 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18969
18970         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18971         do some simple speed optimizations on ppc.
18972
18973 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18974
18975         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18976         and large offsets in load/store.
18977
18978 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18979
18980         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18981         it causes regressions.
18982
18983 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18984
18985         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18986         support.
18987
18988 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18989
18990         * jit-icalls.c: remove warnings.
18991         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18992         speedups for unsafe code.
18993
18994 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18995
18996         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18997
18998 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * basic-calls.cs: Add new regression test.
19001
19002         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
19003         more portable.
19004
19005         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
19006
19007         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
19008         is no longer used.
19009
19010 2004-05-06      Patrik Torstensson
19011
19012         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
19013         long reg allocation in any reg (not only eax:edx) and implemented 
19014         long shl/shr ops in asm instead of helpers.
19015
19016 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
19017
19018         * mini-sparc.h: Fix warnings.
19019
19020         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
19021         stack.
19022
19023         * mini-exceptions.c (mono_handle_exception): Call the filter in a
19024         separate statement for clarity.
19025
19026         * mini-sparc.c: Update status.
19027
19028 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
19029
19030         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
19031         here.
19032
19033 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19034
19035         * inssel-ppc.brg: another small pre-release workaround:
19036         we don't do overflow detection for long_sub_un.
19037
19038 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19039
19040         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
19041         (also works around a weird ppc bug: 57957).
19042
19043 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
19044
19045         * tramp-ppc.c: trampoline fixes.
19046
19047 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
19048
19049         * mini-ppc.c: fixed typos.
19050
19051 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19052
19053         * mini-ppc.c, exceptions-ppc.c: more code saves registers
19054         at the top of the stack. Fixed typos. Use a frame registers
19055         for all the methods with exception clauses.
19056
19057 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19058
19059         * exceptions-ppc.c: restore fp registers.
19060
19061 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19062
19063         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
19064         order from the stack top (moved the stack room to save the
19065         return value for trace after the param area). Fixed corruption
19066         in restoring registers on unwind.
19067
19068 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19069
19070         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
19071
19072 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19073
19074         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
19075         and prolog/epilog for methods that use it. Allow
19076         enough param area room for varargs methods. Fix miguel's
19077         breakage in exception handling.
19078
19079 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19080
19081         * Makefile.am: run genmdesc only on current arch.
19082
19083 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19084
19085         * exceptions-x86.c:
19086         * mini-x86.h: fix the build on windows.
19087
19088 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
19089
19090         * 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.
19091
19092         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
19093
19094         * mini-exceptions.c: New file.
19095         
19096         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
19097         Move some parts of the x86 exception handling code to an 
19098         arch-independent file so it can be shared with other ports.
19099
19100 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
19101
19102         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
19103
19104 2004-04-26  David Waite  <mass@akuma.org>
19105
19106         * driver.c: remove comma from end of enumeration declaration
19107
19108 2004-04-26  Jackson Harper  <jackson@ximian.com>
19109
19110         * driver.c: parse config file before loading first assembly. This
19111         allows the user gac to be enabled/disabled. 
19112         
19113 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
19114
19115         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
19116         simpler mechanism: we do not care what is encoded initially
19117         (branch absolute or relative), we care about the code and its
19118         target.  I kept the old code for reference for now.
19119
19120         The new code tries first to determine if the jump is anywhere in
19121         the -/+32 absolute meg range, if it succeeds, it encodes using the
19122         absolute branch;  If not, it tried to find something in the
19123         relative range, if not, it uses the handle_thunk code. 
19124
19125 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
19126
19127         * exceptions-ppc.c: use the correct ip register on macosx.
19128
19129 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
19130
19131         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
19132
19133 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
19134
19135         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
19136         Raise exception on integer divide by zero by hand since the hw
19137         doesn't support it. Handle NaNs in FP compares.
19138
19139 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
19140
19141         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
19142         code reducing duplication between the platforms and enabled
19143         signal exception handling (on linux for now).
19144
19145 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
19146
19147         * exceptions-ppc.c: more macosx support.
19148
19149 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19150
19151         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
19152
19153 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19154
19155         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
19156
19157 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19158
19159         * iltests.il: more tests.
19160
19161 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19162
19163         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
19164         vars as well.
19165
19166 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19167
19168         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
19169
19170 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19171
19172         * liveness.c: Mark variables as volatile in all basic blocks reachable
19173         from exception clauses.
19174
19175 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
19176
19177         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
19178         inlining.
19179
19180 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19181
19182         * iltests.il, basic.cs: more tests for regalloc.
19183
19184 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19185
19186         * iltests.il: Some tests for register allocation modifications
19187         I have locally.
19188
19189 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
19190
19191         * exceptions.cs: Add regression test for bug #56782.
19192
19193         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
19194         original stack trace if an exception is rethrown. Fixes #56782. Oh,
19195         the beauty of fixing the same thing in 5 different files...
19196
19197 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
19198
19199         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
19200         methods.
19201
19202 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
19203
19204         * mini.c: Add support for STRWLPARRAY marshalling convention.
19205
19206 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19207
19208         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
19209         to init the context to setup the regs pointer).
19210
19211 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19212
19213         * exceptions-ppc.c: more exceptions work.
19214
19215 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19216
19217         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
19218         not allowed.
19219
19220 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19221
19222         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
19223         can use the memory directly.
19224
19225         * cpu-pentium.md: Update documentation from a post from Zoltan. 
19226
19227         add x86_add_membase, x86_sub_membase, x86_mul_membase
19228
19229 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19230
19231         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
19232         GENERAL_REGS they were also hardcoded for all PPC ports.
19233
19234         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
19235
19236         Remove hard-coded limit for floating point registers, use
19237         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
19238
19239         Notice that in MacOS X calling conventions you can fit a lot more
19240         floating point values in registers, so I should update the PInvoke
19241         test to excercise the passing of floating point values on the
19242         stack (currently broken).
19243         
19244 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
19245
19246         * tramp-ppc.c (create_trampoline_code): Added
19247         JUMP_TRAMPOLINE_SIZE. 
19248         (ppc_magic_trampoline): Follow the pattern from
19249         x86_magic_trampoline: if code is set to zero, return. 
19250         (create_trampoline_code): Always pass MonoMethod to the jump
19251         trampoline, before it was passing a null.
19252         (mono_arch_create_jump_trampoline): Implement the jump stub, could
19253         share the code with mono_arch_create_jit_trampoline. 
19254
19255         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
19256         implemented.
19257         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
19258         implemented.  
19259
19260         * cpu-g4.md: Added length for jmp instruction, the worst case
19261         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
19262         for save_lmf).
19263
19264 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
19265
19266         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
19267
19268 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
19269
19270         * mini.c: Only set bblock->real_offset when adding a new bblock, and
19271         before each IL instruction.
19272
19273         * mini.c (CEE_BOX): Fix warnings.
19274
19275 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19276
19277         * mini.c: removed a few unused vars and extra whitespace.
19278
19279 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
19280
19281         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
19282         checks.
19283         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
19284         index.
19285         (OP_GETCHR): use the above
19286         (CEE_LDELEMA): use the above.
19287
19288         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
19289         version of the generic impl.
19290         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
19291         (CEE_LDELEMA): use the above.
19292
19293 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19294
19295         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
19296         Fixes #56317.
19297
19298         * iltests.il: Added new regression test for #56317.
19299
19300 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19301
19302         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
19303         under NetBSD. Fixes #56450.
19304
19305         * liveness.c (update_gen_kill_set): Fix previous patch.
19306
19307 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19308
19309         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
19310
19311 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
19314         ldsfld and ldsflda.
19315
19316         * inssel-sparc.brg: Add more optimizations.
19317
19318         * mini-sparc.c: Replace multiply/divide with shifts if possible.
19319
19320 2004-04-01  Martin Baulig  <martin@ximian.com>
19321
19322         * mini.c (handle_box): New static function; moved the
19323         implementation of CEE_BOX here.
19324         (mono_method_to_ir): Added `constrained_call' variable.
19325         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
19326         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
19327         mono_method_get_constrained() to get the method.
19328
19329 2004-04-01  Martin Baulig  <martin@ximian.com>
19330
19331         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
19332         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
19333         (mono_method_to_ir): We don't need these macros anymore since
19334         mono_class_get_full() already takes care of it. 
19335
19336 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19337
19338         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
19339         use @function (as doesn't accept #function here) and check the return
19340         value of system and stop if fails.
19341
19342 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19343
19344         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
19345
19346 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
19347
19348         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
19349
19350         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
19351
19352         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19353         #56223.
19354
19355         * basic-long.cs: Add test for negation of Int64.MinValue.
19356
19357 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19358
19359         * mini-sparc.c: Update status.
19360
19361         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19362
19363         * exceptions-sparc.c: Fix return value in filters.
19364
19365         * inssel-sparc.brg: Fix register allocation in some rules.
19366
19367 2004-03-28  Martin Baulig  <martin@ximian.com>
19368
19369         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19370         if neccessary.  
19371
19372 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19373
19374         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19375         
19376         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19377         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19378         remove unused conv_u4 opcode.
19379
19380         * mini-x86.c: Remove valgrind workaround since it slows down things
19381         even when mono is not run under valgrind.
19382
19383 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * mini-sparc.c: Update status.
19386
19387         * inssel-sparc.brg: Add some optimizations.
19388
19389         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19390         future delay slot filling. Add support for varargs, tail calls and JMP.
19391
19392         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19393         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19394
19395         * inssel.brg: Fix register allocation in OP_ARGLIST.
19396
19397         * inssel.brg: Fix warnings.
19398
19399 2004-03-25  Martin Baulig  <martin@ximian.com>
19400
19401         * mini.c (inflate_generic_field): Removed.
19402         (mini_get_method): Removed, use mono_get_method_full(),
19403         (mini_get_class): Removed, use mono_class_get_full().
19404         (mono_method_to_ir): Pass our generic context to
19405         mono_field_from_token().        
19406
19407 2004-03-25  Martin Baulig  <martin@ximian.com>
19408
19409         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19410         of a `MonoMethod *'.
19411         (mini_get_method): Take a `MonoGenericContext *' instead
19412         of a `MonoMethod *'.
19413         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19414         a new local variable called `generic_context' which holds the
19415         current `MonoGenericContext *'; use it to lookup things.
19416
19417 2004-03-24  Martin Baulig  <martin@ximian.com>
19418
19419         * mini.c (mini_get_class): New static method; if we're inside a
19420         generic instance, inflate the class if neccessary.
19421         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
19422
19423 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19424
19425         * iltests.il: New regression test for #55976.
19426
19427         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
19428         #55976.
19429
19430 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19431
19432         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
19433         output.
19434
19435 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19436
19437         * liveness.c: Consider SSA stores as well as loads when making vars
19438         volatile.
19439
19440         * exceptions.cs: New regression tests for register allocation.
19441         
19442 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
19443
19444         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
19445         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
19446           domain lock only to protect puntual access to data structures.
19447           Added access lock for sighash, jit_icall_hash_name, 
19448           jit_icall_hash_addr and domain->code_mp.
19449
19450 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
19451
19452         * driver.c: Print SIGSEGV handling method.
19453
19454         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
19455
19456         * mini.c (setup_jit_tls_data): Handle case when this is called
19457         multiple times for a thread.
19458
19459         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
19460         is different from fbxx_un. Fixes #54303. Also use constants instead of
19461         magic numbers in a lot of places.
19462
19463 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
19464
19465         * exceptions.cs: Fix cctor test when --regression is used.
19466
19467 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
19468
19469         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
19470         for Linux/ppc.
19471
19472 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19473
19474         * inssel-ppc.brg: fixed register assignments for some rules.
19475
19476 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         * exceptions.cs: Add test for exceptions in static constructors.
19479
19480         * mini.c (mono_jit_compile_method_with_out): Move the calling of
19481         static constructors outside the domain lock. Fixes #55720.
19482
19483 2004-03-17  Martin Baulig  <martin@ximian.com>
19484
19485         * mini.c (get_generic_field_inst): Removed, this'll never happen.
19486         (inflate_generic_field): Take the `MonoMethod *' instead of the
19487         `MonoClass *' and added support for generic method.
19488         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
19489         have a `field->parent->gen_params', only inflate the field if it's
19490         an open constructed type.
19491
19492 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19493
19494         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
19495         exception object instead of the preconstructed ones.
19496
19497 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19498
19499         * mini.c: reverted changed to sigsegv_signal_handler commited
19500         accidentally in the previous patch.
19501
19502 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19503
19504         * mini.c:
19505         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
19506         running --aot with an old assembly.
19507
19508 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
19511         point values.
19512
19513         * mini-sparc.c: Add support for v9 branches with prediction.
19514
19515 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
19516
19517         * mini.c (mini_init): #warning is GNUC only
19518
19519         * mini-sparc.h: implement __builtin_frame_address
19520         and __builtin_return_address for Sun C compiler
19521
19522 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
19525
19526 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
19527
19528         * basic-calls.cs: Add test for unaligned byref long argument passing.
19529
19530         * mini-ops.h: Add sparcv9 compare and branch instructions.
19531
19532         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
19533         v9 instructions if we have a v9 cpu.
19534
19535         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
19536         registers for global allocation.
19537
19538         * exceptions-sparc.c: Fixes.
19539         
19540 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * liveness.c (mono_analyze_liveness): Optimized version.
19543
19544         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
19545
19546         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
19547         sparc work.
19548
19549         * basic-float.cs basic-calls.cs: New regression tests.
19550
19551 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
19554         sigaltstack implementation.
19555
19556         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
19557         
19558         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
19559         stuff if SIGSEGV_ON_ALTSTACK is not defined.
19560
19561 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
19562
19563         * mini.c: Fix warnings.
19564         
19565         * mini.c (mono_resolve_patch_target): New function which contains the
19566         arch independent part of the patching process.
19567
19568         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
19569         patching code to a separate function.
19570
19571 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
19572
19573         * mini.c (add_signal_handler): ifdef out on Windows
19574
19575 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
19578         cpu-sparc.md: Add exception handling support + other fixes.
19579
19580         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
19581         typed GC detection in --version.
19582
19583         * basic.cs exceptions.cs: New regression tests.
19584
19585         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
19586         the arch specific code can store data during a compilation.
19587
19588         * mini-ops.h: Add OP_SETFRET.
19589
19590         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
19591         function, register a separate icall for each arity, so the icalls can
19592         get a wrapper.
19593         
19594         * mini.c (mono_print_tree): Print negative offsets in a more readable
19595         form.
19596         
19597         * mini.c: Make signal handling work on sparc.
19598         
19599         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
19600
19601         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
19602
19603         * jit-icalls.c: Emulate truncl by aintl on solaris.
19604
19605         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
19606
19607 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
19608
19609         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
19610
19611 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19612
19613         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19614         a MarshalByRef type, inline a method that performs the check, taking into
19615         account that the object can be a proxy. Also implemented tow new opcodes:
19616         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19617         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19618         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19619
19620 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19621
19622         * mini-ppc.c: if a relative branch displacement is too big
19623         but it points to and area reachable with an absolute branch, 
19624         avoid the thunks.
19625
19626 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19627
19628         * mini.c: optimize small copies in cpblk.
19629
19630 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * basic-calls.cs basic-float.cs: New regression tests.
19633
19634         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19635         negative offsets from %fp. Implement localloc. Fix local register 
19636         allocation. Fix the case when the this argument needs to be saved to
19637         the stack. Implement some missing opcodes.
19638
19639 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * mini.c (mini_method_compile): Reenable global regalloc in methods
19642         with exception handlers.
19643
19644         * linear-scan.c (mono_varlist_sort): Fix warning.
19645
19646         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19647
19648         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19649         regalloc costs.
19650
19651         * liveness.c: Make all variables uses in exception clauses volatile, to
19652         prevent them from being allocated to registers. Fixes #42136.
19653
19654 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19657         causes regressions.
19658
19659         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19660         argument to mono_arch_regalloc_cost.
19661
19662         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19663         precisely.
19664
19665 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19668         Make the cost of allocating a variable to a register arch dependent.
19669
19670         * basic-calls.cs: Fix compilation of tests.
19671         
19672         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19673         helper function to cut back on the number of #ifdefs needed.
19674
19675         * mini-ppc.c: Fix compilation.
19676
19677         * basic-calls.cs: New regression tests.
19678
19679         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19680
19681         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19682         of l0 since that is callee saved.
19683
19684         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19685         to virtual calls.
19686
19687         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19688         of delay instruction.
19689
19690         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19691
19692         * mini.h (MonoCallInst): Add 'virtual' flag.
19693
19694         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19695
19696 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * *.cs: New regression tests.
19699
19700         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19701         work.
19702
19703         * mini.c (mono_runtime_install_handlers): Fix build.
19704
19705         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19706         'signal_stack_size' members.
19707
19708         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19709         alternate signal stack.
19710
19711         * exceptions-x86.c: Add stack overflow handling.
19712
19713         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19714         functions to arch independent code.
19715
19716         * mini.c (mono_print_tree): Print more detailed info for load_membase
19717         opcodes.
19718         
19719 2004-02-23  Martin Baulig  <martin@ximian.com>
19720
19721         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19722
19723 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19724
19725         * mini-x86.c: fixed reg allocation for div/rem.
19726
19727 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19728
19729         * driver.c (mono_main): Report some configuratio options on --version.
19730
19731 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19732
19733         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19734         low in the address space. Correctly flush memory in thunks where we
19735         output native code.
19736
19737 2004-02-20  Martin Baulig  <martin@ximian.com>
19738
19739         * mini.c (mini_get_method): New static method; inflate all generic
19740         methods and methods in open generic instances.
19741         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19742         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19743
19744 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19745
19746         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19747
19748         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19749
19750 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19751
19752         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19753
19754         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19755         it compile using Sun's compiler.
19756
19757 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * 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.
19760
19761         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19762
19763 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19764
19765         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19766         code.
19767         * mini-ppc.c: handle calls outside of the allowed range with thunks
19768         allocated using the code manager.
19769         * tramp-ppc.c: use the code manager to hold generated native code.
19770         Fixed the magic trampoline to just patch vtable entries.
19771
19772 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19775         independent file.
19776
19777 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19778
19779         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19780         PPC.
19781
19782         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19783         if we have a working __thread implementation.
19784
19785         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19786         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19787
19788 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19789
19790         * mini-x86.c: Fix compilation under gcc 2.
19791         
19792 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19793
19794         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19795         contains a call to the wrapped function.
19796
19797         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19798         OP_<CALL>_IMM opcodes, and use them under X86.
19799         
19800         * mini.c (mono_jit_find_compiled_method): Fix warning.
19801
19802         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19803
19804         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19805
19806         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19807         functionality to mini.c.
19808
19809         * mini.c (mono_create_jump_trampoline): New function to create a jump
19810         trampoline. Return a compiled method instead of a trampoline if it
19811         exists. Add a cache for jump trampolines.
19812
19813         * mini.c (mono_jit_find_compiled_method): New function to return a
19814         compiled method if it exists.
19815
19816         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19817         mono_arch_create_jit_trampoline.
19818
19819         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19820         a jump trampoline. Fixes #52092.
19821         
19822 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19823
19824         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19825         which is not up-to-date. Add check_corlib_version () instead.
19826
19827         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19828         have to call it.
19829         
19830         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19831         since newer valgrind versions do not need it.
19832
19833         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19834         compile a method with a given set of optimizations.
19835
19836         * mini.c: Compile icall wrappers on-demand instead of at startup.
19837
19838         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19839         wrapper for an icall.
19840
19841 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19844         #54063.
19845
19846         * iltests.il: Add test for non-empty stack before switch instruction.
19847
19848 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19849
19850         * mini.c: Add support for new stringbuilder marshalling conventions.
19851
19852         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19853
19854 2004-02-01  Martin Baulig  <martin@ximian.com>
19855
19856         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19857         in `ginst->mtype_argv'.
19858
19859 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19860
19861         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19862         facilitate grepping.
19863
19864 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19865
19866         * mini.c: fixed buglet in initobj generic implementation for references.
19867
19868 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19869
19870         * Makefile.am: make the version script conditional.
19871         * jit-icalls.c: handle missing truncl().
19872
19873 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * exceptions.cs: Add more tests for double->int conversion.
19876
19877         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19878         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19879
19880 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19881
19882         * driver.c: make --verbose --version emit an error
19883         if the loaded corlib doesn't match the runtime version.
19884
19885 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19886
19887         * mini-ppc.h: export ppc_patch().
19888         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19889         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19890         on par or better than on MacOSX.
19891
19892 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19893
19894         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19895         mono_lookup_pinvoke_call.
19896
19897         * mini-x86.c: Under windows, the default pinvoke calling convention is
19898         stdcall. Fixes #52834.
19899
19900         * mini.c (optimize_branches): Add an upper bound to the number of
19901         iterations to prevent infinite loops on strange loops. Fixes #53003.
19902
19903 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19906         and ISINST. Fixes #52093.
19907
19908         * objects.cs (test_0_vector_array_cast): New tests.
19909         
19910 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19913         checking in Array.Set ().
19914
19915         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19916         #52590.
19917
19918         * object.cs (test_0_multi_array_cast): New regression test.
19919
19920 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19921
19922         * exceptions-ppc.c: fix build on Linux/PPC.
19923
19924 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19927         running under valgrind.
19928         (x86_magic_trampoline): Fix build bustage.
19929
19930         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19931         negative values as well. This is needed for the encoding of the line number
19932         info, since sometimes the line numbers are not in increasing order.
19933
19934 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19935
19936         * cpu-pentium.md (localloc): Increase the size of the localloc 
19937         instruction since it is a loop under Win32.
19938
19939         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19940         allocation.
19941
19942 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19945         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19946         Max Horn (max@quendi.de). Fix file names in comments.
19947
19948 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19949
19950         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19951         avoid stack overflow.
19952         (replace_usage): Avoid uninitialized variable warnings.
19953
19954         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19955         and taking the address of valuetype variables.
19956
19957 2004-01-03  Patrik Torstensson
19958
19959         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19960         for other purposes than FP later on.
19961
19962 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19963
19964         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19965         of tail calls.
19966
19967 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19968
19969         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19970
19971 2003-12-30  Patrik Torstensson <p@rxc.se>
19972
19973         * mini-x86.h: Decreased number of availiable fp regs.
19974         Solves corner cases with FP spilling.
19975
19976 2003-12-23  Patrik Torstensson <p@rxc.se>
19977
19978         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19979         for floating point stack tracking / spilling on x86. 
19980         Fixes bug #49012.
19981         
19982         * basic-float.cs: added float mul overflow test.
19983
19984 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19985
19986         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19987
19988 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19989
19990         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19991         supports for cond branches that overflow the immediate
19992         overflow offset. mcs can compile simple programs.
19993
19994 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19995
19996         * exceptions-ppc.c: exception handling support wip:
19997         finally handlers get run on exception.
19998
19999 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
20000
20001         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
20002         profiling.
20003
20004 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20005
20006         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
20007         initial support for stack walking and unwinding.
20008
20009 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
20010
20011         * driver.c (mono_main): Make corlib-out-of-sync message more 
20012         descriptive. Also remove verify_corlib call.
20013
20014 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20015
20016         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
20017         not overlap with other call's arguments, too.
20018
20019 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
20020
20021         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
20022         move to arch-specific code the choice of arch-specific
20023         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
20024         * mini.c: ensure emulation calls will not interleave
20025         with other calls.
20026
20027 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
20028
20029         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
20030         the magic trampoline stack frame is dropped before executing
20031         the new method.
20032
20033 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20034
20035         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
20036         and integer to fp conversions. Added support for overflowing
20037         arguments on the stack. Reserve a couple more registers as temps.
20038         Added support for aot compilation (as output still needs to be
20039         tweaked, though).
20040
20041 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20042
20043         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
20044         Don't overwrite return register in some corner cases.
20045
20046 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
20049         static constructors when AOT compiling.
20050
20051         * driver.c (mono_main): Call mono_check_corlib_version.
20052
20053 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20054
20055         * cpu-g4.md, basic.cs: fixed div target register.
20056
20057 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20058
20059         * mini-ppc.c, basic.cs: shl_imm fix with test.
20060
20061 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20062
20063         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
20064         structures by value. Misc fixes.
20065         * objects.cs: more tests.
20066
20067 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
20068
20069         * mini-ppc.c: lconv.ovf.i implemented.
20070
20071 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20072
20073         * mini.c:
20074         (mini_init): don't error out if someone already called g_thread_init.
20075
20076 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20077
20078         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
20079         to be any type per the spec. Fix abnormal memory usage when
20080         the same object is repeatedly thrown.
20081
20082 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
20083
20084         * mini.c: check for overruns in IL code.
20085
20086 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
20087
20088         * TODO: Add/remove some todo entries.
20089
20090 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * driver.c (mono_main): Call mono_verify_corlib.
20093
20094 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
20095
20096         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
20097         This has been moved to mini.c
20098         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
20099         type being casted is marshalbyref it could be a proxy, so instead of
20100         emitting the type check code, emit a call to a runtime method that will
20101         perform the check by calling CanCastTo if needed.
20102
20103 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
20104
20105         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
20106         methods with large stack frames under Win32.
20107
20108 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * Makefile.am: Distribute regression tests.
20111
20112         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
20113         at the end instead of inserting each variable into the sorted list.
20114
20115         * linear-scan.c (mono_varlist_sort): New helper function.
20116         
20117 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20118
20119         * mini.c: ensure arguments and locals are within bounds.
20120
20121 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20122
20123         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
20124         related fixes.
20125
20126 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * mini.c (mono_cprop_copy_values): Fix crash.
20129
20130         * aot.c: Set verbosity back to 0.
20131         
20132 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20133
20134         * regalloc.c: complete memory leak fix by Laurent Morichetti
20135         (l_m@pacbell.net).
20136
20137 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * driver.c (main_thread_handler): Revert the previous patch.
20140
20141         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
20142         under valgrind.
20143
20144         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
20145         memory from the memory pool.
20146
20147         * driver.c (main_thread_handler): Turn on all optimizations when
20148         --aot is used.
20149
20150         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
20151         an array for better performance.
20152
20153         * regalloc.c (mono_regstate_assign): Fix memory leak.
20154
20155         * debug-mini.c (mono_debug_serialize_debug_info): New function to
20156         serialize the debug info.
20157
20158         * debug-mini.c (mono_debug_add_aot_method): New function to load the
20159         debug info from the serialized representation.
20160
20161         * aot.c: Save debug info into the generated file and load it when 
20162         loading a method.
20163
20164         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20165
20166 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20167
20168         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
20169         More FP-related fixes.
20170
20171 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
20172
20173         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
20174         and register allocation buglet. Hello world now runs.
20175
20176 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20177
20178         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
20179         * tramp-ppc.c: fixed class init trampoline.
20180         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
20181
20182 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20183
20184         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
20185         mini.c: more ppc changes/fixes.
20186
20187 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
20190         Also optimize the case when the arguments are the same in the caller 
20191         and in the callee.
20192
20193         * iltests.il: Add tests for tail calls with valuetype arguments.
20194
20195 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20196
20197         * mini-ppc.c: fixes for struct return type.
20198
20199 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
20200
20201         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
20202         mono_spillvar_offset() to arch-specific code.
20203
20204 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
20205
20206         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
20207
20208 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20209
20210         * exceptions-x86.c: Fix stack space leaks.
20211         
20212         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
20213         registers from the lmf if the method has save_lmf set.
20214
20215 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
20216
20217         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
20218         of icall wrappers into InvokeInDomain, since these are now per-domain.
20219
20220 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
20221
20222         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
20223         make some opcode emulation and intrinsic ops enabled/disabled 
20224         according to the architecture. More fixes.
20225
20226 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
20227
20228         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
20229
20230 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20231
20232         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
20233         arch-specific handling for 'this' and struct return type to
20234         arch-specific code.
20235
20236 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20237
20238         * aot.c: prevent divide by zero error when reporting (it happened with
20239         Accessibility.dll).
20240
20241 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
20242
20243         * mini.h (inst_switch): Remove unused macro.
20244
20245 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20246
20247         * aot.c:
20248         (load_aot_module): free 'info->methods' and 'info' properly. No more
20249         "free(): invalid pointer blah" messages when you have an old aot
20250         compiled assembly.
20251
20252 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
20253
20254         * jit-icalls.c, mini.c: Added support for context static fields.
20255
20256 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20257
20258         * mini.c (mono_method_blittable): Methods which set LastError are not 
20259         blittable either. Fixes #51108.
20260         
20261 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20262
20263         * mini.c: flush icache.
20264         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
20265
20266 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20267
20268         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
20269
20270 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
20271
20272         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
20273         safe on IA32.
20274
20275         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
20276         vararg calls.
20277
20278         * inssel.brg (CEE_MKREFANY): Fix AOT case.
20279
20280 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
20281
20282         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
20283         instruction when the result is discarded.
20284
20285         * iltests.il (test_0_div_regalloc): New regression test.
20286
20287         * arrays.cs: Fix compilation error.
20288
20289 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20290
20291         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
20292         float rules to inssel-x86.brg: sane architectures with FP registers
20293         don't need to implement these rules.
20294
20295 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20296
20297         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
20298
20299 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20300
20301         * mini.h, inssel-long32.brg: fixed endianess issues in int64
20302         implementation of 32 bit systems.
20303
20304 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20305
20306         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
20307         (Jeroen Zwartepoorte).
20308
20309 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20310
20311         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
20312         the caller and the callee matches.
20313         
20314         * mini.c (mono_method_to_ir): Add comment.
20315
20316         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
20317         signbit is missing on some platforms.
20318
20319 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20320
20321         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
20322
20323         * mini.c (setup_jit_tls_data): Call the new function.
20324         
20325         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
20326
20327         * mini-x86.c: Add experimental support for fast access to the lmf
20328         structure under NPTL/Linux 2.6.x.
20329
20330 2003-11-06  Martin Baulig  <martin@ximian.com>
20331
20332         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
20333         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
20334         the debugger.
20335
20336 2003-11-02  Martin Baulig  <martin@ximian.com>
20337
20338         * mini.c (inflate_generic_field): New static method.
20339         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
20340         generic instance and the field is declared in a generic type, call
20341         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
20342
20343 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20344
20345         * mini.h mini.c (mono_method_same_domain): New function to return
20346         whenever the caller and the callee are in the same domain.
20347
20348         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
20349
20350 2003-10-30  Martin Baulig  <martin@ximian.com>
20351
20352         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20353         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20354         method parameters.
20355         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20356         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20357
20358 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20359
20360         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20361         propagation.
20362
20363         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20364         object here, so it is in the correct appdomain etc.
20365
20366 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20367
20368         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20369         already done.
20370         (mono_method_to_ir): Avoid freeing the type created returned from
20371         mono_type_create_from_typespec, since it is put into an internal cache
20372         by the function. Fixes pointer.exe.
20373
20374         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20375         trampolines for icalls and pinvokes as well. Fixes #33569.
20376
20377 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * mini.c: Update after appdomain changes.
20380
20381         * mini.c (mono_jit_compile_method_inner): Allways compile native
20382         method wrappers in the root domain, since there can only be one
20383         instance of them, whose address is stored in method->info.
20384
20385 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20386
20387         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20388         environment variable. Instead detect automatically whenever running
20389         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20390         valgrind.h.
20391
20392 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20393
20394         * trace.c, trace.h: New files that implement the new trace option
20395         parsing. 
20396
20397         * driver.c: Document new --trace options.
20398
20399         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20400         mini-x86.c: Apply:
20401
20402         -       if (mono_jit_trace_calls)
20403         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20404
20405         * mini.h: prototypes.
20406         
20407 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20408
20409         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20410
20411         * mini.c inssel.brg: Implement typedefbyref opcodes.
20412
20413         * mini.c (mono_jit_compile_method): Remove unused local variable.
20414
20415         * mini.c (mono_jit_compile_method_inner): Ditto.
20416         
20417 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
20418
20419         * tramp-x86.c (x86_class_init_trampoline): Fix build.
20420         
20421         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
20422
20423 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20424
20425         * mini.c (mono_no_aot): Remove unused global variable.
20426
20427         * mini.c: Thread safety fixes.
20428
20429 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20430
20431         * mini.c (mono_create_class_init_trampoline): Add a lock around
20432         class_init_hash_addr.
20433
20434         * arrays.cs (test_0_newarr_emulation): Add new regression test for
20435         #30073.
20436
20437         * mini.c: Decompose the NEWARR instruction before decomposing its
20438         arguments. Fixes #30073.
20439
20440 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
20441
20442         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
20443         convention.
20444
20445 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20446
20447         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
20448
20449         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
20450
20451         * driver.c: Add support for compiling icall wrappers to --compile.
20452
20453 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20454
20455         * inssel.brg: The empty value in class->interface_offsets is -1, not
20456         0. Fixes #49287.
20457
20458 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20459
20460         * objects.cs: New test for 'is' operator on an array of interfaces.
20461
20462 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20463
20464         * tramp-ppc.c: update trampoline code to support jumps
20465         and class initialization.
20466
20467 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20468
20469         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
20470
20471         * inssel.brg (OP_UNBOXCAST): Fix #46027.
20472
20473         * inssel.brg (OP_UNBOX): Remove unused rule.
20474
20475         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
20476         region instead of one for each method. Fixes #47813.
20477
20478 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20479
20480         * exceptions.cs (test_0_nested_finally): New regression test for
20481         nested exception handlers.
20482
20483         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
20484
20485         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
20486
20487         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
20488         inlining.
20489
20490         * mini.c (mono_method_check_inlining): Make the inlining limit 
20491         configurable by an environment variable.
20492         
20493         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
20494
20495         * mini.h: Bump AOT file version.
20496
20497         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
20498         token, store the image along with the token, since the token might not 
20499         refer to the same image as the method containing the relocation, 
20500         because of inlining.
20501
20502 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * mini.c (mono_precompile_assemblies): New function to compile
20505         all methods in all loaded assemblies.
20506
20507         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
20508
20509         * regalloc.h regalloc.c (MonoRegState): Change the type of 
20510         iassign and fassign to int*, since they can contain large negative
20511         values if the register is spilled. Also added some comments. Fixes
20512         #45817.
20513
20514         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
20515         under Win32. Fixes #42964.
20516
20517 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20518
20519         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
20520
20521         * aot.c: Added support for AOT compiling methods which contain calls
20522         to wrappers. Currently, only remoting-invoke-with-check wrappers are
20523         handled.
20524         
20525         * driver.c (compile_all_methods): Run the compilation in a thread
20526         managed by mono. Fixes #44023.
20527
20528         * mini.c (mono_codegen): Print full method name in verbose output.
20529
20530         * mini-x86.c (mono_arch_patch_code): Fix warning.
20531         
20532         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
20533         jumps, since the method we are jumping to might be domain-specific.
20534
20535         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
20536
20537 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20538
20539         * inssel.brg: string chars are unsigned.
20540
20541 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20542
20543         * TODO: New todo item.
20544
20545         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
20546         which calls mono_runtime_class_init and patches the call site to
20547         avoid further calls.
20548         (mono_arch_create_class_init_trampoline): New arch specific function 
20549         to create a class init trampoline.
20550         (create_trampoline_code): Generalized so it can create
20551         class init trampolines as well.
20552
20553         * mini.c (helper_sig_class_init_trampoline): New helper variable.
20554         (mono_create_class_init_trampoline): New function to create and cache
20555         class init trampolines.
20556         (mono_find_class_init_trampoline_by_addr): New function to lookup the
20557         vtable given the address of a class init trampoline. Used by the
20558         patching process.
20559         (mono_codegen): Generate a call to a trampoline instead of
20560         mono_runtime_class_init in LDSFLD[A].
20561         (mono_codegen): Add relocations for the new trampoline.
20562         
20563         * mini.h mini-x86.c aot.c: Added a new relocation type: 
20564         MONO_PATCH_INFO_CLASS_INIT.
20565
20566         * mini.h: Bump AOT version number.
20567
20568         * aot.c: Create a copy of the loaded code instead of using the original
20569         so methods which call each other will be close in memory, improving
20570         cache behaviour.
20571         
20572         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
20573         patch since it breaks the regression tests.
20574         
20575         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
20576         for the register saving instruction sequence since the 
20577         frame_state_for function in glibc 2.3.2 don't seem to detect it.
20578
20579 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
20580
20581         * TODO: Fix todo item && remove another.
20582
20583 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
20586         previous checkin.
20587
20588         * aot.c: Moved the check for MONO_LASTAOT into the initialization
20589         function of the module.
20590
20591         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
20592         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
20593         --no-aot command line option.
20594
20595 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20596
20597         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
20598         by Bernie Solomon (bernard@ugsolutions.com).
20599
20600         * inssel.brg: Refactor the interface offset table related code into
20601         its separate functions and add support for the AOT case.
20602
20603 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * aot.c (mono_aot_get_method_inner): Fix memory leak.
20606         
20607         * aot.c: Added mono_aot_verbose variable and made all debugging
20608         output depend on the value of this variable.
20609
20610         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
20611         method_label and info_label.
20612
20613         * mini.h mini-x86.c aot.c: Added a new relocation type 
20614         MONO_PATCH_INFO_IID for klass->interface_id.
20615
20616         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20617         the MonoJitInfo structure.
20618
20619         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20620         a non-root appdomain in shared mode.
20621
20622 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20623
20624         * aot.c: make aot loader less verbose. Remove free of unused variable.
20625
20626 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20627
20628         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20629
20630         * .cvsignore: Added *.dll.
20631
20632         * mini.c (mono_print_tree_nl): New function callable while debugging.
20633
20634         * mini.c (mono_print_code): Export this.
20635
20636         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20637         patched code.
20638
20639 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20640
20641         * mini.h (MonoCompile): Added 'jit_info' field.
20642
20643         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20644         the cfg structure, since it is needed by the AOT compiler.
20645
20646         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20647
20648         * aot.c: A major rewrite. Changes include:
20649         - save exception tables for methods which have them.
20650         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20651         to g_module_symbol.
20652         - reworked the file format so it is now much smaller and needs
20653         fewer relocation entries.
20654         
20655 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20656
20657         * aot.c (load_aot_module): Fix build bustage on platforms without
20658         Boehm GC.
20659
20660 2003-09-04  Martin Baulig  <martin@ximian.com>
20661
20662         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20663
20664 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20665
20666         * TODO: Some new optimization ideas.
20667
20668         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20669
20670         * aot.c: Save the optimization flags used to compile the code into
20671         the AOT module.
20672
20673         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20674         support emitting domain specific code.
20675         
20676         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20677         no longer domain neutral. It can be made domain neutral by compiling 
20678         with --optimize=shared.
20679
20680         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20681         between appdomains.
20682
20683         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20684         loading of AOT code.
20685
20686         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20687         
20688         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20689         if there is no domain neutrality information.
20690
20691 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20692
20693         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20694         format version into the generated library.
20695
20696         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20697         callee method into the caller since one of them could be shared.
20698
20699         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20700         system exceptions from AOT code now works.
20701
20702         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20703         method if it is domain neutral and the callee is not.
20704
20705         * graph.c (cfg_emit_one_loop_level): Fix warning.
20706
20707 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20710         last checkin.
20711
20712 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20713
20714         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20715         is needed  by code which is executed before mono_runtime_init ().
20716         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20717         
20718         * mini.c (mono_thread_abort): Fix warning.
20719         (mono_jit_compile_method): Call static constructor in the AOT case too.
20720
20721         * aot.c (mono_compile_assembly): Fix warning.
20722
20723 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20724
20725         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20726
20727 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20728
20729         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20730
20731         * cpu-pentium.md: Fix the length of call opcodes so they include the
20732         ESP restoring instruction. Fixes #47968.
20733
20734 2003-08-28  Martin Baulig  <martin@ximian.com>
20735
20736         * mini-x86.c (mono_arch_call_opcode): Added support for
20737         MONO_TYPE_GENERICINST.
20738
20739         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20740
20741 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20742
20743         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20744         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20745
20746         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20747         metadata_section.
20748
20749 2003-08-26  Martin Baulig  <martin@ximian.com>
20750
20751         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20752         when reporting an error, set this to the actual error location.
20753         (mono_method_to_ir): Report the correct error location if
20754         get_basic_blocks() returned an error.
20755
20756 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20757
20758         * mini.c (mono_type_blittable): OBJECT is not blittable.
20759         (mono_method_blittable): Methods which have marshalling descriptors
20760         are not blittable either. Fixes #47842.
20761
20762 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20763
20764         * driver.c mini.c: Use an environment variable instead of a global 
20765         variable. Also fix the build.
20766
20767         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20768         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20769         reporting this. 
20770
20771         * driver.c mini.c: Added --with-valgrind option to turn off some
20772         code which prevents mono from running under valgrind.
20773
20774         * mini.c (mono_emit_call_args): Fixed warning.
20775
20776         * mini.c (mono_emulate_opcode): Fixed warning.
20777
20778 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20779
20780         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20781         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20782         regalloc.c, regalloc.h: specify available registers in arch-specific
20783         code and support floats in the regallocator (patch by Laurent Morichetti 
20784         <l_m@pacbell.net>)
20785
20786 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20787
20788         * mini.c: mono_thread_current() can be called only after
20789         mono_runtime_init(): rearrange code to not call it early on.
20790
20791 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20792
20793         * mini.c: allocate jump tables in the code mempools.
20794
20795 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20796
20797         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20798         freed.
20799
20800 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20801
20802         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20803         12 to 16.  This fixes bug #47453.
20804
20805
20806 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20807
20808         * mini-ppc.c: fixed indexed load and unsigned compares.
20809
20810 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20811
20812         * mini.c: reenabled installation of handler for
20813           thread abort signal.
20814
20815 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20816
20817         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20818         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20819         until it's fixed and actually useful.
20820
20821 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20822
20823         * inssel-long32.brg: couple more opcodes implemented.
20824
20825 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20826         
20827         * mini-sparc.c: Even more opcodes implemeted.
20828
20829 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20830
20831         * mini-sparc.c: More opcodes implemented.
20832
20833 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20834
20835         * mini-sparc.c: More opcodes implemented.
20836
20837 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20838
20839         * inssel-sparc.brg: Add some needed rules.  Direct
20840         copy from PPC.
20841         * Makefile.am: Use inssel-sparc.brg
20842         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20843         an assert happy for now.
20844
20845 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20846
20847         * mini-sparc.c: Fixed compile errors.
20848         * exceptions-sparc.c: Same.  We now produce a mono binary 
20849         on sparc-linux.  Yea.
20850
20851 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20852
20853         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20854         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20855         They compile, but do not work.
20856
20857 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20858
20859         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20860         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20861         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20862         (ct@gentoo.org).
20863
20864 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20865
20866         * mini.c: more opcodes implemented and better support for generics.
20867
20868 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20869
20870         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20871         * mini.c, mini.h: first cut at generics support: some new instructions 
20872         added and changed the behaviour of some of the existing ones.
20873
20874 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20875
20876         * mini.c: Removed definition of metadata_shared mutex here.
20877
20878 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20879
20880         * mini-x86.c: make vararg calls work for instance methods.
20881
20882 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20883
20884         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20885         returns the arguments in a separte list, now.
20886
20887 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20888
20889         * aot.c, mini.c: updates for array type representation changes.
20890
20891 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20892
20893         * mini.c: register function to perform jit shutdown.
20894
20895 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20896
20897         * mini.c: use a faster allocator if possible.
20898
20899 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20900
20901         * aot.c: some cleanups and portability changes.
20902
20903 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20904
20905         * mini.c: use faster allocation for CEE_BOX if possible.
20906
20907 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20908
20909         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20910         Moved inlined mempcy code to its own function so that is can be
20911         reused. Added an inline memset function as well (optimized initobj).
20912         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20913
20914 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20915
20916         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20917
20918 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20919
20920         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20921         arch code can setup the cpu for CLR execution, if needed.
20922         We use it on x86 to set the precision of FP operations.
20923
20924 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20925
20926         * mini.c: disable some optimizations if we can guess they'll cost too
20927         much for a given method.
20928
20929 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20930
20931         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20932         
20933 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20934         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20935         info collection support.
20936
20937 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20938
20939         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20940         is now implemented in the profiling API. Get rid of a couple of
20941         unnecessary global variables.
20942
20943 2003-06-15  Nick Drochak <ndrochak@gol.com>
20944
20945         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20946         * cpu-g4.md: add op_bigmul and op_bigmul_un
20947         * cpu_pentium.md: add op_bigmul_un
20948         * inssel-long32.brg: add rule for unsigned bigmul
20949         * mini-ops.h: define OP_BIGMUL_UN
20950         * mini-x86.c: THE BUG: handle (un)signed properly
20951         * mini.c: choose unsigned opcode if needed.
20952         This set of patches fixes bug #44291
20953
20954 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20955
20956         * mini.c (optimize_branches): improved to handle all kinds of
20957         conditional branches.
20958
20959 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20960
20961         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20962         don't raise exceptions.
20963
20964 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20965
20966         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20967         to arch-specific files.
20968
20969 2003-06-09  Martin Baulig  <martin@ximian.com>
20970
20971         * Makefile.am (libs): Added $(LIBGC_LIBS).
20972
20973 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20974
20975         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20976         and OP_ATAN (fixes bug#44293).
20977
20978 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20979
20980         * Makefile.am, mini-x86.c: rename cpu description array to
20981         pentium_desc, since some compilers define the 'pentium' preprocessor
20982         symbol.
20983
20984 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20985
20986         * mini.c (mini_select_instructions): add explicit branch if the
20987         following block is not the false target of a conditional branch -
20988         we need this with any optimization that reorder or remove bblocks
20989
20990         * mini.c (optimize_branches): bug fixes
20991
20992 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20993
20994         * mini.c (mono_method_to_ir): inline static readonly fields
20995
20996         * ssa.c (fold_tree): start cfold support for long (very simple
20997         cases only)
20998
20999         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
21000
21001 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21002
21003         * inssel.brg: fixed memcpy (bug #44219).
21004
21005 2003-06-05  Dick Porter  <dick@ximian.com>
21006
21007         * driver.c: Set the glib log levels to not abort if g_message
21008         recurses.
21009
21010         g_set_prgname() has to happen before mini_init() so that the
21011         process handle gets the info.
21012         
21013 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21014
21015         * driver.c: add intrins to the default optimizations to get wider
21016         exposure.
21017
21018 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21019
21020         * mini.h: some large basic blocks will overflow a 16-bit
21021         integers for symbolic registers.
21022
21023 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21024
21025         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
21026         (mono_arch_output_basic_block): fix bug 43499 
21027
21028 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21029
21030         * mini.c: kill duplicated definition of mono_debug_format.
21031
21032 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21033
21034         * mini-x86.c, arrays.cs: fixed register allocation bug.
21035
21036 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21037
21038         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
21039
21040         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
21041
21042 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21043
21044         * mini.c:
21045         (print_method_from_ip): also print source location information if
21046         available.
21047
21048 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
21049
21050         * mini.c (mono_find_block_region): bug fix in region code
21051         (mini_method_compile): enable removing unreachable code again, but
21052         only in methods without exception clauses.
21053
21054 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21055
21056         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
21057         Implemented arglist opcode and handling of TypedReference type.
21058         Fixed x86 call convention when a structure is returned.
21059         Minimal support for calling static vararg methods.
21060
21061 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
21062
21063         * mini.c (mini_method_compile):  always remove unreachable code,
21064         because the code in them may be inconsistent  (access to dead
21065         variables for example).
21066
21067 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21068
21069         * driver.c, debug-mini.c: warning fixes.
21070
21071 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21072
21073         * Makefile.am, jit.h, mini.h: install header for embedding mono.
21074
21075 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
21076
21077         * mini.c: thread-static fields are registered in mono_class_vtable(),
21078         so ensure the function is called before checking for them.
21079
21080 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
21081
21082         * mini.c (optimize_branches): fix for bug 43586
21083
21084         * jit-icalls.c (mono_llmult_ovf): added an additional check for
21085         overflow (fixes Bug #43639)
21086
21087 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21088
21089         * mini.c, objects.cs: allow the use of stobj for primitive types.
21090
21091 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21092
21093         * mini.c: be less strict about argument checking until we support
21094         running the verifier.
21095
21096 2003-05-27  Nick Drochak <ndrochak@gol.com>
21097
21098         * basic-long.cs: tests for (ulong)int * (ulong)int also
21099         * mini.c: use the same trick for (ulong)int * (ulong)int
21100
21101 2003-05-27  Nick Drochak <ndrochak@gol.com>
21102
21103         * basic-long.cs: add regression test for (long)int * (long)int
21104         * cpu-pentium.md: add op_bigmul specification
21105         * inssel-long32.brg: add OP_BIGMUL rule
21106         * mini-ops.h: add OP_BIGMUL
21107         * mini-x86.c: register allocator: handle case where src1 needs to be
21108         in EAX.
21109         * mini.c: substitute special BIGMUL opcode in the tree for 
21110         (long)int * (long)int
21111
21112 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21113
21114         * jit-icalls.c: call the type ctor on field access if needed.
21115
21116 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21117
21118         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
21119         to a method (including results of ldelema, bug#43207).
21120
21121 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21122
21123         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
21124         colors to show exception handler blocks.
21125
21126         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
21127         (fix for pinvoke7.cs).
21128
21129 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21130
21131         * mini.h, mini.c: ensure correct initialization order for types that
21132         require it. Prepare for lazy compilation of jit icall wrappers.
21133         Provide a name for opcode emulation to reduce unneeded mallocing.
21134
21135 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21136
21137         * mini-x86.c: better register restoring code and profiling
21138         support for tail calls.
21139
21140 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21141
21142         * mini.h, driver.c: prepare for leaf methods optimization.
21143
21144 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21145
21146         * mini.c: get targets of branches before converting a method.
21147
21148 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
21149
21150         * mini.c (optimize_branches): added some experimental code (disbaled) 
21151
21152 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
21153
21154         * mini.c (optimize_branches): fix branch to branch optimization 
21155
21156         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
21157
21158         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
21159
21160         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
21161
21162         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
21163         if needed.
21164
21165 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21166
21167         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
21168         enable use of interface variables again.
21169
21170         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
21171         I1 to registers because there is no simply way to sign extend 8bit
21172         quantities in caller saved registers on x86.
21173
21174         * inssel-float.brg: set costs of some rules to 2 so
21175         that monobure always select the arch. specific ones if supplied,
21176         regardless of the order we pass the files to monoburg.
21177
21178 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21179
21180         * mini.c, mini-x86.c: since the magic trampoline for jumps
21181         can't patch the code directly, we do it as soon as the
21182         method gets compiled.
21183
21184 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21185
21186         * mini-x86.c, mini.h: introduce a new patching method
21187         to support CEE_JMP and tail calls.
21188         * mini.c: obey tail.call. Don't precompile methods target
21189         of CEE_JMP.
21190         * tramp-x86.c: new trampoline code to handle methods
21191         reached through a jump.
21192
21193 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
21194
21195         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
21196         bit values to registers
21197
21198 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
21199
21200         * mini.c (mono_compile_get_interface_var): share interface
21201         variables if possible.
21202
21203 2003-05-16  Martin Baulig  <martin@ximian.com>
21204
21205         * debug-mini.c (mono_init_debugger): New function to initialize
21206         the debugger.  This is not in the debugger since it needs to
21207         access some of mini's internals.
21208
21209 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21210
21211         * mini.c (mono_method_to_ir): inlining fixes/cleanups
21212
21213 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
21214
21215         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
21216         for value type handling.
21217
21218 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21219
21220         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
21221         (mono_method_check_inlining): enable inlining of all kinds of wrappers
21222
21223 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
21224
21225         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
21226           the constructor through a proxy.
21227
21228 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21229
21230         * jit-icalls.c, inssel.brg: fixes to array element address
21231         calculations.
21232
21233 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
21234
21235         * mini-x86.c (is_regsize_var): allocate pointer to registers
21236
21237 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21238
21239         * driver.c: fixed typo, added intrins to the set of optimizations
21240         tested with regressions.
21241
21242 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21243
21244         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
21245         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
21246         test case.
21247
21248 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
21249
21250         * inssel.brg: remove some common pop instructions without side effects
21251
21252 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21253
21254         * inssel-x86.brg: fixed thinko in int to double conversions.
21255
21256 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21257
21258         * mini.c, jit-icalls.c: added runtime thread-static variable support.
21259
21260 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21261
21262         * inssel-long32.brg: two more missing instructions.
21263
21264 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21265
21266         * mini.c (mono_emit_call_args): set the cil_code for all arguments
21267         if not already set.
21268
21269 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
21270
21271         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
21272         correctly.
21273
21274         * basic-float.cs: Added tests for negative zero.
21275
21276 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21277
21278         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
21279         a couple of missing operations for long casts, with test cases.
21280
21281 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21282
21283         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
21284
21285 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
21286
21287         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
21288         code size estimation.
21289
21290 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21291
21292         * mini.c (mono_jit_create_remoting_trampoline): make it work with
21293         abstract methods (fix bug 42542)
21294
21295         * aot.c: add ability to handle array types
21296         
21297 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
21298
21299         * mini.c: Call the _specific versions of the object allocation
21300         functions if possible.
21301
21302 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21303
21304         * driver.c: call setlocale ().
21305
21306 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21307
21308         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
21309         windows build.
21310
21311 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21312
21313         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
21314
21315         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
21316         wrappers (fix bug 42122)
21317
21318 2003-05-04  Martin Baulig  <martin@ximian.com>
21319
21320         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
21321
21322         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
21323         s/mini_set_defaults/mono_set_defaults/g.
21324
21325 2003-05-04  Martin Baulig  <martin@ximian.com>
21326
21327         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
21328
21329 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21330
21331         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
21332         (reported by Don Roberts).
21333
21334 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21335
21336         * mini.c: temporarily work around two bugs for this release.
21337
21338 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21339
21340         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
21341         that contains -export-dynamic and it makes using the ld script
21342         useless.
21343         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
21344
21345 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21346
21347         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
21348         specific cpu.
21349
21350 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21351
21352         * mini.c: make sure leave calls all the needed finally blocks,
21353         even when the target jumps out of multiple exception clauses.
21354
21355 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21356
21357         * ldscript, Makefile.am: add linker script to reduce the number of
21358         exported symbols (should also fix the issues with libwine defining
21359         some of the same symbols in io-layer).
21360
21361 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21362
21363         * driver.c (mini_main): Avoid assertion when no file name is given on 
21364         the command line.
21365
21366 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21367
21368         * driver.c: added --version/-V command line option.
21369         Added the inline optimization in the regression tests.
21370
21371 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21372
21373         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21374         to the type in the method signature (fixes bug#42134).
21375
21376 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21377
21378         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21379
21380 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21381
21382         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21383
21384 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21385
21386         * driver.c: fixed bug #42100.
21387
21388 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21389
21390         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21391
21392 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21393
21394         * mini.c: moved most of the code required to do inlining to its own
21395         function so it can be reused. Inline also ctors if appropriate.
21396
21397 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21398
21399         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21400         the runtime can call mono API functions.
21401
21402 2003-04-27  Martin Baulig  <martin@ximian.com>
21403
21404         * debug-mini.c (mono_debug_init_method): Added
21405         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21406         send a notification to the debugger.
21407
21408         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21409         running in the Mono Debugger, just pass the breakpoint number to
21410         mono_debug_init_method().
21411
21412         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21413
21414 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21415
21416         * mini.c: allow some more unsafe compares.
21417
21418 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21419
21420         * mini-x86.c, Makefile.am: make distcheck works (partially from
21421         a patch by Richard Lee <r.h.lee@attbi.com>).
21422         * regset.c, regset.h: removed, they are unused.
21423
21424 2003-04-25  Dick Porter  <dick@ximian.com>
21425
21426         * driver.c: Usage reports the name as 'mono' not 'mini'
21427         * exceptions-x86.c: Build and run on freebsd
21428
21429 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21430
21431         * Makefile.am: install the program with the 'mono' name and
21432         the library as libmono instead of mini and libmini.
21433
21434 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21435
21436         * driver.c: provide the APIs for the embedding interface of the old jit.
21437
21438 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
21439
21440         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
21441
21442 2003-04-23  Martin Baulig  <martin@ximian.com>
21443
21444         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
21445
21446         * driver.c: Added `--debug' command line argument to enable
21447         debugging support.
21448
21449 2003-04-23  Martin Baulig  <martin@ximian.com>
21450
21451         * debug.[ch]: Removed.  The code is now in
21452         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
21453
21454         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
21455         last six months.
21456
21457 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21458
21459         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
21460
21461 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21462
21463         * mini.c:
21464         (mini_cleanup): moved mono_runtime_cleanup call after the call to
21465         mono_domain_finalize.
21466         (mini_method_compile): use mono_method_profile* if the the option is
21467         enabled.
21468
21469 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21470
21471         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21472         methods with their wrapper.
21473
21474         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21475         methods with their wrapper.
21476
21477         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
21478         their wrapper.
21479
21480         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
21481         wrapper.
21482
21483         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
21484         methods.
21485
21486 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
21487
21488         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
21489
21490 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
21491
21492         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
21493         of the mempool. This is slightly faster and uses less memory
21494
21495 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21496
21497         * mini.c: avoid O(n) allocation for variables.
21498
21499 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21500
21501         * mini.c: handle items on the stack after inlining methods.
21502
21503 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21504
21505         * mini.c: make the method->opcode optimization dependent
21506         on MONO_OPT_INSTRINS and do it lazily.
21507
21508 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21509
21510         * driver.c: print overall results at the end of regression run.
21511
21512 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21513
21514         * inssel.brg: don't overwrite symbolic registers.
21515
21516 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21517
21518         * inssel-x86.brg: fix conversion from long to float.
21519
21520 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
21521
21522         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
21523
21524 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21525
21526         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
21527
21528         * driver.c: Added --print-vtable option as in the old JIT.
21529
21530 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21531
21532         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
21533
21534 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21535
21536         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
21537
21538 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21539
21540         * mini.c regalloc.c regalloc.h: Fix memory leak.
21541
21542 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
21543
21544         * aot.c (mono_aot_get_method): register all used strings
21545
21546 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21547
21548         * mini.c: always intern strings references with ldstr at compile time.
21549
21550 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21551
21552         * Makefile.am: add BUILT_SOURCES.
21553
21554 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21555
21556         * driver.c: give a better error message when the assembly to execute
21557         doesn't have an entry point.
21558
21559 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
21560
21561         * Makefile.am: added hack for automake
21562
21563         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
21564         correct sematics.
21565
21566         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
21567
21568 22003-04-07  Martin Baulig  <martin@ximian.com>
21569
21570         * Makefile.am: Added Makefile.am.
21571
21572         * debugger-main.c: Removed, this is now in the debugger where it
21573         belongs.
21574
21575         * mini.pc.in: Call this package `mini' for the moment.
21576
21577
21578
21579
21580
21581
21582
21583
21584
21585
21586
21587
21588
21589
21590