Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / mini / ChangeLog
1
2 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3
4         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5         multiple machine description files to be specified.
6         * mini-ops.h: fixes for cross-compilation.
7
8 2009-04-22  Miguel de Icaza  <miguel@novell.com>
9
10         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
11         some porting work.
12
13 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
14
15         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
16         to prevent asserts in various passes. Fixes #497220.
17
18 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
21         a racy assert.
22
23         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
24         table to avoid duplicates.
25
26         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
27         
28         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
29         option is used.
30
31 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
32
33         * mini.c (mini_method_verify): Fail fulltrust code if the exception
34         is for method or field access.
35
36 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
37
38         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
39         a Value to stdout.
40
41         * mini-llvm.c (mono_llvm_emit_method): Use it.
42         
43         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
44         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
45         on volatile values.
46
47         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
48         synchronized methods.
49
50         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
51
52         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
53
54         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
55         OP_LOADI8_MEM.
56
57         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
58         allowing some options to be set dynamically.
59
60 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
61
62         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
63         unconditional branch.
64
65         * mini.h (MonoTrampolineType): Add new trampoline type 
66         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
67         compiled code.
68
69         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
70         function.
71
72         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
73         creation function.
74
75         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
76         is enabled. Instead, use the llvm vcall trampoline.
77         
78         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
79
80         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
81         
82         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
83         functions.
84
85         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
86         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
87
88         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
89         OP_IA64_CSET opcode.
90
91         * mini.c: Fix a warning.
92
93         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
94         THROW to the appropriate llvm type.
95
96 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
97
98         * mini.c (mini_method_compile): Add statistics for methods JITted
99         with/without LLVM.
100
101 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
102
103         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
104         OP_IA64_CMP_<cond>_IMM opcodes.
105
106 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
107
108         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
109         corlib exceptions.
110
111         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
112         correctly.
113
114         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
115         GENERICINST.
116
117 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
118
119         * mini-exceptions.c : add thread id to EXCEPTION trace message.
120
121 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
122
123         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
124         support.
125
126         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
127         rgctx invoke trampolines for x86.
128
129         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
130         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
131         (mono_arch_get_vcall_slot): Simplify this.
132
133 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
134
135         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
136         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
137
138 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
139
140         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
141         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
142
143         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
144
145         * liveness.c (visit_bb): Remove a needless assert.
146
147 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
148
149         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
150         full aot support to the arch specific code.
151
152         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
153
154         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
155
156         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
157         
158         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
159         collect information about the delegate invoke impl trampolines.
160
161         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
162         to save trampolines during full-aot mode.
163
164         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
165         creation function which returns a trampoline which sets the rgctx
166         argument.
167         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
168         wrapper if possible.
169         (mono_delegate_trampoline): Ditto.
170
171         * mini.c (mono_jit_runtime_invoke): Ditto.
172
173         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
174         
175         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
176
177         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
178         
179 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
180
181         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
182         just setting the opcode to OP_NOP.
183
184 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
185
186         * mini.c (mini_method_compile): Put the last change inside an 
187         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
188         
189         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
190         and extend live ranges to cover the whole method when using xdb.
191
192         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
193         do it in the trampolines.
194
195         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
196         needed.
197
198         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
199         
200         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
201         call code in full-aot mode since IMT is disabled there.
202         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
203         new JIT no longer has that restriction.
204
205         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
206
207         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
208         a more compact format.
209         (mono_aot_wrapper_name): New function to return a unique name for a
210         wrapper method, also used by the AOT runtime.
211
212         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
213         aot-compiler.c.
214
215         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
216         when a ICollection<T> etc is encountered.
217         (add_generic_instances): Process method arguments/locals too.
218         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
219         trampoline names.
220
221         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
222         
223 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
224
225         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
226
227         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
228
229         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
230         representing the result of the decomposition. Nullify instructions
231         instead of setting them to OP_NOP since nops can't have registers
232         set.
233
234 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
235
236         * aot-compiler.c (mono_compile_assembly): Split this huge function into
237         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
238         info. Strip 'mapping symbols' on ARM.
239
240         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
241         
242         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
243         this with the native genmdesc.
244
245 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
246
247         * aot-runtime.c:  Fixing the MSVC build.
248
249         Code is contributed under MIT/X11 license.
250
251 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
252
253         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
254         JITted code depends on it.
255
256 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
257
258         * aot-compiler.c: Use new MonoGenericParam accessors.
259
260 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
261
262         Reduce memory usage and improve correctness wrt MonoGenericParam
263         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
264         handing.  Avoid allocating MonoGenericParams, but use the ones in
265         the container itself.
266
267 2009-04-07  Miguel de Icaza  <miguel@novell.com>
268
269         * tasklets.c: Return exceptions in the out argument.
270
271 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
272
273         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
274         opcode. Use pointer types in more places instead of casting them to 
275         integers.
276
277         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
278         optimizations.
279         (mono_llvm_optimize_method): New helper function to optimize a method.
280
281         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
282         widening code so it could be called from more places.
283         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
284         code paths in the call opcodes.
285
286 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
287
288         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
289
290 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
291
292         * dwarfwriter.c: Use _ to separate class name 
293         components as gdb can't handle '.'. Represent reference variables
294         as 'class <NAME>&'.
295         
296         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
297
298         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
299         
300         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
301
302         * gc-test.cs: New file with GC stack marking tests.
303         
304         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
305         negative numbers for vfp.
306
307         * basic-float.cs: Add a test.
308         
309 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
310
311         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
312
313 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
314
315         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
316         part of tasklet/continuation support.
317
318 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
319
320         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
321         amd64 opcodes inside an ifdef.
322
323         * dwarfwriter.c: Emit inheritance information for classes, emit fields
324         of complex types.
325         
326         * dwarfwriter.c (emit_type): Emit the class info for classes.
327
328 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
329
330         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
331
332         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
333
334         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
335
336         * ssa.c (mono_ssa_compute): Fix some memory leaks.
337
338 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
339
340         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
341
342         * mini-llvm.c: Update comments.
343
344         * mini.h (COMPILE_LLVM): New macro.
345
346         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
347
348         * ssa.c (mono_ssa_compute): Ditto.
349         
350         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
351         the unwind ops from a DWARF FDE.
352
353         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
354         methods by extracting the dwarf unwind ops from the unwind info generated
355         by LLVM.
356         
357         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
358         calls.
359
360         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
361         addressing modes.
362
363 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
364
365         * Makefile.am (llvm_sources): Enable this.
366
367         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
368         failing back to the JIT if something cannot be handled.
369
370         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
371         compiling with LLVM.
372
373         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
374         compiling with LLVM.
375
376         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
377         compiling with LLVM.
378
379         * mini-ops.h: Add a few opcodes needed by LLVM.
380
381         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
382         has no unwind info.
383
384         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
385         backend.
386
387         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
388
389         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
390
391 2009-04-01  Mark Probst  <mark.probst@gmail.com>
392
393         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
394         ridiculously large methods.
395
396 2009-03-31  Martin Baulig  <martin@ximian.com>
397
398         * debug-debugger.c (debugger_remove_breakpoint): Call
399         mono_debugger_remove_class_init_callback ().
400
401 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
402
403         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
404         right before emitting code, not at the start.
405
406         * mini.c (mono_postprocess_patches): Extract this into a separate function
407         from mono_codegen ().
408
409         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
410         byref types correctly.
411
412 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
413
414         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
415         by the last change.
416
417 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
418
419         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
420         indirect calls, this avoids problems where get_vcall_slot () would get
421         confused by the native code for the instruction preceeding the call.
422         (mono_arch_get_vcall_slot): Simplify this.
423         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
424
425         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
426         register allocator now seems to depend on them instead of the data in
427         cpu-<ARCH>.md.
428
429         * mini.c (mini_method_compile): Throw the correct type of exception if
430         mono_method_get_header () fails because of a loading error.
431
432 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
433
434         * mini.c (mini_method_compile): Clear the loader error if the method
435         header cannot be decoded.
436
437         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
438         interface methods on proxies correctly.
439
440         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
441         this argument for vtype methods. Add precise liveness info for arguments.
442
443         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
444         LIVERANGE_START/END opcodes.
445
446         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
447         for arguments and values in registers.
448
449 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
450
451         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
452         return a valuetype. Fixes #487518.
453
454         * iltests.il: Add a test.
455         
456         * aot-compiler.c: Use mono_thread_create () to create helper threads.
457
458         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
459         closed over a null reference correctly.
460
461 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
462
463         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
464
465 2009-03-25  Mark Probst  <mark.probst@gmail.com>
466
467         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
468         allocated to the same registers as fixed sregs.
469
470 2009-03-24  Mark Probst  <mark.probst@gmail.com>
471
472         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
473         ATOMIC_CAS_IMM ops.
474
475         * method-to-ir.c: Handle more cases for
476         Interlocked.CompareExchange.
477
478         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
479         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
480         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
481
482 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
483
484         * aot-runtime.c (decode_method_ref): Fix a warning.
485
486         * unwind.c (mono_unwind_frame): Ditto.  
487
488 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
489
490         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
491         (mono_compile_assembly): Enable the binary writer for full-aot as well.
492
493         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
494         fix the handling of large values in the ALU_PC_G0_NC relocation.
495
496 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
497
498         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
499
500 2009-03-22  Mark Probst  <mark.probst@gmail.com>
501
502         * method-to-ir.c (mono_spill_global_vars): Support for ternary
503         ops.
504
505 2009-03-22  Mark Probst  <mark.probst@gmail.com>
506
507         * method-to-ir.c: MINI_OP3 needs a comma.
508
509         * method-to-ir.c, mini.h, mini.c: Remove
510         mono_init_op_sreg_counts ().
511
512 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
513
514         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
515         OP_JMP.
516         
517         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
518         assertion.
519
520         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
521
522         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
523         code somewhat.
524
525 2009-03-21  Mark Probst  <mark.probst@gmail.com>
526
527         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
528         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
529         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
530         operations.
531
532 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
533
534         * driver.c: Change location of gc_wrapper.h.
535
536         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
537         inside finally clauses correctly. Fixes #485721.
538
539         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
540         after the change above.
541
542         * exceptions.cs: Add a test.
543         
544 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
545
546         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
547
548         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
549         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
550         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
551
552         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
553         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
554
555 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
556
557         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
558         Simplify logic for ensure_method_is_allowed_to_call_method. 
559         Handle wrappers on callers.
560
561 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
562
563         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
564         them don't run yet.
565
566         * basic-simd.cs: Fix the names of some test methods.
567
568 2009-03-18  Geoff Norton  <gnorton@novell.com>
569
570         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
571
572 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
573
574         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
575
576 2009-03-17  Jb Evain  <jbevain@novell.com>
577
578         * driver.c: remove now uneeded call to mono_gc_base_init before
579         mono_profiler_load.
580
581 2009-03-17  Jb Evain  <jbevain@novell.com>
582
583         * dwarfwriter.c (token_handler): handle more cases.
584
585 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
586
587         * method-to-ir.c: Remove more dead code (that was required only
588         because of method_is_safe). Fix compiler warnings.
589
590 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
591
592         * method-to-ir.c: Remove unneeded/useless method_is_safe
593         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
594
595 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
596
597         * mini.c (mini_method_compile): Print the method been compiled with
598         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
599         for people not familiar with the runtime.
600
601 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
602
603         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
604         a managed object which is later put into a GList. Return its class instead.
605
606         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
607         stack slots when using sgen.
608
609 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
610
611         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
612
613 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
614
615         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
616         > so it works on the first vreg as well.
617
618 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
619
620         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
621         trigger randomly.
622
623         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
624         
625         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
626         implement GArray.
627
628 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
629
630         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
631         native->IL offset mapping.
632
633 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
634
635         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
636
637         * basic.cs: Add a test.
638
639 2009-03-11  Mark Probst  <mark.probst@gmail.com>
640
641         * mini-x86.c (mono_arch_output_basic_block): Use different
642         registers in case the ones we want to overwrite are used by the
643         other operand.  Fixes regression in #480807.
644
645 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
646
647         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
648
649         * dwarfwriter.c (emit_line_number_info): The line number info for
650         IL code was off by one. Fix that.
651
652         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
653         stack.
654
655 2009-03-09  Mark Probst  <mark.probst@gmail.com>
656
657         Contributed under the terms of the MIT/X11 license by Steven
658         Munroe <munroesj@us.ibm.com>.
659
660         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
661         Fixes #483462.
662
663 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
664
665         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
666         as well.
667
668 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
669
670         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
671         the delegate ctor handling code. Fixes #482638.
672         
673         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
674         #481458.
675
676         * iltests.il.in: Add a test.
677         
678         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
679         mini-posix.c.
680
681 2009-03-05  Mark Probst  <mark.probst@gmail.com>
682
683         * mini-trampolines.c (mono_create_jump_trampoline): If the method
684         is shared generic code, return the trampoline, even if the method
685         has already been compiled.  Fixes #479763.
686
687         * mini.c, mini.h: New function
688         mono_jit_find_compiled_method_with_jit_info() which is the same as
689         mono_jit_find_compiled_method() but also returns the jit info.
690
691 2009-03-05  Mark Probst  <mark.probst@gmail.com>
692
693         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
694         for methods which actually have one.  For all other methods, make
695         sure the this argument var is live the whole method.
696
697         * mini.c (mini_method_compile): Every shared method has a
698         this/vtable/mrgctx info.  Fixes #480807.
699
700 2009-03-05  Mark Probst  <mark.probst@gmail.com>
701
702         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
703         generic/imt thunks where some entries branch through the vtable,
704         while other entries branch directly.
705
706 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
707
708         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
709
710         * mini-windows.c: Ditto.
711         
712         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
713         ctors.
714
715 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
716
717         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
718         down an assert.
719
720 2009-03-04  Mark Probst  <mark.probst@gmail.com>
721
722         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
723         #481403.
724
725 2009-03-04  Mark Probst  <mark.probst@gmail.com>
726
727         * exceptions-x86.c: Include debug-mini.h - fixes build.
728
729 2009-03-04  Martin Baulig  <martin@ximian.com>
730
731         * debug-mini.c: Clean up the exception API and add documentation.
732         (mono_debugger_handle_exception): New public method; this is
733         called when throwing an exception or encountering an unhandled one.
734         (mono_debugger_call_exception_handler): Formerly known as
735         mono_debugger_handle_exception(); this is used to tell the
736         debugger that we're about to invoke an exception handler.
737
738 2009-03-04  Martin Baulig  <martin@ximian.com>
739
740         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
741         ../metadata/mono-debug-debugger.c; save and reset exception state.
742
743 2009-03-02  Martin Baulig  <martin@ximian.com>
744
745         * debug-mini.c: Moved the debugger exception handling here from
746         ../metadata/mono-debug-debugger.c.
747
748         * debug-mini.h
749         (MonoDebuggerExceptionAction): New exception typedef.
750
751         * debug-mini.c
752         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
753
754         * exceptions-amd64.c
755         (mono_amd64_throw_exception): Use the new debugger exception
756         handling code.
757
758         * mini-exceptions.c
759         (mono_handle_exception_internal): Don't call
760         mono_debugger_unhandled_exception() here.
761
762 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
763
764         * mini.c aot-compiler.c: Update after the changes to 
765         mono_marshal_get_runtime_invoke ().
766
767         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
768         Virtual generic methods might not have method->slot set, work around
769         that.
770
771         * generics.cs: Add a test.
772
773 2009-03-02  Geoff Norton  <gnorton@novell.com>
774
775         * mini.c:
776         * driver.c: Allow signal chaining of SIGFPE as well.
777
778 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
779
780         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
781         this since it now receives the method not its generic context in the
782         IMT reg.
783
784         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
785         generic/imt thunks where some entries branch through the vtable, while
786         other entries branch directly.
787
788         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
789
790         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
791         support for interface methods as well.
792
793         * mini-trampolines.c: Add support for virtual generic methods in interfaces
794         using the normal IMT thunks.
795
796         generics.cs: Add new tests.
797         
798         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
799         the generic inst to the generic imt thunks. This fixes AOT support, 
800         improves consistency with the normal IMT thunks, and makes it easier to
801         add support for interface generic virtual methods later.
802
803         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
804         
805 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
806
807         * driver.c (mono_set_signal_chaining): New public API function to enable
808         signal chaining on POSIX platforms.
809
810         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
811         (si@lindenlab.com) to implement signal chaining. The original patch was
812         contributed under the MIT X/11 license:
813         https://bugzilla.novell.com/show_bug.cgi?id=318894
814
815 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
816
817         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
818         too until it can be made to run on amd64.
819
820 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
821
822         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
823         to  get_generic_context_from_code () + get_call_info () if possible.
824
825 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
826
827         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
828         suspend-on-sigsegv functionality.
829
830         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
831         to suspend when a native SIGSEGV is received. This is useful for debugging
832         crashes which don't happen under gdb, since a live process contains more
833         information than a core file.
834
835         * mini-exceptions.c (mono_print_thread_dump): Use 
836         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
837
838         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
839
840         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
841         
842         * basic-float.cs: Disable the tests which currently fail on amd64.
843
844         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
845         value to mono_arch_patch_callsite () to fix crashes.
846         
847         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
848
849 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
850
851         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
852         nop code by patching the call address to point to the nullified class init
853         trampoline, as the former does not seem to be safe on SMP machines.
854
855 2009-02-23  Mark Probst  <mark.probst@gmail.com>
856
857         * mini-ops.h: Fix the argument types for a few x86 opcodes where
858         they were wrong.
859
860 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
861
862         * basic-float.cs basic-calls.cs: Fix warnings.
863
864 2009-02-22  Mark Probst  <mark.probst@gmail.com>
865
866         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
867         correct frame pointer in the LMF.  Should fix #478394.
868
869 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
870
871         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
872
873         * image-writer.c: Make the binary writer less verbose.
874
875 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
876
877         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
878         are called from runtime invoke wrappers.
879
880 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
881
882         * cpu-ppc.md (store_memindex): Increase the size of this.
883
884 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
885
886         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
887
888         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
889
890         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
891         OP_LCONV_TO_R_UN.
892
893         Last fix for of #467201.
894
895
896 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
897
898         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
899
900         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
901         and long_conv_to_r8_2:
902
903         Fixed part of #467201.
904
905 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
906
907         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
908
909         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
910         conversion to 32 bits.
911
912         * cpu-x86.md: Increase the size of int_conv_to_r4.
913
914         * basic-float.cs: Add a test for this.
915
916         Fixed part of #467201.
917
918 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
919
920         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
921
922         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
923         conversion to 64 bits.
924
925         * basic-float.cs: Add a test for this.
926
927         Fixed part of #467201.
928
929 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
932
933         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
934         This behavior is compatible with MS.
935
936         * iltest.il.in: Add a test for this.
937
938         Fixed part of #467201.
939
940 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
941
942         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
943
944         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
945         change the precision of the value.
946
947         * cpu-x86.md: Define len for float_conv_to_r4.
948
949         * basic-float.cs: Add a test for this.
950
951         Fixed part of #467201.
952
953 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
954
955         * mini.c: Adjust locking order to the new semantics where the loader lock
956         comes first.
957
958 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
959
960         * aot-runtime.c:
961         * mini-amd64.c:
962         * mini-arm.c:
963         * mini-ia64.c:
964         * mini-mips.c:
965         * mini-ppc.c:
966         * mini-sparc.c:
967         * mini-trampolines.c:
968         * mini-x86.c:
969         * mini.c:
970         * tramp-alpha.c:
971         * tramp-amd64.c:
972         * tramp-arm.c:
973         * tramp-hppa.c:
974         * tramp-ia64.c:
975         * tramp-mips.c:
976         * tramp-ppc.c:
977         * tramp-s390.c:
978         * tramp-s390x.c:
979         * tramp-sparc.c:
980         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
981
982 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
983
984         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
985         as it is incorrect.
986
987 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
988
989         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
990         for cctors if needed.
991
992 2009-02-17  Mark Probst  <mark.probst@gmail.com>
993
994         * mini-ppc.c: Fix build on Darwin.
995
996 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
997
998         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
999         version instead of 3 as valgrind doesn't like version 3.
1000
1001         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1002
1003         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1004         usable for hashing methods.
1005         (emit_extra_methods): Use the new hash to avoid putting every method in the
1006         same hash bucket.
1007
1008         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1009
1010         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1011         whenever a method ref could match a method.
1012         
1013         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1014         test to fail.
1015         
1016         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1017         methods refs.
1018
1019         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1020
1021         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
1022         the encoding buffer.
1023
1024         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
1025         mono_method_get_header () on inflated methods as an optimization.
1026
1027 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * ssa.c (fold_ins): Fix another crash if the instruction following the
1030         switch was optimized away.
1031
1032 2009-02-16  Mark Probst  <mark.probst@gmail.com>
1033
1034         Contributed under the terms of the MIT/X11 license by Steven
1035         Munroe <munroesj@us.ibm.com>.
1036
1037         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
1038
1039 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
1042         around the mono_domain_alloc calls, it is now done by the functions
1043         themselves.
1044
1045         * aot-compiler.c (compile_method): Only add wrappers referenced by
1046         the method if compiling with full AOT.
1047         (mono_compile_assembly): Error out if --aot=full is specified on
1048         a platform where it is not supported.
1049
1050         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
1051         on ARM too.
1052
1053         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
1054         AOT support.
1055
1056         * aot-runtime.c (load_named_code): Handle 
1057         mono_arm_throw_exception_by_token.
1058
1059         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
1060
1061         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
1062         unaligned.
1063
1064         * Makefile.am (fullaotcheck): Exit if a test fails.
1065
1066         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
1067         on ARM.
1068         (mono_compile_assembly): Handle the assembler failing.
1069
1070         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
1071         accepting subsections of .bss.
1072
1073         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
1074         was optimized away.
1075
1076         * aot-compiler.c: Remove some unused includes.
1077         
1078         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
1079         now in MonoImageWriter.
1080
1081         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
1082         code sequence which matches a non-virtual call. Fixes #472654.
1083
1084 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
1087         xdebug code.
1088         
1089         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
1090         use the image/dwarf writers directly.
1091
1092         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
1093         field.
1094
1095         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
1096         MonoDwarfWriter.
1097
1098         * image-writer.h: Fix some typos.
1099
1100         * dwarfwriter.h dwarfwriter.c: New files.
1101         
1102         * aot-compiler.c: Extract the DWARF info writing functionality into a 
1103         separate module.
1104
1105         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
1106         argument to return unwind info.
1107
1108         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
1109
1110         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
1111         
1112         * aot-runtime.c (decode_method_ref): Add a case for 
1113         MONO_AOT_METHODREF_WRAPPER_NAME.
1114
1115         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
1116         for AOT.
1117
1118         * aot-compiler.c (encode_method_ref): Use the new constants.
1119
1120         * aot-runtime.c (decode_method_ref): Ditto.
1121
1122         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
1123         be compiled, not the icall itself.
1124
1125 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
1128         using decode_method_ref ().
1129
1130         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
1131         convert it to an in32. Fixes #475859.
1132
1133         * arrays.cs: Add a test.
1134
1135 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1136
1137         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
1138         OP_LCONV_TO_U2.
1139
1140         * basic-long.cs: Add a test.
1141
1142 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1143
1144         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
1145         remove the frame pointer in leaf methods which don't receive any
1146         arguments, don't throw exceptions and don't do dynamic stack
1147         allocations.
1148
1149 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1150
1151         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
1152         the fail_tramp changes. Hopefully fixes #475132.
1153
1154 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1155
1156         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
1157         instead of mono_metadata_signature_dup_full.
1158
1159 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1160
1161         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
1162         for processing jump tables. Fixes #473787.
1163
1164 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1165
1166         * mini-generic-sharing.c: mini_method_get_context() just calls
1167         mono_method_get_context_general() now.
1168
1169         * mini.c, mini.h: Moved get_object_generic_inst(),
1170         construct_object_context_for_method() and
1171         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
1172
1173 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1174
1175         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
1176         basic block fell through to its successor bblock without a branch. Fixes
1177         #474718.
1178
1179         * iltests.il.in: Add a test.
1180         
1181         * aot-compiler.c (encode_method_ref): Encode methods of array types.
1182         (can_encode_patch): We can now handle arrays of generic parameters and
1183         array methods.
1184
1185         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
1186
1187         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
1188         the AOT file to avoid some #ifdefs in aot-runtime.c
1189
1190         * mini.h: Bump AOT file format version.
1191
1192 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * Makefile.am (fullaotcheck): Make this run the tests.
1195
1196         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
1197
1198 2009-02-10  Mark Probst  <mark.probst@gmail.com>
1199
1200         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
1201         individually.  Fixes #473482.
1202
1203 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
1206
1207 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
1208
1209         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
1210         (mono_compile_assembly): Hush compile warnings about
1211         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
1212         code path.
1213
1214 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
1217
1218         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
1219
1220         * aot-compiler.c: Fix arm support.
1221
1222         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
1223         img_writer_emit_unset_mode () function.
1224
1225         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
1226         (mono_unwind_get_dwarf_pc_reg): Ditto.
1227
1228         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
1229         Move almost all platform specific code to a set of arch_ functions, 
1230         and document them to ease porting.
1231         
1232         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
1233
1234         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
1235
1236         * aot-compiler.c: Extract the image writing functionality into a separate
1237         module to reduce the size of this file.
1238
1239 2009-02-09  Geoff Norton  <gnorton@novell.com>
1240
1241         * mini-s390.c: Fix the signature of emit_sig_cookie.
1242
1243 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
1246
1247         * aot-runtime.c (is_shared_got_patch): Ditto.
1248
1249         * aot-runtime.c (load_named_code): Cope with the fact that 
1250         decode_got_entry () won't decode the patch fully if its corresponding got
1251         entry is already filled.
1252         
1253         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
1254         Initialize *ji.
1255         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1256
1257         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
1258         as the moving pointer instead of 'buf' for consistency with the rest of the
1259         codebase.
1260         (mono_arch_create_monitor_exit_trampoline): Ditto.
1261
1262         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
1263         generic_class_init trampolines.
1264         (add_generic_class): Extract some code from add_generic_instances () into a
1265         separate function so it can be called from other places too.
1266         (compile_method): Call add_generic_class () for the classes of inflated methods
1267         referenced by the method.
1268         (can_encode_patch): Allow references to generic parameters.
1269
1270         * aot-runtime.c: Add support the patches required by the new trampolines.
1271         
1272         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
1273         support.
1274
1275         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
1276         full-aot support.
1277
1278         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
1279         this from get_throw_pending_exception, make the signature full aot compatible.
1280
1281         * Makefile.am (fullaotcheck): New target to run full-aot tests.
1282
1283         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
1284
1285         * exceptions.cs: Add a test.
1286
1287 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1290         use the DWARF_DATA_ALIGN constant instead.
1291
1292         * exception-<ARCH>.c: Update after the above change.
1293
1294         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1295         dwarf unwinder.
1296
1297         * mini-arm.c: Enable the dwarf unwinder.
1298
1299         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1300         instead of mono_class_setup_vtable ().
1301
1302 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1305         dwarf unwinder.
1306
1307         * mini-x86.h: Enable the dwarf unwinder.
1308
1309 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1310
1311         Fix mcs/tests/test-7.cs
1312         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1313         2009-02-03.
1314
1315 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * mini.c (print_jit_stats): Remove some unused statistics.
1318
1319 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1320
1321         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1322
1323 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1324
1325         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1326         the method we get from mono_object_get_virtual_method() because
1327         that function does it properly, now.
1328
1329 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1332         opcodes. Fixes #472775.
1333
1334 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1335
1336         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1337         fact that mono_find_jit_info() sometimes returns the context
1338         corresponding to the jit info in new_ctx.  Fixes #472600.
1339
1340 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1341
1342         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
1343         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
1344         klass->enum_basetype directly.
1345
1346         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
1347         enum subtypes.
1348
1349         * unwind.c: Avoid 0 sized arrays.
1350
1351 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1354         size on systems with 64k pages. Fixes #471389.
1355
1356 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1357
1358         Contributed under the terms of the MIT/X11 license by Steven
1359         Munroe <munroesj@us.ibm.com>.
1360
1361         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1362         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1363         necessary.
1364
1365 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1366
1367         Contributed under the terms of the MIT/X11 license by Steven
1368         Munroe <munroesj@us.ibm.com>.
1369
1370         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1371         comparison fix.
1372
1373         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1374         The trampoline can be longer on PPC64.
1375
1376 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1377
1378         Contributed under the terms of the MIT/X11 license by Steven
1379         Munroe <munroesj@us.ibm.com>.
1380
1381         * mini-ppc.c: Compiler warning fixes and trivial code
1382         simplifications.
1383
1384 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1385
1386         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1387         ins->dreg which could be a hardware register, not a vreg.
1388
1389         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1390         
1391         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1392         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1393
1394         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1395         
1396         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1397         ->dreg, that is not the vreg we are looking for.
1398
1399         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1400
1401         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1402         LIVERANGE_END.
1403
1404         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1405         strange crashes.
1406
1407 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1410
1411         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1412         the line diff is 0.
1413
1414         * aot-compiler.c: Add xdebug support on x86.
1415
1416         * unwind.c: Add x86 support.
1417         
1418         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1419         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1420
1421         * mini.c (mini_method_compile): Ditto.
1422         
1423         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1424         the variable index.
1425
1426         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1427         which mimic .push_section/.pop_section in GAS.
1428         
1429         * aot-compiler.c: Emit precise live range information for variables.
1430
1431         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1432
1433         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1434         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1435         them.
1436
1437         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1438         the live ranges of variables.
1439
1440         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1441         of the variable in terms of native offsets.
1442
1443 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1444
1445         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1446         
1447 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1448
1449         Contributed under the terms of the MIT/X11 license by Steven
1450         Munroe <munroesj@us.ibm.com>.
1451
1452         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1453         order (offset then base reg) for ppc_load_multiple_regs.
1454         (emit_save_saved_regs) Correct operand order for
1455         ppc_store_multiple_regs.
1456         (mono_arch_get_call_filter): Correct operand order for
1457         ppc_load_multiple_regs.
1458
1459         * mini-ppc.c (emit_memcpy): Fix operand order for
1460         ppc_load_reg_update and ppc_store_reg_update.
1461         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1462         (mono_arch_emit_epilog): Correct operand order for
1463         ppc_load_multiple_regs.
1464
1465         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1466         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1467
1468 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1469
1470         * cpu-ppc64.md: Fixed storer4_memindex length.
1471
1472 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1473
1474         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1475         line number info.
1476         
1477         * aot-compiler.c (emit_line_number_info): Optimize this.
1478
1479 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1480
1481         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1482         
1483         * aot-compiler.c: Add debug info for methods without debug info by
1484         emitting an IL file and having the line number info referencing that file.
1485
1486         * aot-compiler.c: Optimize the size of the generated line number info.
1487
1488         * aot-compiler.c: Emit line number info in xdebug mode.
1489
1490         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1491         million arguments.
1492
1493 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1494
1495         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1496
1497         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1498         is used.
1499
1500 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1501
1502         * basic-calls.cs: Test for the weird crash found on arm.
1503         
1504 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1505
1506         * cpu-arm.md: Increase the size of storer8_membase_reg and
1507         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1508
1509         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1510         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1511         reg to LR otherwise we'll be loading/storing from just the offset.
1512
1513 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1514
1515         Question: if we are storing gint32's inside the "*native_offset",
1516         should we change the signature to "gint32 *native_offset" to
1517         ensure that we do not have type definition problems?
1518         
1519         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1520         an int * as this is what the other function expects, causes
1521         problems with Freescale's compiler that defined int32_t to be a
1522         long and makes int incompatible 
1523
1524 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1525
1526         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1527         filename conflict with bjam.
1528
1529 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1532         as it might use decomposed ops.
1533
1534 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1537
1538         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1539         is defined.
1540
1541         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1542
1543         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1544         offsets.
1545
1546         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1547         way registers are stored in MonoContext on arm.
1548
1549         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1550         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1551
1552         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1553
1554         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1555
1556         * mini.c (mini_init): Register mono_isfinite.
1557
1558         * jit-icalls.c (mono_isfinite): New jit icall.
1559
1560         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1561         
1562         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1563         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1564         the parent frame.
1565
1566 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1567
1568         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1569         separate frame and stack pointers, so we must use FP to find the register
1570         spill area.
1571         The FP reg is retrieved from the MonoContext::regs array.
1572
1573 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1574
1575         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1576         as FPA requires it.
1577
1578 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1579
1580         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1581         return R4 and R8 when not running under softfloat.
1582
1583         Fixes basic-calls.exe
1584
1585 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1586
1587         * mini-arm.c: Implement some overflow opcodes.
1588
1589 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1590
1591         * ssa.c: handle another alloca.h
1592
1593         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1594         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1595         MONO_ARCH_USE_SIGACTION. 
1596
1597         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1598         capability defines.
1599
1600         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1601
1602         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1603         PPC targets as sigaction does not exist on all platforms, define
1604         this on a per-platform basis.
1605
1606         Instead of erroring out if the platform is not defined, include
1607         mini-ppc-os.h, and expect that the OS specific setting provides
1608         the required information.   
1609
1610 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1611
1612         * aot-compiler.c: Fix --enable-minimal=aot.
1613
1614 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1617         previous change.
1618
1619 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1620
1621         * exceptions-arm.c: Fix warnings.
1622
1623         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1624         ARM.
1625
1626         * mini-x86.c: Fix --enable-minimal=jit build.
1627
1628         * mini.c: Really fix --enable-minimal=jit build.
1629         
1630         * mini.c (construct_object_context_for_method): Move this outside
1631         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1632
1633         "Backported" of r124984 from 2.0 branch.
1634         
1635         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1636
1637         "Backport" of r124977 + r124978 from 2.0 branch.
1638         
1639         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1640         to avoid calling mono_exception_from_token () from the throw trampoline.
1641         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1642         for throwing corlib exceptions, this fixes full-aot support for corlib
1643         exceptions.
1644
1645         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1646
1647 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1648
1649         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1650         part of the changes to split the code in mini into operating
1651         system specific files.
1652
1653         This patch was done by copying mini.c to the respective files to
1654         preserve SVN history.
1655
1656 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1659
1660 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1661
1662         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1663         remoting-invoke-with-check wrappers of shared methods.
1664
1665         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1666
1667 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1668
1669         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1670         optimization if the top of stack is the last instruction in the
1671         bblock.  Otherwise it might have been used after its definition.
1672         Fixes #469742.
1673
1674 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1675
1676         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1677         method as well when get_vcall_slot () fails to match a code sequence.
1678
1679         * mini-arm.c: Fix the android build, which doesn't have
1680         __aeabi_read_tp.
1681
1682 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1683
1684         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1685         the s390x build.
1686
1687 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1688
1689         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1690
1691 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1692
1693         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1694         and put its id into jinfo->used_regs. This is only used on amd64,
1695         which is currently the only platform generating unwind info.
1696
1697         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1698         the dwarf unwinder. This is required to correctly handle async exceptions
1699         like thread abort and stack overflows, which can happen while a method
1700         is in the middle of its prolog or epilog.
1701         
1702         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1703         the unwind info belonging to an AOTed method.
1704
1705         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1706         into cfg->unwind_ops.
1707         
1708         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1709
1710         * mini.c (mini_init): Call mono_unwind_init ().
1711         (mini_cleanup): Call mono_unwind_cleanup ().
1712
1713         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1714         unwind info to be shared between methods.
1715
1716         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1717         saved in the LMF.
1718
1719         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1720         get_throw_pending_exception () to avoid initialization races.
1721
1722         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1723         mono_arch_exceptions_init () function.
1724
1725         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1726
1727 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * mini.c (mono_get_domain_intrinsic): New helper function.
1730         (mono_get_thread_intrinsic): Ditto.
1731
1732         * mini-arm.c mini-ia64.c: Use the new helper functions.
1733         
1734         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1735         the last constrained_call change, since it is needed in the non-AOT
1736         case as well.
1737
1738         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1739         
1740         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1741         mono_get_lmf_addr () on arm eabi linux.
1742
1743 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1746         code sequence which matches a non-virtual call.
1747
1748 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1749
1750         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1751         stack pointer (r1).
1752
1753 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1754
1755         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1756         runtime-invoke wrappers, since they are also shared based on signature.
1757
1758 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1759
1760         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1761         info from the (correct) context.
1762
1763 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1766         
1767         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1768         using dwarf unwinding info. Not yet used.
1769
1770         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1771
1772 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1773
1774         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1775         descriptors.
1776
1777         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1778         special case and handle mono_arch_delegate_invoke_impl() returning
1779         function descriptors.
1780
1781         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1782         trampolines return function descriptors, too.
1783
1784 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1787         out_of_line optimization.
1788
1789 2009-01-21  Martin Baulig  <martin@ximian.com>
1790
1791         * mini.h
1792         (MonoCompile): Added `disable_deadce_vars' to disable removing
1793         unused variables.
1794
1795         * mini.c
1796         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1797         inside the debugger.
1798
1799         * liveness.c (mono_analyze_liveness): Don't remove any unused
1800         variables if `cfg->disable_deadce_vars' is set.
1801
1802 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1803
1804         * method-to-ir.c: Only apply exception constructor optimization if
1805         the the method actually belongs to an exception class.  Fixes
1806         #467456.
1807
1808 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1811         change inside a #ifdef __mono_ppc64__.
1812
1813         * aot-compiler.c (compile_method): Remove the previous limitation.
1814
1815         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1816         on type variables in AOTed code.
1817         
1818         * aot-compiler.c (compile_method): Skip generic methods having type 
1819         constraints on their generic parameters.
1820
1821         * aot-compiler.c (compile_method): Check for methods which cannot be
1822         encoded inside RGCTX_FETCH patches as well.
1823
1824         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1825         build.
1826
1827 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1828
1829         * method-to-ir.c: Force the vtable variable in shared generic code
1830         for the case that they might show up on a stack trace where they
1831         are needed.
1832
1833         * mini-exceptions.c: Save and use generic sharing info as well as
1834         IP in stack traces to resolve shared generic instantiations.
1835
1836 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1837
1838         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1839         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1840
1841 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1842
1843         * method-to-ir.c: Do generic sharing for array constructors.
1844
1845 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1846
1847         * mini-exceptions.c (mono_print_thread_dump): Add information
1848         about the thread state using wapi_current_thread_desc.
1849
1850 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1851
1852         * basic-simd.cs: Tests for the new constructors. 
1853
1854 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1855
1856         * mini-ops.h: Added OP_EXPAND_*
1857
1858         * cpu-x86.md: Same.
1859
1860         * mini-x86.c (mono_arch_output_basic_block): Same.
1861         
1862         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1863
1864 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * iltests.il.in: Add a test for #467385.
1867
1868 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1869
1870         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1871         thread been cleaned up is not the same currently in execution.
1872
1873         Fixes appdomain-unload crashes on windows, osx and linux variants
1874         without the __thread keyword.
1875
1876 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1879         (koush@koushikdutta.com). Implement this for android.
1880
1881         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1882         begins with a digit.
1883
1884         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1885         mono_marshal_get_write_barrier ().
1886
1887 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1888
1889         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1890         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1891         that pass them on a register pair.
1892
1893         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1894         test was crashing due to that.
1895
1896 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1897
1898         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1899         trampoline code. Include ucontext.h only if available.
1900
1901 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1902
1903         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1904         and doesn't check whether it's sharable, like it was before
1905         removing the shared generics hash.  This brings IronPython
1906         performance back to what it was before that change.
1907
1908 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1909
1910         * method-to-ir.c: Handle delegate invocation optimization earlier,
1911         otherwise it would be handled (much more slowly) by the
1912         final/sealed optimization.
1913
1914 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1917         domain is not set. Fixes #465864.
1918
1919 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1920
1921         * method-to-ir.c: Don't stop sharing of generic methods with catch
1922         clauses - we already handle those.
1923
1924 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1925
1926         * mini.c, mini.h: lookup_generic_method() is now
1927         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1928         making the shared_generics_hash obsolete.
1929
1930 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1931
1932         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1933         use the red zone.  Make room on the stack first and then use it,
1934         not the other way around.
1935
1936 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1937
1938         * mini.c (mini_init): Call mono_xdebug_init ().
1939
1940         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1941
1942 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1943
1944         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1945
1946         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1947         trampolines.
1948
1949         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1950         debug+unwind info for trampolines.
1951
1952         * mini.c (mono_create_unwind_op): New helper function.
1953
1954         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1955
1956 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1957
1958         * aot-compiler.c: Fix the build.
1959
1960 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * Makefile.am: Update dtrace-prelink.sh location.
1963
1964 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1967         optimization. Fixes #464520.
1968
1969 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1970
1971         * mini-amd64.c : Adding code to save/restore non-volatile registers
1972            on Winx64.
1973
1974         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1975           registers on Winx64.
1976
1977         Contributed under MIT/X11 license.
1978
1979 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1982         __GNUC_MINOR__ which can break when the major version changes.
1983
1984 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1985
1986         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1987
1988 2009-01-07  Geoff Norton  <gnorton@novell.com>
1989
1990         * helpers.c:  Allow mono -v -v -v to work on darwin.
1991
1992 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1993
1994         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1995           pattern. 
1996
1997         Contributed under MIT/X11 license.
1998
1999 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2002         instead of directly accessing type->data.klass. Fixes #462016.
2003         (mono_allocate_stack_slots_full): Ditto.
2004
2005         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2006         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2007
2008         * aot-compiler.c (emit_plt): Fix ARM build.
2009
2010 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2011
2012         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2013         
2014         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2015         change.
2016
2017         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2018         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2019         #463357.
2020
2021         * iltests.il.in: Add a regression test.
2022
2023 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2024
2025         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
2026
2027 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2028
2029         * basic-simd.cs: Add a regression test for #462457.
2030
2031 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2032
2033         * mini-ops.h: Add a definition of XPHI.
2034
2035         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
2036
2037         * ssa.c (op_phi_to_move): Handle XPHI.
2038
2039         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
2040
2041         Fixes #462457
2042
2043 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2044
2045         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
2046
2047 2008-12-31  Geoff Norton  <gnorton@novell.com>
2048
2049         * mini-ppc.c: The prolog size allocated can be too small for darwin
2050         ppc32 under certain circumstances.  Also fix a small logic bug.
2051
2052 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
2055         while loading AOT methods.
2056
2057         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
2058         since only the former is nulled out after a successful cast. This prevents
2059         crashes with rethrown exceptions when using --debug=casts.
2060
2061 2008-12-24  Mark Probst  <mark.probst@gmail.com>
2062
2063         * mini.h: New macro for checking whether a method is final,
2064         i.e. whether the method or its class is marked final.
2065
2066         * method-to-ir.c: Use the new macro for all final-checks
2067         consistently.  Fixes the crash in the System.ServiceModel tests.
2068
2069 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2070
2071         * mini-exceptions.c (get_exception_catch_class): Corrected another
2072         overly strict assertion.
2073
2074 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2075
2076         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
2077         Clobbering it is not allowed because the caller might use it as
2078         the vtable register in the interface call.
2079
2080 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2081
2082         * mini-exceptions.c (get_exception_catch_class): Corrected an
2083         overly strict assertion.
2084
2085 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
2086         
2087         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
2088
2089         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
2090
2091         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
2092
2093         * cpu-mips.md: correct lengths for certain long_ opcodes.
2094
2095         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
2096
2097         * 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().
2098         
2099 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2100
2101         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
2102         
2103 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2104         
2105         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
2106         
2107 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2108
2109         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
2110         next basic block.
2111         
2112 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
2113
2114         * 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
2115
2116         * 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)
2117         
2118 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
2119         
2120         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
2121         
2122 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
2125         gshared code. Fixes #458947.
2126
2127         * generics.cs: Add a test.
2128
2129 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2130         
2131         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2132         
2133         * mini-mips.c: first pass n32 code generation.
2134
2135         * mini-mips.h: datatypes and defines for n32 support.
2136
2137         * exceptions-mips.c: first pass n32 code generation.
2138         
2139         * tramp-mips.c: first pass n32 code generation.
2140         
2141         * cpu-mips.md: add long_ opcodes.
2142         
2143 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2144
2145         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2146
2147         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2148         
2149         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2150         
2151         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2152
2153         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2154
2155         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2156
2157         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2158
2159         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2160
2161         * helpers.c: for mips/n32, don't pass -mips32 to objdump
2162
2163 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
2166
2167 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
2168
2169         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
2170
2171 2008-12-12  Mark Probst  <mark.probst@gmail.com>
2172
2173         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
2174         descriptors for helper functions directly in front of the code.
2175
2176 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2177
2178         * method-to-ir.c: Removed an unnecessary assertion.
2179
2180 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * method-to-ir.c: Merge SGEN changes from the old JIT.
2183
2184 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * driver.c (compile_all_methods_thread_main): Handle failure of
2187         mono_get_method ().
2188
2189 2008-12-10  Mark Probst  <mark.probst@gmail.com>
2190
2191         * mini-ppc.c: Merged with mini-ppc64.c.
2192
2193         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
2194
2195         * Makefile.am: Use the same sources for PPC and PPC64.
2196
2197         * mini-ppc64.c: Removed.
2198
2199 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2200
2201         * branch-opts.c (remove_block_if_useless): Extract fall through detection
2202         code to mono_bb_is_fall_through.
2203         
2204         * branch-opts.c (mono_remove_critical_edges): Same.
2205
2206 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2207
2208         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
2209         expect that an OP_BR_REG will be there.
2210
2211 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2212
2213         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
2214         for the many branch ops. The original check miss OP_BR_REG.
2215
2216         Fixes #457574.
2217         
2218 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2219
2220         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
2221
2222 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2223
2224         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
2225         while holding the aot lock.
2226
2227 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2228
2229         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
2230         
2231 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2232
2233         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
2234           to release all runtime callable wrappers held by the runtime.
2235
2236         Contributed under MIT/X11 license.
2237
2238 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2239
2240         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
2241           for Winx64.
2242
2243         Contributed under MIT/X11 license.
2244
2245 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2246
2247         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
2248         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
2249
2250 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2251
2252         * cpu-mips.md: fix ckfinite length
2253
2254         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
2255         (mono_arch_lowering_pass): cleanup, rearrange for clarity
2256         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
2257         
2258 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
2259
2260         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
2261         
2262 2008-12-08  Geoff Norton  <gnorton@novell.com>
2263
2264         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
2265         size by 8 bytes as well.
2266
2267 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2268
2269         * basic-simd.cs: Fix method names for Vector16b.
2270         
2271 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2272
2273         * basic-simd.cs: Fix method names for Vector16sb.
2274
2275 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2276
2277         * basic-simd.cs: Fix method names for Vector8us.
2278         
2279 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2280
2281         * basic-simd.cs: Fix method names for Vector8s.
2282         
2283 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2284
2285         * basic-simd.cs: Fix method names for Vector4ui.
2286
2287 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2288
2289         * basic-simd.cs: Fix method names for Vector2l.
2290
2291 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2292
2293         * basic-simd.cs: Fix method names for Vector2d.
2294
2295 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2296
2297         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2298         that are extension methods.
2299
2300 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2301
2302         * basic-simd.cs: Fix method names for Vector4f.
2303
2304 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2307         as such. Fixes #456669.
2308
2309 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2310
2311         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2312         
2313 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2314
2315         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2316         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2317         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2318         (mips_adjust_stackframe): handle FP spills
2319                 
2320         * mini-ops.h: add mips_mtc1_s2
2321         
2322         * cpu-mips.md: add mips_mtc1_s2
2323         
2324 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * unwind.c: New file, move the unwind info encoding functions here from
2327         aot-compiler.c, so they could be used at runtime too.
2328
2329 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2330
2331         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2332         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2333         
2334 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2335
2336         * mini-mips.c: cleanup warnings
2337         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2338         (mips_adjust_stackframe): handle case of taking the address of stack locals
2339         
2340 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2341
2342         * aot-compiler.c: Implement a few functions missing from the asm writer.
2343         (emit_method_code): Only write symbols for methods when using the bin
2344         writer, since the assembler can't deal with the characters in our method
2345         names.
2346
2347         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
2348
2349         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
2350         call.
2351
2352         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
2353         a bit to also restore %rax.
2354
2355 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2356
2357         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2358
2359 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2362         arguments.
2363
2364 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2365
2366         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2367
2368         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2369         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2370
2371         * exceptions-ppc64.c: Removed.
2372
2373         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2374
2375 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2376
2377         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2378         tramp-ppc64.c.
2379
2380         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2381
2382         * tramp-ppc64.c: Removed.
2383
2384 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2387         the TYPESPEC table.
2388
2389 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2390
2391         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2392
2393         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2394         mini-ppc.h instead of mini-ppc64.h.
2395
2396         * mini-ppc64.h: Removed.
2397
2398 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2399
2400         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2401         
2402         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2403         
2404 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2405
2406         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2407         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2408         code easier.
2409
2410 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2411
2412         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2413
2414 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2415
2416         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2417
2418 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2419
2420         * basic-simd.cs: Tests for operator == and != on Vector4f.
2421
2422 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2423
2424         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2425
2426         * simd-intrinsics.c: Kill useless enum.
2427
2428 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2429
2430         * cpu-mips.md: add long_conv_to_ovf_i4_2
2431         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2432
2433 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2434
2435         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2436         
2437         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2438
2439 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2440
2441         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2442         
2443 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2444
2445         * basic-simd.cs: Add tests for new methods.
2446
2447 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2448
2449         * simd-intrinsics.c: Add support for operator == and !=
2450         on Vector4(u)i.
2451
2452         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2453
2454 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2455
2456         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2457
2458 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2461
2462         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2463         MONO_PATCH_INFO_ICALL_ADDR.
2464
2465         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2466
2467         * aot-compiler.c: Resurrect full-aot support.
2468
2469 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2470
2471         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2472         
2473 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2474
2475         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2476         
2477 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2478
2479         * basic-simd.cs: Fix tests to work under ppc.
2480         Remove tests for methods that will be removed.
2481
2482 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2483
2484         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2485         generic type (via a typedef or typeref) correctly.
2486
2487 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2490         diagnose an assertion failure.
2491
2492 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2493
2494         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2495         Fix trampoline size.
2496
2497         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2498         conversion opcodes are implemented natively instead via emulation.
2499
2500 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2501
2502         * cpu-mips.md: remove mips_xori
2503
2504         * mini-ops.h:  remove mips_xori
2505
2506         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2507
2508         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2509         
2510         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2511         
2512 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2513
2514         * cpu-mips.md: fix instruction lengths.
2515
2516         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2517
2518         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2519
2520         * mini-ops.h: fix slti / sltiu op profiles.
2521         
2522 2008-12-02  Martin Baulig  <martin@ximian.com>
2523
2524         * method-to-ir.c (mono_method_to_ir): Disable debugging
2525         information for the init locals block to make the debugger stop
2526         after all locals have been initalized.
2527
2528 2008-12-02  Martin Baulig  <martin@ximian.com>
2529
2530         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2531         running inside the debugger.
2532
2533 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2534
2535         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2536         is enabled.
2537
2538         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2539         alu->alu imm optimization which only shows if deadce is disabled.
2540
2541         * aot-compiler.c: Rename the function names for the binary and asm writers
2542         so they can coexist in the same process. Rework the xdebug code to use the
2543         asm writer. This avoids the need to call into the runtime to dump the
2544         debugging info. Add more debugging info for types.
2545
2546         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2547
2548         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2549         cpu description tables, they can't occur in cpu-<ARCH>.md.
2550
2551         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2552         the stack in CEE_LDFLDA. Fixes #450542.
2553
2554         * generics.cs: Add a new test.
2555
2556 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2557
2558         * mini-ops.h: updated MIPS opcodes
2559         * mini-mips.c: decompose long opts
2560         * mini-mips.h: decompose long opts
2561         
2562 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2563
2564         * cpu-mips.md: fix length on int_rem_un
2565         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2566         
2567 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2568
2569         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2570
2571         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2572
2573 2008-11-29  Martin Baulig  <martin@ximian.com>
2574
2575         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2576         mono_debug_using_mono_debugger() in addition to the
2577         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2578
2579 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2580
2581         * mini-ops.h: updated more MIPS opcodes
2582         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2583         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2584         
2585 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2586
2587         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2588
2589 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2590
2591         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2592         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2593         * mini-ops.h: correct selected mips opcode entries
2594         
2595 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2596
2597         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2598         make them work.
2599
2600 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2601
2602         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2603
2604 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2605
2606         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2607         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2608         * mini-mips.h: disable IMT
2609         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2610         
2611 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2612
2613         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2614
2615 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2616
2617         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2618
2619 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2620
2621         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2622         consistency.
2623
2624 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2625
2626         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2627         for Set/GetVector aligned versions.
2628
2629 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2630
2631         * basic-simd.cs: Add tests for Get/SetVector.
2632
2633 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2634
2635         * mini.c: Removed g_slist_append_mempool().  Now in
2636         metadata/mempool.c.
2637
2638 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2639
2640         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2641         size properly and make the bounds check optional.
2642
2643         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2644         for SetVector and IsAligned.
2645
2646 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * mini.c: Remove unused mono_normalize_opcodes () function.
2649
2650 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2651
2652         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2653         using the new atomic add ops now.
2654
2655         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2656         add.
2657
2658 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2659
2660         * mini-ppc64.c: Several fixes.
2661
2662 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2663
2664         * cpu-mips.md: added jump_table
2665         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2666
2667 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2668
2669         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2670
2671 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2672
2673         * mini-ops.h: corrected a handful of MIPS opcodes.
2674
2675 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2676
2677         * aot-compiler.c: MIPS to use ELF writer
2678
2679 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2680
2681         * mini-codegen.c: remove MIPS specific assert.
2682
2683 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2684
2685         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2686         fixes.  PPC64 now passes most of the runtime regressions.
2687
2688 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2689
2690         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2691         volatile intervals a bit.
2692
2693 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2694
2695         * basic-long.cs: New test case.
2696
2697 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * mini.c (mini_method_compile): Disable globalra for large methods for 
2700         now.
2701
2702         * regalloc2.c (order_moves): Add fp support.
2703
2704         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2705         source bblock ends with an OP_BR_REG.
2706
2707         * ratests.cs: Add a new test.
2708
2709 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2710
2711         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2712         sharing.  PPC64 now passes generics.exe.
2713
2714 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2715
2716         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2717
2718 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2721         memory when mono_jit_info_table_find () can't find the method in the
2722         LMF case.
2723
2724         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2725         AOTed code too.
2726         
2727         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2728         writer too.
2729
2730 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2731
2732         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2733         Several fixes.  PPC64 now runs exceptions.exe and
2734         devirtualization.exe.
2735
2736 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2737
2738         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2739         arrays.exe and basic-math.exe.
2740
2741 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2742
2743         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2744         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2745
2746 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2747
2748         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2749
2750 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2751
2752         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2753
2754         * ir-emit.h: Move macros from method-to-ir.c to here.
2755
2756 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2757
2758         * mini-ops.h: Correct the long simd ops to use LREG.
2759
2760 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2761
2762         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2763         
2764         * mini-ops.h: Correct the dreg type of a few long opcodes.
2765
2766         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2767         Add netbsd support.
2768
2769 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2770
2771         * mini-ppc.c: remove negative stack references in epilog
2772         for platforms that don't support the red zone.
2773
2774 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2775
2776         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2777         point regs.  Now PPC64 passes basic-calls.exe.
2778
2779 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2780
2781         * basic-simd.cs: Add tests for accessors of Vector2l.
2782
2783 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2784
2785         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2786
2787         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2788         
2789         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2790
2791 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2792
2793         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2794         PPC64 passes basic-long.exe.
2795
2796 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2797
2798         * decompose.c: Decompose carry and overflow add on PPC64 like on
2799         other 64 bit archs.  Don't decompose sub at all on PPC64.
2800
2801         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2802         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2803         basic-long.exe.
2804
2805 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2806
2807         * basic-simd.cs: Add tests for accessors of Vector2d.
2808
2809 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2810
2811         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2812
2813         * cpu-x86.md: Same.
2814
2815         * mini-x86.c (mono_arch_output_basic_block): Same.
2816         
2817         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2818
2819 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2820
2821         * basic-simd.cs: Add tests for accessors of Vector4f.
2822
2823 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2824
2825         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2826
2827         * cpu-x86.md: Same.
2828
2829         * mini-x86.c (mono_arch_output_basic_block): Same.
2830         
2831         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2832
2833 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2834
2835         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2836
2837 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2838
2839         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2840
2841         * cpu-x86.md: Same.
2842
2843         * mini-x86.c (mono_arch_output_basic_block): Same.
2844         
2845         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2846
2847 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2848
2849         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2850
2851 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2852
2853         * simd-intrinsics.c: Enable setters for Vector16sb.
2854
2855 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2856
2857         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2858
2859         * cpu-x86.md: Same.
2860
2861         * mini-x86.c (mono_arch_output_basic_block): Same.
2862         
2863         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2864
2865 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2866
2867         * simd-intrinsics.c: Implement setter for Vector8us.
2868
2869 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2870
2871         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2872         for dead variables.
2873
2874 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2875
2876         * mini-ppc.c: remove references to the red zone in the prolog
2877         (for systems that don't support it).
2878
2879 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2880
2881         * cpu-ppc64.md: Fixed a few instruction lengths.
2882
2883         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2884         now.
2885
2886 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2887
2888         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2889         basic.exe now.
2890
2891 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2892
2893         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2894
2895 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2896
2897         * mini-ops.h: Added OP_INSERT_I2.
2898
2899         * cpu-x86.md: Same.
2900
2901         * mini-x86.c (mono_arch_output_basic_block): Same.
2902         
2903         * simd-intrinsics.c: Implement setter for Vector8s.
2904
2905         * simd-methods.h: Add the names of get setters of Vector8s.
2906
2907 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2908
2909         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2910         
2911         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2912         parameters.
2913
2914         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2915
2916 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2917
2918         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2919         for PPC64.  An empty program runs now.
2920
2921 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2922
2923         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2924
2925         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2926         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2927         info for JITted code is emitted into a shared library, loadable into gdb.
2928
2929 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2930
2931         * Makefile.am: Changes to build PPC64.
2932
2933         * mini-arch.h: Include mini-ppc64.h on PPC64.
2934
2935 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2936
2937         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2938         in PPC code up to r119147.
2939
2940 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2941
2942         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2943         cpu-ppc64.md: Changes for PPC64.
2944
2945         Based on code submitted by andreas.faerber@web.de at
2946         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2947         X11/MIT license.
2948
2949 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2950
2951         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2952         cpu-ppc64.md: Copied from the corresponding PPC files from
2953         r118846.
2954
2955 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2956
2957         * mini-ops.h: Added OP_ROUND.
2958
2959         * cpu-x86.md: Added round.
2960
2961         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2962
2963         * basic-math.cs: Added test_0_round to test rounding.
2964
2965         Contributed under MIT/X11 license.
2966
2967 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2968
2969         * aot-compiler.c : Fix the Winx64 build.
2970
2971         Contributed under MIT/X11 license.
2972
2973 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2974
2975         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2976         in OP_EXTRACT_R8 to avoid possible stack corruption.
2977
2978 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2979
2980         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2981
2982         * cpu-x86.md: Added extract_r8.
2983
2984         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2985         
2986         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2987         a couple of OP_EXTRACT_I4.
2988
2989         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2990
2991         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2992
2993 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2994
2995         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2996         and not 4.1. 
2997
2998 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3001         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3002
3003         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3004         are not needed any more.
3005
3006         * mini.h: Remove the unused INS_LIST macros.
3007
3008         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3009         longer needed.
3010
3011         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3012         ir-emit.h.
3013
3014         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3015         mono_alloc_ireg () instead.
3016
3017         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3018         macros.
3019
3020         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3021         on amd64.
3022
3023         * aot-runtime.c (load_aot_module): Disable AOT when running under
3024         CAS.
3025
3026         * mini-amd64.h: Change the monitor fastpath defines to check for
3027         !PLATFORM_WIN32 so they work on *bsd too.
3028
3029         * mini.h mini.c mini-hhpa.c: Remove more unused code.
3030
3031         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
3032
3033         * mini.h (MonoCompile): Remove new_ir flag.
3034
3035         * regalloc.h regalloc.c: Remove unused code.
3036
3037         * cpu-*.md: Remove more unused opcodes.
3038
3039         * simple-cee-ops.h simple-mini-ops.h: Removed.
3040
3041         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
3042         
3043 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * aliasing.h: Removed.
3046
3047         * *.c: Remove references to aliasing.h and inssel.h.
3048
3049         * mini.c: Remove additional unused functions.
3050
3051         * mini-ops.h cpu-*.md: Remove unused opcodes.
3052
3053 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3054
3055         Remove the old JIT code.
3056
3057         * inssel*.brg: Removed.
3058
3059         * ssa.c abcremoval.c aliasing.c: Removed.
3060
3061         * ssa2.c: Renamed to ssa.c.
3062
3063         * abcremoval2.c: Renamed to abcremoval.c.
3064
3065         * *.c: Removed all !cfg->new_ir code.
3066
3067         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
3068         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
3069
3070         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
3071         
3072 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
3075         to simplify the code and cut back on the number of global symbols in the AOT
3076         file.
3077         
3078         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
3079
3080 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
3083         with the got/got_info tables.
3084
3085         * mini.h: Bump AOT file format version.
3086         
3087         * unwind.h: New file, contains definitions for stack unwinding.
3088
3089         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
3090         to cfg->unwind_ops.
3091         
3092         * aot-compiler.c: Generalize the emitting of unwind information to use the
3093         information in cfg->unwind_ops.
3094
3095         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
3096
3097         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
3098         AOT method frames. Enable writing symbols for methods by default.
3099
3100 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
3101
3102         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
3103         and make it work with vectors of element sizes 1, 2 and 4.
3104
3105         * simd-intrinsics.c: Enable getter for all vectors with element size
3106         1, 2 or 4.
3107
3108         * simd-methods.h: Add the names of other getters.
3109
3110         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
3111
3112         * cpu-x86.md: Same.
3113
3114         * mini-x86.c: Same.
3115
3116 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
3117
3118         * mini-ppc.h: portability fix.
3119
3120 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3121
3122         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
3123         buggy and will overwrite it.
3124
3125 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
3128         Use it to emit local symbols for all methods so AOTed methods show up with
3129         their full name in gdb/valgrind output.
3130
3131 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
3132
3133         * mini-ppc.c: portability fixes.
3134
3135 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
3138         entries out of the if (!generic_shared...) code so it is always done.
3139         (mono_class_init_trampoline): Do the patching when running under valgrind
3140         too, newer versions of valgrind have no problems with it.
3141
3142 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
3145         further sections.
3146
3147 2008-11-13  Mark Probst  <mark.probst@gmail.com>
3148
3149         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
3150         filters.
3151
3152 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3153
3154         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
3155
3156 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3157
3158         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
3159
3160         * cpu-x86.md: Same.
3161
3162         * mini-x86.c: Same.
3163
3164         * simd-intrinsics.c: Same.
3165
3166 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3167
3168         * simd-intrinsics.c: Enable constructor intrinsics for all types.
3169
3170 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3171
3172         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
3173         to work with more Vector types.
3174
3175 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3176
3177         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
3178         store the elemens directly instead of using and intermediate.
3179
3180 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
3183
3184         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
3185         to preserve %eax for aot plt trampolines.
3186
3187         * aot-compiler.c (compile_method): Don't skip synchronized methods.
3188         (encode_method_ref): Flag synchronized methods so they won't go through
3189         the AOT trampoline.
3190
3191         * aot-compiler.c: Additional work to support AOTing synchronized methods/
3192         wrappers.
3193
3194         * cpu-ia64.md (jmp): Increase max length.
3195
3196 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3197
3198         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
3199         open generic classes.
3200
3201         * aot-compiler.c: Enable the ELF writer on ELF platforms.
3202
3203         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
3204         box+brtrue optimization since it causes test failures on x86.
3205
3206 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3207
3208         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
3209
3210         * cpu-x86.md: Same.
3211
3212         * mini-x86.c: Same.
3213
3214         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
3215         for simd ctor values. 
3216
3217         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
3218         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
3219
3220 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3221
3222         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
3223         LogicalRightShift.
3224
3225         * simd-instrincs.c: Same.
3226
3227         * basic-simd.cs: Same.
3228
3229 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * ratests.cs: Add more tests.
3232
3233         * regalloc2.c (add_spill_code): Handle more corner cases.
3234
3235 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
3238         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
3239         both the source an destination of an instruction.
3240
3241 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3242
3243         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
3244         wapihandles.c: more portability changes.
3245
3246 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
3247
3248         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
3249         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
3250         safe to execute in a signal handler and the kernel provides better
3251         the info in /proc/self/smaps. Avoid the assert on sigaction during
3252         cleanup.
3253
3254 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3255
3256         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
3257         do the bblock linking hack if it is actually needed.
3258
3259         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
3260         up linking.
3261
3262         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
3263         crash problem is fixed.
3264
3265         * branch-opts.c (mono_remove_critical_edges): Link up newly added
3266         bblocks.
3267
3268         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
3269         for catch clauses.
3270         (mini_method_compile): Set the starting value of next_vreg to 
3271         MAX_IREGS + MAX_FREGS when using globalra.
3272
3273         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
3274         filter clauses with BB_EXCEPTION_HANDLER.
3275
3276         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
3277
3278 2008-11-10  Mark Probst  <mark.probst@gmail.com>
3279
3280         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
3281         space for stdcall.  Fixes regressions on Win32.
3282
3283 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
3286         bblocks.
3287         (linear_scan): Remove an assert which doesn't seem to be needed.
3288
3289         * local-propagation.c (mono_local_deadce): Avoid a call to
3290         MONO_DELETE_INS which would screw up the instruction linking.
3291
3292         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3293
3294         * regalloc2.c: Upgrade to work the current JIT code.
3295
3296 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3297
3298         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3299         case.
3300
3301         * aot-runtime.c: Remove some dead code.
3302
3303         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3304         consistency.
3305         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3306
3307         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3308         trampolines using sscanf since atoi doesn't work on large unsigned values.
3309
3310         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3311         Initialize code_size.
3312
3313 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3314
3315         * method-to-ir.c (mini_emit_inst_for_method): Make
3316         Interlocked.CompareExchange work for Int arguments on 32 bit
3317         archs, as well.
3318
3319 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3320
3321         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3322
3323 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3324
3325         * main.c Fix MSVC build.
3326
3327         Contributed under MIT/X11 license.
3328
3329 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3330
3331         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3332         alignment larger than 8 bytes are aligned correctly, too.
3333
3334         * mini.c: Honor the min_align field of MonoClass when laying out
3335         the stack.
3336
3337 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3340
3341         * aot-compiler.c (emit_plt): Fix a warning.
3342         
3343         * aot-compiler.c: Implement ARM support in the binary writer.
3344
3345 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3346
3347         * basic-simd.cs: Add test for getter with byref arg.
3348         Fix the naming of a few tests.
3349         Add missing checks to a test.
3350
3351 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3352
3353         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3354
3355         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3356         most of the full-aot support for monitor enter/exit trampolines.
3357
3358         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3359         enter/exit trampoline creation functions.
3360
3361         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3362         make dist.
3363
3364 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3365
3366         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3367         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3368         implement the needed functionality without adding crap to the runtime.
3369
3370 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3371
3372         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3373         non-x86 builds.
3374
3375         * mini.c (mono_build_date): New global version holding the build date in
3376         string format.
3377         
3378         * Makefile.am (buildver.c): Generate a file containing the build date.
3379
3380         * main.c: Set the build date from the generated file.
3381
3382         * mini.c (mono_get_runtime_build_info): New helper function returning build
3383         information in a string format.
3384         
3385         * driver.c (mono_main): Print the build date in --version.
3386
3387         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3388         file when the bind-to-runtime-version option is used.
3389
3390 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3391
3392         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3393
3394 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3395
3396         * simd-methods.h: Rename prefetch methods.
3397
3398         * simd-intrinsics.c: Same.      
3399
3400 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3401
3402         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3403         sizes.
3404
3405 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3406
3407         * aot-compiler.c: Use the bundled elf header files instead of depending on
3408         the system one.
3409         
3410         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3411         mempool.
3412
3413         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3414         on every call.
3415
3416 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3417
3418         * cpu-x86.md: Add store nta ops.
3419
3420         * mini-ops.h: Same.
3421
3422         * mini-x86.c: Same.
3423
3424         * mini.h: Add an enum for simd prefetch modes.
3425
3426         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3427         of store. Use the changed code to support store nta.
3428
3429         * simd-intrinsics.c: Add prefetch ops for all vector types.
3430
3431 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3434         threads.
3435         
3436         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3437         names.
3438
3439         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3440         trampolines.
3441
3442 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3443
3444         * mini-x86.c: Fixed commit.
3445
3446 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3447
3448         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3449
3450 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3451
3452         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3453         and MONITOR_EXIT, for the ASM fastpaths.
3454
3455         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3456         available.
3457
3458         * mini.c, patch-info.h: Signature and patch infos for
3459         Monitor.Enter/Exit trampolines.
3460
3461         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3462
3463         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3464         Monitor.Enter/Exit ASM fastpath for Linux.
3465
3466 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3469
3470         * objects.cs: Add a new test.
3471         
3472         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3473
3474         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3475         if MONO_LOG_LEVEL is set.
3476
3477         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3478
3479         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3480
3481         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3482         
3483         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3484         of file offsets. Align the sections belonging to the data segment to 
3485         PAGESIZE.
3486
3487 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3490         elf.h. Port it to amd64.
3491
3492 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3493
3494         * driver.c: Enable SIMD by default.
3495
3496 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3497
3498         * cpu-x86.md: Add prefetch op.
3499
3500         * mini-ops.h: Same.
3501
3502         * mini-x86.c: Same.
3503
3504         * mini.h: Add an enum for simd prefetch modes.
3505
3506         * simd-methods.h: Add prefetch function names.
3507
3508         * simd-intrinsics.c: Add prefetch ops for all vector types.
3509
3510 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3511
3512         * aot-compiler.c (emit_bytes): Speed this up a little.
3513
3514 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * aot-compiler.c: Add JIT time etc. statistics.
3517         
3518         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3519
3520         * mini.h (MonoCompile): Add 'got_offset' field.
3521
3522         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3523         method_got_offsets array.
3524
3525         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3526         wrappers.
3527
3528         * aot-compiler.c (compile_method): Add generic method instances referenced
3529         by the method to the list of methods to be compiled, this is required so if
3530         A<T> references B<T>, and another assembly references A<int>, then it will
3531         also get a copy of B<int>.
3532
3533         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3534         when checking for monitor enter/exit.
3535
3536 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3537
3538         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3539         for Monitor.Enter and Monitor.Exit if enabled.
3540
3541         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3542         Solaris.
3543
3544 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3545
3546         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3547         of an OP_MOVE. Fixes #440046.
3548
3549         * basic-long.cs: Add a new test.
3550
3551 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3552
3553         * mini.h: Add synchronization note for the managed counter-part.
3554
3555         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3556         returns the simd caps of the current cpu.
3557
3558 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3559
3560         * basic-simd.cs: Remove Console.WriteLine.
3561
3562 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3563
3564         * basic-simd.cs: New tests for Vector2ul.
3565
3566 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3567
3568         * simd-intrinsics.c: Add new vector type Vector2ul.
3569
3570 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3571
3572         * basic-simd.cs: New tests for Vector2l.
3573
3574 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3575
3576         * cpu-x86.md: Add long version of most packed int ops.
3577
3578         * mini-ops.h: Same.
3579
3580         * mini-x86.h: Same.
3581
3582         * simd-intrinsics.c: Add new vector type Vector2l.
3583
3584 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3585
3586         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3587
3588         * simd-methods.h: Remove SN_op_BitwiseXor.
3589
3590 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3591
3592         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3593         alignment.
3594
3595 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3596
3597         * basic-simd.cs: Test for Vector2d.
3598
3599         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3600         value.
3601
3602 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3603
3604         * cpu-x86.md: Add double version of all packed float ops.
3605
3606         * mini-ops.h: Same.
3607
3608         * mini-x86.h: Same.
3609
3610         * simd-intrinsics.c: Add new vector type Vector2d.
3611
3612         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3613
3614         * simd-methods.h: Add Duplicate.
3615
3616 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3617
3618         * basic-simd.cs: Test for packing with signed saturation.
3619
3620 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3623         found in the TYPESPEC table.
3624
3625 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3628         too.
3629
3630         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3631
3632         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3633         instead of the RVA, since the RVA can be changed by tools like the cil 
3634         stripper.
3635
3636         * method-to-ir.c (mono_method_to_ir2): Ditto.
3637
3638         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3639         (deserialize_variable): Ditto.
3640
3641 2008-10-25  Martin Baulig  <martin@ximian.com>
3642
3643         * debug-mini.c (write_variable): Use
3644         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3645
3646 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3647
3648         * cpu-x86.md: Add unsigned variants of packd and packw.
3649
3650         * mini-ops.h: Same.
3651
3652         * mini-x86.h: Emit the right instruction for packd and packw.
3653         Add unsigned variants of packd and packw.
3654
3655         * simd-intrinsics.c: Packd and packw were used in place of their
3656         unsigned variants. Change that.
3657         Add intrinsics for (Signed)PackWithSignedSaturation.
3658
3659         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3660
3661 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3662
3663         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3664
3665 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3666
3667         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3668
3669         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3670
3671         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3672         sse instructions.
3673
3674         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3675
3676 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3677
3678         * method-to-ir.c, mini.c: Special casing for the synchronized
3679         wrapper for the ldtoken+GetTypeFromHandle case.
3680
3681 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3682
3683         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3684
3685         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3686         created/split bblocks.
3687
3688 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3689
3690         * mini-ops.h: Add packed signed mul high.
3691         
3692         * cpu-x86.md: Same.
3693
3694         * mini-x86.c (mono_arch_output_basic_block): Same.
3695
3696         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3697
3698         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3699
3700 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3701
3702         * basic-simd.cs: Tests for Vector16sb.
3703
3704 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3707
3708 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3709
3710         * mini-ops.h: Add packed signed min, max and compare greater.
3711         
3712         * cpu-x86.md: Same.
3713
3714         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3715         saturation.
3716
3717         * simd-methods.h: Add CompareGreaterThan.
3718
3719         * simd-methods.h: Remove CompareEquals.
3720
3721         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3722
3723         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3724
3725         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3726         CompareEqual.
3727
3728 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3729
3730         * basic-simd.cs: Fix tests due to change in the API.
3731
3732 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3735
3736 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3737
3738         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3739
3740         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3741         inst_offset as this has invalid values for LDADDR.
3742
3743 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3744
3745         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3746
3747         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3748
3749 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3752         for accessing field->data.
3753
3754 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3755
3756         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3757
3758 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3759
3760         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3761
3762         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3763
3764 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3767         from the cfg mempool.
3768
3769 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3770
3771         * basic-simd.cs: Tests for new methods in Vector8us.
3772
3773 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3774
3775         * mini-ops.h: Add multiply and store high.
3776         
3777         * cpu-x86.md: Same.
3778
3779         * mini-x86.c (mono_arch_output_basic_block): Same.
3780
3781         * simd-methods.h: Same.
3782
3783         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3784         and CompareEqual.
3785
3786 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3787
3788         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3789         mono_class_setup_vtable ().
3790
3791         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3792         mono_class_get_vtable_entry () for accessing klass->vtable.
3793
3794         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3795
3796         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3797         found.
3798
3799         * method-to-ir.c (mono_save_token_info): Don't save references made from
3800         wrappers.
3801
3802         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3803         of generic instances.
3804
3805         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3806
3807 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3808
3809         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3810         OP_JMP depends on the method signature.  Calculate it properly.
3811
3812 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3813         
3814         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3815         called directly.
3816
3817         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3818         instances.
3819         (emit_extra_methods): Add another table mapping method indexes to 
3820         offsets in the extra_method_info table.
3821
3822         * mini.h: Bump AOT file format version.
3823         
3824         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3825         and mono_aot_get_method_from_token () into one function.
3826
3827 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3828
3829         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3830         separate counter.
3831
3832 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3835         methods.
3836
3837         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3838         disable_aot.
3839
3840         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3841
3842         * mini.h: Bump aot file format version.
3843
3844         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3845         AOT file can contain native code for methods which are not in the METHOD
3846         table. Generate code for non-sharable generic instances of generic methods
3847         found in the METHODSPEC table.
3848         
3849         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3850         encoding generic type handles.
3851
3852         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3853         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3854
3855         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3856         macros + MONO_ADD_INS.
3857
3858         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3859         context as well.
3860
3861         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3862
3863         * mini.h: Bump aot file format version.
3864
3865         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3866
3867 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3868
3869         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3870         platforms, with definable stack alignment value.  Set to 16 now
3871         for all platforms.
3872
3873         * mini.c, mini.h, driver.c: Command line option for disabling
3874         stack alignment.
3875
3876 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3877
3878         * basic-simd.cs: Tests for new methods in Vector4ui.
3879
3880 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3881
3882         * mini-ops.h: Add packed int shuffle.
3883         
3884         * cpu-x86.md: Same.
3885
3886         * mini-x86.c (mono_arch_output_basic_block): Same.
3887
3888         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3889         extract mask, max, min, shuffle.
3890
3891         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3892
3893 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3894
3895         * basic-simd.cs: Tests for new methods in Vector8us.
3896
3897 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3898
3899         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3900         RuntimeTypeHandle, not a TypedReference.
3901
3902 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3903
3904         * simd-intrinsics.c: remove relocations.
3905
3906 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3907
3908         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3909         optimizations from the x86 backend.
3910
3911 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3912
3913         * simd-methods.h, simd-intrinsics.c: debloat method names and
3914         prepare for no relocations.
3915
3916 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3917
3918         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3919         
3920         * cpu-x86.md: Same.
3921
3922         * mini-x86.c (mono_arch_output_basic_block): Same.
3923
3924         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3925         extract mask, max, min and sum of absolute differences.
3926
3927         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3928         method name.
3929
3930 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3931
3932         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3933         Renamed one test for consistency.
3934
3935 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3936
3937         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3938         fix to the code that deal with other blocks.
3939
3940 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3941
3942         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3943
3944 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3945
3946         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3947         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3948         able to process the source reg.
3949
3950 2008-10-16  Martin Baulig  <martin@ximian.com>
3951
3952         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3953
3954         * inssel.brg: Add `OP_HARD_NOP'.
3955
3956         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3957
3958         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3959         `OP_HARD_NOP' instruction when running inside the debugger.
3960
3961         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3962         `OP_HARD_NOP' instruction when running inside the debugger.
3963
3964 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3965
3966         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3967         now works. The issue with the regalloc tripping up no longer
3968         happens.
3969
3970         * simd-intrinsics.c (load_simd_vreg): Same.
3971
3972 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3973         
3974         * basic-simd.cs: Tests for new Vector8ui methods.
3975
3976 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3977
3978         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3979         only for type. This fixes crashes where MonoInst::klass is checked
3980         for ops of type != VTYPE or OBJ.
3981
3982         * simd-intrinsics.c (load_simd_vreg): Same.
3983
3984 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3985
3986         * mini-ops.h: Add ops for packed shuffle/max/avg and
3987         extract mask.
3988         
3989         * cpu-x86.md: Same.
3990
3991         * mini-x86.c (mono_arch_output_basic_block): Same.
3992
3993         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3994         extract mask.
3995
3996         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3997         to emit extract mask op.
3998
3999         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4000         to emit word shuffles.
4001
4002 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4003
4004         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4005         the largest alignment needed by a variable, but at least
4006         sizeof(gpointer).
4007
4008 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4009
4010         * basic-simd.cs: Tests for the fixes in the last commit.
4011
4012 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4013
4014         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4015         no longer handles STACK_PTR input.
4016
4017         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4018
4019         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4020         get_simd_vreg   but handles STACK_PTR input.
4021
4022         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
4023         as the input can be an arbitrary pointer.
4024
4025         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
4026         LDADDR local optimization directly otherwise use a store op.
4027
4028 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4029
4030         * basic-simd.cs: Tests for dup low and dup high.
4031
4032 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4033
4034         * mini-ops.h: Add dup low and dup high ops.
4035         
4036         * cpu-x86.md: Same.
4037
4038         * mini-x86.c (mono_arch_output_basic_block): Same.
4039
4040         * simd-intrinsics.c (vector4f_intrinsics): Same.
4041
4042 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4043
4044         * basic-simd.cs: Tests for recently added functionality.
4045
4046 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4047
4048         * mini-ops.h: Add remaining sse1 fp ops.
4049         
4050         * cpu-x86.md: Add remaining sse1 fp ops.
4051
4052         * mini-x86.c (mono_arch_output_basic_block): Same.
4053
4054         * mini.h: Add enum for simd FP compare conditions.
4055
4056         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
4057
4058         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
4059         so the backed can generate the appropriate op.
4060
4061 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4062         This patch squeese one more byte from the SimdIntrinsc struct.
4063
4064         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
4065         a a shift amount intead of simply or'ing it.
4066
4067         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
4068
4069         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
4070         byte so we can have an aditional flags field without increasing struct size.
4071
4072         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
4073         against the simd_supported_versions bitmask.
4074
4075         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
4076
4077 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
4078
4079         * mini.c: remove rawbuffer code (the only use here is unsafe because
4080         it takes locks during signal handling and the kernel now provides much
4081         better info in proc/pid/smaps these days).
4082
4083 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
4086         OP_X86_PUSH_OBJ. Fixes #434620.
4087
4088         * objects.cs: Add a test.
4089         
4090 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
4091
4092         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
4093         that the packuswb/packusdw don't work with unsigned numbers for what
4094         would be negative numbers in signed format.
4095
4096         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
4097         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
4098
4099         * mini-ops.h: Add doubleword forms of many ops and packing ones.
4100
4101         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
4102
4103         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
4104
4105         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
4106
4107         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
4108         add more ops.
4109
4110         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
4111         version as the enum in mini.h.
4112
4113         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
4114         for sse3 ops, check the simd_version field if present. This way the code
4115         works with all versions of sse.
4116
4117 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4118
4119         * simd-intrinsics.c: Fixed intrinsic name typo.
4120
4121         * mini.h: Added missing simd exported function.
4122
4123         * basic-simd.cs: Added tests for Vector4ui.
4124         Fixed broken test for Vector16b.
4125
4126 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4127
4128         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
4129         the max length to 64.
4130
4131 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4132
4133         * method-to-ir.c: Only do the fast virtual generic method call for
4134         non-wrapper methods.
4135
4136         * mini.h, mini-trampolines.c: The new generic virtual remoting
4137         trampoline handles virtual method calls via the vtable (as done by
4138         the fast virtual generic method calls) to remoting proxies.
4139
4140         * mini.c (mono_jit_create_remoting_trampoline): For generic
4141         methods reate a generic virtual remoting trampoline.
4142
4143         * mini-amd64.h: Enable fast virtual generic method calls again.
4144
4145 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4146
4147         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
4148         restore registers when doing tail calls.
4149
4150 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4151
4152         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
4153         Vector4ui.
4154
4155 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4156
4157         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
4158
4159 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4160
4161         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
4162
4163 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4164
4165         * basic-simd.cs: Retrofit for API changes.
4166
4167 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4168
4169         * mini-ppc.c: Handle integer stack arguments for tail calls.
4170
4171 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4172
4173         * optflags-def.h: Removed sse3 optimization.
4174
4175         * driver.c: Same.
4176
4177         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
4178         sse3.
4179
4180         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
4181
4182         * mini.h: Added enumeration with simd versions.
4183
4184         * simd-intrinsics.c (emit_intrinsics): Use the new static var
4185         for detecting SSE3.
4186
4187         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
4188
4189         * mini.c (mini_init): Call mono_simd_intrinsics_init.
4190
4191 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4192
4193         * basic-simd.cs: Added tests for Vector8u and Vector16u.
4194
4195         * basic-simd.cs: Fixed test naming.
4196
4197 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4198
4199         * mini-ops.h: Added ops for packed and saturated math, shifts
4200         and packing/unpacking.
4201
4202         * cpu-x86.md: Added descriptors for the above ops.
4203
4204         * mini-x86.c: Added code to emmit the above ops.
4205
4206         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
4207
4208 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4209
4210         * aot-compiler.c (compile_method): Enable AOT for generic code.
4211
4212         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
4213
4214 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
4215
4216         * mini.c: add a workaround for a common screwup that ends up blamed
4217         to mono (other processes blocking signal delivery).
4218
4219 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4220
4221         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
4222         in the LDFLD/STFLD opcodes. Fixes #432673.
4223
4224         * iltests.il.in: Add a new test.
4225
4226 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
4227
4228         * mini-arm.c: attach the thread in unmanaged->managed transitions
4229         using delegates (bug #433148).
4230
4231 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4232
4233        * basic-simd.cs: Use new ShuffleSel constants.
4234
4235 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4236
4237         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
4238
4239         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
4240         only disable simd intrinsics if no sse2 is detected.
4241
4242         * optflags-def.h: Added sse3.
4243
4244         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
4245         is disabled.
4246
4247 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
4250         when adding delegate-invoke wrappers.
4251
4252 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4253
4254         * Makefile.am: Reenable the simd tests.
4255
4256 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4257
4258         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
4259           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
4260           other vreg is allocated to that hreg.
4261
4262         Contributed under MIT/X11 license.
4263
4264 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4265
4266         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
4267         yet checked in.
4268
4269 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4270
4271         * basic-simd.cs: New test suite for SIMD intrinsics.
4272
4273         * Makefile.am: Added new tests.
4274
4275 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4276
4277         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
4278
4279         * mini-ops.h: Same.
4280
4281         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
4282
4283         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
4284         using SSE2 aware opcodes.
4285
4286         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
4287         is enabled, this code path is only reachable if conversion ops are emmited after
4288         mono_method_to_ir.
4289
4290         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4291
4292         This optimization saves 6 bytes per conversion against the old version.
4293
4294 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4295
4296         * aot-compiler.c (compile_method): Don't skip methods referencing 
4297         generic methods without a corresponding entry in token_info_hash, since
4298         encode_method_ref () can handle all generic methods now.
4299
4300         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4301         generic context is set.
4302         
4303         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4304         generic sharing of LDTOKEN.
4305
4306 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4307
4308         * mini-amd64.h: Temporarily disabled fast virtual generic method
4309         calls because it breaks the System.Runtime.Remoting tests.
4310
4311 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4312
4313         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4314
4315         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4316         so inlining actually works.
4317         (check_inline_caller_method_name_limit): Ditto.
4318
4319 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4320
4321         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4322         64 bit safety (from Olaf Hering and Andreas Farber).
4323
4324 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4325         
4326         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4327         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4328         unused virtual call support code.
4329
4330         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4331         
4332         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4333         which can't use aot trampolines.
4334         (decode_patch): Don't create aot trampolines for methods which can't use
4335         them.
4336
4337         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4338         use aot trampolines.
4339
4340         * mini.h: Bump AOT image format version.
4341         
4342 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
4343
4344         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
4345         to save_token_info () since cmethod is inflated for constrained calls.
4346
4347         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
4348
4349 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
4350
4351         * Makefile.am: Add build rules for ppc64.
4352         This avoids the build failing at pedump with unresolved symbols
4353         due to lack of arch_sources. Instead it will now fail earlier
4354         due to lack of cpu-ppc64.md.
4355
4356         Contributed under MIT/X11 license.
4357
4358 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4359
4360         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4361         tail calls.
4362
4363         * iltests.il.in: Add test case for tail call with many arguments.
4364
4365 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4366
4367         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4368         to the fast virtual generic method code until the aot case is fixed.
4369
4370 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4371
4372         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4373
4374 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4375
4376         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4377         thunks.
4378
4379 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4380         
4381         * simd-intrinsics.c: Forgot to add this one.
4382
4383         * mini-codegen.c: Fix macro in case SIMD is not supported.
4384
4385 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4386         
4387         This patch land initial JIT support for simd intrinsics.
4388
4389         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4390
4391         * Makefile.am: Added simd-intrinsics.c
4392
4393         * simd-intrinsics.c: New file with simd instrinsic related
4394         code.
4395
4396         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4397
4398         * cpu-x86.md: Add simd related instructions.
4399
4400         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4401
4402         * driver.c: Added two new --regression variants.
4403
4404         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4405
4406         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4407
4408         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4409         extract some complicated logic to helper functions.
4410
4411         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4412
4413         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4414
4415         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4416         the specialized simplification pass.
4417
4418         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4419
4420         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4421
4422         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4423         table.
4424
4425         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4426         if MONO_ARCH_NEED_SIMD_BANK is defined.
4427
4428         * mini-ops.h: Added the new simd ops.
4429
4430         * mini-x86.c: Added mono_arch_xregname.
4431
4432         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4433
4434         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4435
4436         * mini-x86.h: Define simd related MONO_ARCH macros.
4437
4438         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4439
4440         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4441
4442         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4443         MONO_CLASS_IS_SIMD to deal with simd related IR.
4444
4445         * mini.h (MonoInst): Added spill_var to the backend union.
4446
4447         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4448
4449         * mini.h: Added forward declarations of the new simd fuctions.
4450
4451         * optflags-def.h: Added new optimization names SIMD.
4452
4453         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4454
4455         * regalloc.h: Added support for working with 3 register banks.
4456
4457         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4458
4459         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4460
4461 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4462
4463         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4464
4465 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4466
4467         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4468         instead of one on 64 bit systems.
4469
4470         * method-to-ir.c: Remove unused includes.
4471
4472 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4475         cfg->used_int_regs, since the two are different on arm.
4476
4477 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4478
4479         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4480         mono_method_get_vtable_index() to get the vtable index.
4481
4482 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4483
4484         * method-to-ir.c (mono_method_to_ir2): Don't create native
4485         wrappers for array methods, because they're never called (and if
4486         they were called they wouldn't work).
4487
4488 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4489
4490         * method-to-ir.c (mono_method_to_ir2): Array methods are
4491         special-cased and must not be invoked indirectly via the (M)RGCTX
4492         when generic sharing is turned on.  Fixes #431413.
4493
4494 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4495
4496         * method-to-ir.c: When generic sharing is active, call
4497         non-interface virtual generic methods via the standard trampoline.
4498
4499         * mini-trampolines.c: Handle virtual generic shared methods.
4500
4501         * mini.h, mini-x86.c, mini-x86.h: New argument for
4502         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4503         method thunks and which is the trampoline to call if the lookup
4504         fails.  Enable the virtual generic method thunk for x86.
4505
4506         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4507         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4508         argument but assert that it's NULL, because these archs don't yet
4509         implement the virtual generic method thunk.  Changes in the IMT
4510         thunk data structures.
4511
4512 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4513
4514         * aot-compiler.c (emit_globals): Avoid invalid characters in
4515         the static linking symbol.
4516
4517         * objects.cs: Add a test for the range check optimization. Fix warnings.
4518
4519         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4520         optimization from the current JIT.
4521
4522         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4523         later in decompose_array_access_opts () to allow more optimizations.
4524
4525         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4526         mono_decompose_soft_float () for consistency.
4527
4528         * mini-ops.h: Fix arguments of OP_STRLEN.
4529
4530         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4531         into a separate function.
4532         (reset_cast_details): Ditto.
4533         (handle_unbox): Save cast details. Fixes #431254.
4534
4535         * method-to-ir.c: Remove some obsolete FIXMEs.
4536
4537 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4538
4539         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4540
4541 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4542
4543         * mini-codegen.c: More work on macros to make them
4544         ready for multiple regbanks.
4545
4546 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4547
4548         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4549
4550         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4551
4552 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4553
4554         * mini-codegen.c (mono_spillvar_offset): Proper support for
4555         multiple regbanks.
4556
4557 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4558
4559         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4560         the stack overflow changes.
4561
4562 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * mini-codegen.c: Make all bank macros depend on reg_bank.
4565
4566         * mini-codegen.c (mono_local_regalloc): Make free mask
4567         initialization regbank aware.
4568
4569 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4570
4571         * mini-codegen.c (mono_local_regalloc): Extract callee
4572         mask selection to a function and make it regbank aware.
4573
4574 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4575
4576         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4577         code to deal with many regbanks.
4578
4579 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4580
4581         * mini-codegen.c: More fp->regbank changes.
4582
4583 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4586         of a hardcoded constant.
4587
4588 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4589
4590         * method-to-ir.c (type_from_stack_type): Fix typo.
4591
4592 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4593
4594         * mini-ia64.c (emit_move_return_value): Convert float return values to
4595         double.
4596
4597         * objects.cs: Add a new test.
4598         
4599         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4600         VARARG methods to fix an assert later.
4601
4602         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4603         end so it at least compiles.
4604
4605 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4608
4609 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4610
4611         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4612         optimization to a new function (emit_optimized_ldloca_ir) and enable
4613         it for both ldloca and ldloca_s.
4614
4615 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4618         gshared CASTCLASS code.
4619
4620         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4621         amd64, where the libc stack unwinder encounters stack frames referring to
4622         native code in unmapped memory.
4623
4624         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4625         sharing.
4626
4627         * generics.cs: Add new test.
4628
4629 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4630
4631         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4632         add a check that one of the ARM_FPU_ constants is defined.
4633
4634         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4635         
4636         * mini-exceptions.c: Fix build on non-altstack platforms.
4637
4638         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4639         sharing of vtypes.
4640
4641         * ir-emit.h: Add a comment to NEW_PCONST.
4642
4643         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4644
4645         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4646
4647         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4648         after the changes to MonoJitDomainInfo.
4649
4650 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4651
4652         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4653
4654 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4655
4656         * mini-ppc.c: Compiler warning fixes.
4657
4658 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4659
4660         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4661         for pinvokes.
4662
4663 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4664
4665         * exceptions-ppc.c, mini-ppc.h: Compile
4666         mono_arch_handle_altstack_exception() on Darwin, too.
4667
4668 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4669
4670         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4671         work on archs which don't have generic sharing implemented, only
4672         without the vtable_arg.
4673
4674 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4675
4676         * mini.c: Added comment explaining why delegate ctor icall
4677         wrappers are compiled.
4678
4679 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4680
4681         * mini.c: Don't produce trampolines to delegate ctor icall
4682         wrappers but compile them upfront.
4683
4684 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4685
4686         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4687         runtime-set function when going back to managed code. Currently this
4688         is used to set back the protection on the soft ovf pages and/or to
4689         throw the stack overflow exception that happened in unmanaged code.
4690
4691 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4692
4693         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4694         runtime-set function when going back to managed code. Currently this
4695         is used to set back the protection on the soft ovf pages and/or to
4696         throw the stack overflow exception that happened in unmanaged code.
4697
4698 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4699
4700         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4701         the support code for restoring stack protection after stack overflows
4702         that happen in unmanaged code. Don't set the exec permission on the
4703         soft overflow area.
4704
4705 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4708         delegate->method_ptr is set. Fixes #428054.
4709
4710 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4711
4712         * tests.cs: Rename to ratests.cs.
4713
4714         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4715         emit_get_rgctx_... functions.
4716
4717 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4718
4719         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4720
4721 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4722
4723         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4724         before asserting that method is sharable.
4725
4726 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4727
4728         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4729         whether method needs a static RGCTX wrapper used instead of
4730         complex conditions.
4731
4732         * generic-sharing.c, mini.h: A few functions moved to
4733         metadata/generic-sharing.c.
4734
4735 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4736
4737         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4738         Generic code sharing for value types, which essentially means
4739         treating value type methods like static methods.  The RGCTX is
4740         passed in the same way.
4741
4742 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4745         opcode when creating multi-dimensional arrays of open types.
4746
4747         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4748         open generic types.
4749
4750         * generics.cs: Add a test.
4751
4752         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4753
4754 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4755
4756         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4757
4758         * mini.c (mini_method_compile): Set it when running under the debugger. 
4759
4760         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4761         vreg optimization if the flag is set.
4762
4763         * driver.c (mono_main): Add --attach= option to pass options to
4764         the attach agent.
4765
4766         * mini.c (sigquit_signal_handler): Start the attach agent.
4767
4768         * ssapre.c: Disable this to save space since it is not yet ported to
4769         linear IR.
4770
4771         * regalloc2.c: Disable this to save space.
4772
4773         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4774
4775 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4776
4777         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4778         the -v option useful again.
4779
4780 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4781
4782         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4783         --break-at-bb.
4784
4785         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4786         arrays of arrays. Fixes #428406.
4787
4788         * method-to-ir.c (mini_emit_castclass): Ditto.
4789
4790         * objects.cs: Add new test.
4791         
4792 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4793
4794         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4795         was wrong at it choked against target_type_is_incompatible for byref types.
4796
4797 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4798
4799         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4800         places.
4801
4802 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4803
4804         * mini-exceptions.c: update a few more exceptions-related counters.
4805
4806 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4807
4808         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4809         new functions to allocate from persistent mempools.
4810
4811 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4812
4813         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4814         multiple register banks in the future.
4815
4816         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4817
4818 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4819
4820         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4821
4822         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4823
4824         * mini.h: Export type_to_eval_stack_type.
4825
4826         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4827         is only ins->klass of byref types.
4828
4829 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4830
4831         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4832         (mini_emit_memcpy2): Ditto.
4833
4834         * mini-amd64.c: Fix a warning.
4835
4836 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4837
4838         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4839         linking.
4840
4841 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4842
4843         * method-to-ir.c: Extract stloc micro-optimization to a
4844         function and apply it to all cases.
4845
4846 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4847
4848         * method-to-ir.c: Don't fail generic code sharing in cases we
4849         already support.
4850
4851 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4852
4853         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4854
4855 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4856
4857         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4858         implementation.
4859
4860 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4861
4862         * trace.c: make tracing more useful and correct, with per-thread
4863         id and indent info.
4864
4865 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4866
4867         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4868         doing a method call and the argument is an R4.
4869
4870 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4871
4872         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4873         generic methods.
4874
4875 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4876
4877         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4878
4879 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4882         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4883
4884 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * driver.c: Add a --agent argument (not supported yet) to load managed
4887         agent assemblies before loading the main assembly, similarly to how the
4888         Java VM handles agents.
4889
4890 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4891
4892         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4893         function to do stack layout of local variables.
4894
4895 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4896
4897         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4898         calculation.
4899
4900 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4903         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4904         JIT if DISABLE_JIT is defined.
4905
4906         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4907         defined.
4908
4909 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4910
4911         * iltests.il.in: Disable the fconv test on PPC (the result is
4912         undefined according to ECMA).
4913
4914 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4915
4916         * iltests.il.in: Enable tail call tests for PPC.
4917
4918         * mini.h: Add variable for storing incoming valuetype argument
4919         addresses for tail calls.
4920
4921         * mini-ppc.c: Implement valuetype arguments and return values for
4922         tailcalls on Linux.
4923
4924 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4925
4926         * mini-ppc.c: Partially implement tail calls (struct arguments and
4927         return values not supported).
4928
4929         * method-to-ir.c: Enable tail calls on PPC.
4930
4931 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4934         runtime-invoke wrappers to work around the problem of them getting
4935         assigned to a random class.
4936
4937         * aot-runtime.c (mono_aot_get_method): Ditto.
4938         
4939 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4940
4941         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4942         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4943
4944 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4945
4946         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4947         until they're implemented properly.
4948
4949         * exceptions-ppc.c: Use arch-independent exception-handling code
4950         instead of custom one.
4951
4952         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4953         for Linear IR.
4954
4955         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4956
4957         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4958         applies when __powerpc__ is defined.
4959
4960 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4963         methods to their code to avoid computing the full name of wrappers and
4964         doing a lookup in a string hash table.
4965
4966 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4969         we identify bblocks before method_to_ir () is ran.
4970
4971         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4972         Also avoid optimizing branches pointing to themselves.
4973
4974         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4975
4976 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4977
4978         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4979
4980 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4981
4982         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4983         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4984         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4985         'buf'.
4986
4987         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4988         jumped to the same entry in plt_jump_table.
4989
4990 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4991
4992         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4993         dynamic images.
4994
4995 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4996
4997         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4998         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4999         #421807.
5000
5001 2008-08-29  Geoff Norton  <gnorton@novell.com>
5002
5003         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5004         segment, and doesn't properly handle .space as .text.  Fixes
5005         AOT Mach/ARM
5006
5007 2008-08-29  Geoff Norton  <gnorton@novell.com>
5008
5009         * mini.c: Disable the mach exception handler when running on 
5010         ARM
5011
5012 2008-08-29  Geoff Norton  <gnorton@novell.com>
5013
5014         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5015         globals on Darwin/ARM
5016
5017 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5018
5019         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5020         since too many things depend on it. Instead, call 
5021         mono_runtime_set_no_exec ().
5022         
5023         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
5024         the new JIT.
5025
5026         * aot-compiler.c: Add an 'asm-only' AOT option.
5027
5028         * mini.c: Avoid initializing the runtime when doing AOT compilation.
5029                 
5030         * aot-compiler.c (compile_method): Disable gshared support for now as it
5031         doesn't yet work.
5032
5033 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5034
5035         * mini-amd64.h : Fix a compiler warning.
5036
5037         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
5038           Changed to use a callback function to retrieve the unwind info.
5039           This avoids problems observed when code blocks were removed by
5040           unloading an app domain.
5041
5042         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
5043           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
5044           to work properly.
5045
5046         Contributed under MIT/X11 license.
5047
5048 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5049
5050         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
5051           case to keep the stack aligned to 8.
5052
5053         Contributed under MIT/X11 license.
5054
5055 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
5056
5057         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
5058         avoid repeated linear searches.
5059
5060 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5061
5062         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
5063         methods it can't handle.
5064         
5065         * aot-compiler.c (add_method): Avoid adding a method twice.
5066         (add_wrappers): Add runtime invoke wrappers for all methods.
5067
5068         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
5069         function to create an aot-compatible version of this trampoline.
5070
5071         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
5072
5073 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5074
5075         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
5076
5077         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
5078         with a generic sharing failure.
5079
5080         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
5081
5082         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
5083         CEE_RETHROW. Fixes #419634.
5084
5085         * mini.c (mono_method_to_ir): Ditto.
5086
5087         * exceptions.cs: Add a new test.
5088         
5089         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
5090         to mono_type_stack_size_internal () since some callers might not pass in
5091         an rgctx.
5092
5093         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
5094         instrument_prolog. Fixes #419878.
5095
5096         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
5097         doubles in soft float mode volatile.
5098
5099 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
5102
5103         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
5104         to handle soft float correctly.
5105
5106         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
5107         the fast path.
5108
5109         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
5110
5111         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
5112         to sp, since the generics catch code requires it.
5113
5114         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
5115         copying.
5116
5117         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
5118         mono_arch_emit_imt_argument ().
5119
5120         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
5121
5122         * mini-arm.c tramp-arm.c: Generic sharing updates.
5123
5124 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * mini-arm.c: Fix the arm build.
5127
5128         * generic-sharing.c (mini_type_get_underlying_type): New helper function
5129         handling enums, generic instances and generic sharing.
5130         (mini_type_stack_size_full): Ditto.
5131
5132         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
5133         
5134         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
5135
5136         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
5137
5138         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
5139         trampolines.
5140
5141         * mini-arm.c: Various small generic sharing changes.
5142
5143         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
5144         this for x86.
5145         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
5146         custom code.
5147
5148         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
5149         helper function to return a generic class init trampoline.
5150
5151         * method-to-ir.c mini.c: Use it.
5152         
5153         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
5154         arch-specfic function to return a generic class init trampoline.
5155
5156         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
5157         the GENERIC_CLASS_INIT custom code.
5158
5159         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
5160         a fatal error, not a sharing failure.
5161
5162         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
5163         needed.
5164
5165         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
5166         trampoline argument from MONO_ARCH_VTABLE_REG.
5167
5168         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5169         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5170         argument, and pass the vtable in VTABLE_REG.
5171
5172         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5173         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5174         argument, and pass the vtable in VTABLE_REG.
5175         (mono_arch_create_trampoline_code_full): Remove some special casing for
5176         the rgctx fetch trampoline.
5177
5178         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
5179         Fixes #419273.
5180
5181         * iltests.il: Add a test for it.
5182
5183 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
5186
5187         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
5188         no longer needed.
5189
5190         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
5191         use mono_jit_info_table_find () to avoid recursion.
5192         (mono_delegate_trampoline): Add a sync wrapper here.
5193
5194         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
5195         here.
5196
5197         * mini.c (mono_method_to_ir): Ditto.
5198         
5199         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
5200         add_sync_wrapper argument. Don't add a sync wrapper here.
5201         (mono_create_jump_trampoline): Don't add a sync wrapper here.
5202
5203         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
5204         
5205 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5206
5207         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
5208           of nonvolatile registers back from MonoContext to CONTEXT.
5209
5210         Contributed under MIT/X11 license.
5211
5212 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5213
5214         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
5215           arguments on Winx64 there are only 4 argument registers.  For this
5216           logic to work the last argument must be pulled from the stack.  
5217
5218         Contributed under MIT/X11 license.
5219
5220 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5221
5222         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5223
5224         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
5225         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
5226         encode/decode_method_ref ().
5227
5228         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
5229
5230         * aot-runtime.c (decode_patch): Ditto.  
5231
5232         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
5233         MONO_PATCH_INFO_METHOD.
5234
5235         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
5236         MonoGenericJitInfo.
5237
5238         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
5239         MonoGenericJitInfo.
5240
5241         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
5242
5243         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
5244         one from the caller.
5245
5246         * aot-runtime.c (decode_generic_inst): New function to decode and
5247         return a interned generic inst.
5248         (decode_klass_ref): Use it.
5249         (decode_method_ref): Ditto.
5250
5251         * aot-compiler.c (emit_exception_debug_info): Save 
5252         jinfo->has_generic_jit_info too.
5253
5254 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
5257
5258         * iltests.il.in: Add a test for fconv_to_i.
5259
5260         * liveness.c: Disable the liveness2 pass for now to save space.
5261
5262         * regalloc2.c: Include mempool-internals.h to fix warnings.
5263
5264         * aot-compiler.c (encode_method_ref): Encode the context of generic
5265         instance methods.
5266
5267         * aot-runtime.c (decode_method_ref): Inflate generic methods using
5268         the context saved in the aot file.
5269
5270         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5271
5272         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5273
5274         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
5275         volatile so they won't be optimized away.
5276
5277 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
5278
5279         * ssa.c:
5280         * ssa2.c:
5281         * mini.c:
5282         * regalloc2.c:
5283         * dominators.c: Remove duplicated functions that now are in
5284         mempool-internals.h.
5285
5286 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * aot-compiler.c: Fix warnings.
5289
5290         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5291
5292         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5293
5294         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5295         as the patch type.
5296
5297         * mini.c (mono_resolve_patch_target): Ditto.
5298         
5299         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5300         (encode_klass_ref): Add support for encoding VARs/MVARs.
5301
5302         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5303
5304         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5305         the handling of the got entries into a separate 'decode_got_entry' function.
5306         Add support for RGCTX_FETCH.
5307
5308         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5309         clobbered by the trampoline code.
5310
5311         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5312         not clobbered by the indirect calling code.
5313
5314 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5317         to fix the build.
5318
5319 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5320
5321         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5322         signature using the compilation mempool otherwise we would leak it.
5323
5324 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5327         mono_emit_abs_call ().
5328
5329         * patch-info.h: Add GENERIC_CLASS_INIT.
5330
5331         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5332
5333         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
5334         as their target as a near call.
5335
5336         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5337         ABS handling code.
5338         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5339
5340         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
5341         call to a runtime function described by a patch.
5342
5343         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
5344         mono_emit_abs_call, this has the advantage that the ABS handling code in
5345         mono_codegen () can handle them both, and can handle other stuff in the
5346         future without additional code.
5347
5348         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
5349         entry.
5350         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
5351         abs addresses.
5352
5353         * mini.h: Add missing bblock related prototypes.
5354
5355         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5356         reverse_inst_list_len fields.
5357
5358         * mini.c: Refactor this file a bit by moving branch optimizations to 
5359         branch-opts.c.
5360
5361         * method-to-ir.c: Merge generic sharing changes missed earlier.
5362
5363         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5364
5365         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5366         shared patches. Process METHODCONST as a shared patch.
5367
5368         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5369         as it crashes on the 2.0 mscorlib.
5370
5371         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5372         to cause crashes.
5373         
5374         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5375         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5376         by IMT.
5377
5378         * aot-compiler.c: Reorganize the got handling code to be a bit more
5379         understandable.
5380
5381 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5384         mono_patch_info_equals/hash, and use it to massively simplify
5385         get_plt_index ().
5386
5387         * mini.c (mono_patch_info_hash): Simplify this and add support for
5388         more patch types.
5389
5390         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5391
5392         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5393         handling code, since an offset is not enough to identify a trampoline.
5394
5395         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5396
5397 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5398
5399         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5400
5401         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5402
5403         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5404
5405         * decompose.c: PPC decompositions for various ops.
5406
5407         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5408
5409 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5410
5411         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5412         call the generic trampoline code using a call, instead of a jump, to
5413         remove some special casing from the generic trampoline code.
5414
5415         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5416         (mono_codegen): Ditto.
5417
5418         * aot-compiler.c aot-runtime.c: Ditto.
5419
5420         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5421
5422         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5423         helper function to find the offset corresponding to a lazy fetch trampoline.
5424
5425         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5426         when doing generic sharing.
5427
5428         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5429         places.
5430         
5431         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5432         mini-trampolines.c to be with the other trampoline creation functions.
5433
5434         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5435         as it is equal to method->signature in most cases, add a 
5436         mono_emit_method_call_full variant which takes a signature and an imt
5437         argument as well.
5438
5439 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5440
5441         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5442         to this function, since it could be computed easily from the method 
5443         argument.
5444         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5445         more.
5446
5447         * method-to-ir.c mini.c: Remove references to 
5448         compile_generic_method_wo_context.
5449
5450         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5451         generic method calls.
5452         
5453         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5454         dimensional non-szarrays.
5455
5456         * mini.c (mini_init): Register mono_array_new_1.
5457
5458         * jit-icalls.c (mono_array_new_1): New jit icall.
5459
5460         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5461         pointing to the method.
5462
5463         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5464         method addresses belonging to METHOD_JUMP patches in the 
5465         jump_target_got_slot_hash.
5466         (mono_aot_load_method): Ditto.
5467
5468         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5469         METHOD_JUMP patches.
5470
5471         * mini.c (mini_create_jit_domain_info): New helper function which 
5472         initializes/frees domain->runtime_info.
5473         (mini_free_jit_domain_info): Ditto.
5474         (mini_init): Install the domain hook functions with the runtime.
5475
5476         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5477         information maintained by the JIT.
5478
5479         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5480         insertion into jump_table_hash into mono_codegen (), also implement proper
5481         locking.
5482
5483         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5484         tail calls, it is already done by the aot code.
5485         
5486         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5487         mechanism on amd64.
5488
5489         * iltests.il.in: Make the jmp test a bit more complex.
5490
5491         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5492         generic instances which doesn't have a token.
5493
5494         * aot-runtime.c (decode_method_ref): Ditto.
5495         
5496         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5497         can handle this case now.
5498         (handle_box): Ditto.
5499
5500 2008-08-15  Geoff Norton  <gnorton@novell.com>
5501
5502         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5503         debugging check.
5504
5505 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5506
5507         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5508         calling generic methods.
5509
5510         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5511
5512         * aot-runtime.c (decode_patch_info): Ditto.
5513
5514         * mini.c (mono_resolve_patch_target): Ditto.
5515         
5516         * patch-info.h: Add METHOD_RGCTX.
5517
5518         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5519
5520 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5521
5522         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5523         arguments in registers.
5524
5525         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5526         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5527
5528         * mini.c (mini_method_compile): Abort aot compilation for generic
5529         methods if generic sharing is disabled.
5530         
5531         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5532         an mrgctx.
5533
5534         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5535         requiring an mrgctx.
5536
5537         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5538         store instructions when converting a vcall to a normal call.
5539
5540         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5541         mono_arch_find_jit_info.
5542
5543 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5544
5545         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5546         avoid calling mono_method_full_name () for every method even if the
5547         env var is not set.
5548         (check_inline_caller_method_name_limit): Ditto.
5549
5550 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5553         assemblies in one run.
5554
5555         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5556         skipped methods if it is not 0.
5557
5558         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5559
5560 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5561
5562         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5563           MONO_ARCH_HAVE_UNWIND_TABLE.
5564
5565         Contributed under MIT/X11 license.
5566
5567 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5568
5569         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5570           from default optimizaton list on Winx64.
5571
5572         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5573
5574         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5575           the LMF from the MonoJitTlsData structure.
5576
5577         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5578
5579         Contributed under MIT/X11 license.
5580
5581 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5582
5583         * mini.c (sigsegv_signal_handler): Fix the build.
5584
5585         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5586         assembly->aot_module.
5587
5588         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5589         hash table. This simplifies and speeds up a lot of code, and fixes support
5590         for .netmodules.
5591
5592         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5593         with the runtime.
5594
5595         * mini-exceptions.c: Ditto.
5596         
5597         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5598         'native_offset' argument, since these are computed in the 
5599         mono_find_jit_info () function.
5600
5601         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5602         is used by exceptions-ppc.c.
5603
5604         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5605         mono_arch_find_jit_info ().
5606         
5607         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5608         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5609         generic code in mini-exceptions.c.
5610
5611 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5612
5613         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5614
5615         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5616         
5617         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5618         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5619         called while holding the loader lock. Fixes #415608.
5620         (mono_aot_get_method_from_token_inner): Ditto.
5621
5622 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5623
5624         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5625         to reduce differences between this and the generic implementation in
5626         mini-exceptions.c.
5627         (ves_icall_get_frame_info): Ditto.
5628
5629         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5630
5631         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5632         longer neccesarry.
5633
5634         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5635         mono_arch_get_call_filter () and make it non-static, for consistency with the
5636         other architectures.
5637
5638 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5639
5640         * mini.c:
5641         * local-propagation.c:
5642         * mini-x86.c: Correct the name of arch defines.
5643
5644 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5645
5646         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5647         NO_EMULATE_LONG_SHIFT_OPS define.
5648
5649 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5650
5651         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5652         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5653
5654         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5655         MACH fixes. Merged from the 2.0 branch.
5656
5657         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5658
5659         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5660         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5661
5662         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5663
5664         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5665         mono_marshal_get_native_wrapper () signature changes.
5666
5667 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5668
5669         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5670         conversion bug under arm.
5671
5672 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5673
5674         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5675
5676         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5677         with overflow checking.
5678
5679 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5680
5681         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5682         to the genmdesc.pl file
5683
5684 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5687         arg_array in the soft-float versions of the LOAD/STORE macros.
5688
5689         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5690         implementation.
5691
5692         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5693
5694 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5695
5696         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5697         a float HFA. Fixes #413621.
5698
5699 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5700
5701         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5702         frame_size to args_size. Fixes build.
5703
5704 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5705
5706         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5707         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5708
5709         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5710         the stack are not unaligned. Fixes #413247.
5711         
5712 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5713
5714         * mini.c: update jitted methods performance counters.
5715
5716 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5717
5718         * mini-exceptions.c: increase the exceptions thrown performance
5719         counter in mono_handle_exception ().
5720
5721 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5722
5723         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5724         can work with netmodules.
5725
5726 2008-07-28  Geoff Norton  <gnorton@novell.com>
5727
5728         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5729         regression tests.
5730
5731 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5732
5733         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5734         correct place.
5735
5736 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5737
5738         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5739           The float param registers and other param registers must be the 
5740           same index on Windows x64.
5741
5742         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5743           ArgValuetypeAddrInIReg argument case.  Setting the argument
5744           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5745
5746         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5747           variable computed above as the copy length for arguments of storage
5748           type ArgValuetypeAddrInIReg.
5749
5750         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5751           ArgValuetypeAddrInIReg argument case.  This case will rely on
5752           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5753
5754         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5755           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5756           jump and tail call instructoins as they do not follow the typical call behavior.
5757
5758         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5759           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5760           local variable and pass the local variable by reference to the called method.
5761
5762         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5763           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5764           of a struct is passed in a register it must be saved with the other
5765           volatile argument on the stack.
5766
5767         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5768           frame pointer the stack adjustment value must be saved to the unwind 
5769           info structure.
5770
5771         Contributed under MIT/X11 license.
5772
5773 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5774
5775         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5776         which got lost in the merge.
5777
5778 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5779
5780         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5781         build.
5782
5783         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5784         
5785         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5786         icalls, since they won't be patched.
5787
5788         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5789         different code sequence when running under valgrind to prevent some valgrind
5790         errors.
5791
5792         * iltests.il.in: Add new regression test.
5793
5794         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5795         end with a throw.
5796
5797         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5798         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5799
5800         * iltests.il.in: Add new test.
5801
5802         * aot-compiler.c: Fix some warnings.
5803
5804         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5805         Fixes #412494.
5806
5807 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5810         (mini_usage_jitdeveloper): Add a missing --wapi option.
5811
5812 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * mini-codegen.c: Simplify the is_fp macros.
5815         (free_up_ireg): Remove, use free_up_reg instead.
5816         (free_up_reg): Fix the fp case.
5817
5818 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5819
5820         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5821         lowered earlier.
5822
5823         * exceptions-x86.c: Merge some changes which seemed to have got lost
5824         in the linear-ir merge.
5825
5826         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5827
5828         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5829         long vreg volatile even if the variable was already created.
5830
5831         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5832         volatile variables.
5833
5834 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5835
5836         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5837
5838         * mini.c (mono_jit_compile_method_inner): Add support for 
5839         MONO_EXCEPTION_BAD_IMAGE.
5840
5841         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5842         mini_method_get_context () returns NULL. Fixes #356531.
5843
5844         * mini.c (mono_method_to_ir): Ditto.
5845         
5846         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5847         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5848
5849 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5852         in the LDFTN implementation.
5853
5854 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5855
5856         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5857         code, patch calls to icalls, too, even if they're not in the
5858         shared generic code hash.  Fixes #411962.
5859
5860 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5861
5862         * cpu-x86.md: Increase the length of the fcall opcodes.
5863
5864         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5865         calls returning floats.
5866
5867         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5868         on NEWARR.
5869         
5870         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5871         missed earlier.
5872
5873         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5874         into the domain->method_code_hash.
5875
5876         * aot-compiler.c: Fix win32 build.
5877
5878         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5879         
5880         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5881         gshared NEWARR implementation.
5882
5883         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5884
5885         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5886         can be used outside of method_to_ir.
5887
5888         * mini.h (MonoCompile): Add arg_types field.
5889
5890         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5891         
5892         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5893         the values of the local arg_array and param_types array.
5894
5895 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5896
5897         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5898         got accesses might only get generated later when NEWOBJ is decomposed.
5899         
5900         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5901         looking up the native code of the target method when a delegate is called
5902         for the first time.
5903
5904         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5905         optimization.
5906
5907         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5908
5909         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5910         AOT work on platforms without a working dlsym implementation.
5911
5912         * mini.h: Bump AOT image format version.
5913         
5914 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5915
5916         * mini-exceptions.c: Free a MonoType with
5917         mono_metadata_free_type() instead of g_free().
5918
5919         * aot-runtime.c: Free a MonoType.
5920
5921 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5922
5923         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5924         optimization.
5925
5926         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5927         fp stack on x86.
5928
5929 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5930         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5931         profiler hook.
5932
5933 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5936         NEWOBJ calls on valuetypes.
5937
5938         * iltests.il.in: Add new test.
5939
5940         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5941
5942 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5943
5944         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5945         is no longer needed.
5946
5947         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5948         non register sized integer arguments.
5949         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5950         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5951         emit_memcpy2 ().
5952
5953         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5954         CEE_MONO_RETOBJ.
5955         
5956         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5957         two a binop with different sized arguments is emitted.
5958
5959         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5960         instruction in the ins==NULL case.
5961
5962 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5965
5966         * mini-x86.c: Fix osx build.
5967
5968         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5969         opcodes as well.
5970
5971         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5972         instruction for non int sized variables.
5973
5974         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5975         implementation.
5976
5977 2008-07-23  Robert Jordan  <robertj@gmx.net>
5978
5979         * method-to-ir.c: Fix MSVC build.
5980
5981 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5984         a non int sized type, widen it to an int since newer versions of gcc seem to
5985         generate code which needs this.
5986
5987         * ssa2.c abcremoval2.c: Fix warnings.
5988
5989         * *: Merge the Linear IR branch.
5990
5991         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5992         the ChangeLog file there describes all the changes done over the years. 
5993         Further documentation can be found at www.mono-project.com/Linear_IL.
5994
5995 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5996
5997         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5998           The float param registers and other param registers must be the 
5999           same index on Windows x64.
6000
6001         Contributed under MIT/X11 license.
6002
6003 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6004
6005         * mini.c: Make the previous fix GC safe.
6006
6007 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6008
6009         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6010
6011 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6012
6013         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6014           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6015           ArgValuetypeAddrInIReg instead.
6016
6017         Contributed under MIT/X11 license.
6018
6019 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * mini-codegen.c (get_register_spilling): Fix a warning.
6022
6023 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
6024
6025         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
6026         for types which the initialization fails. Raises the provided exception
6027         at the right stop after cleanup.
6028
6029 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
6030
6031         * aot-compiler.c: Free most of the memory allocated during compilation.
6032
6033         * mini.c (mini_parse_debug_options): Fix a leak.
6034         
6035         * mini.c (mini_method_compile): Don't add the method to the jit info tables
6036         during aot compilation.
6037
6038 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
6039
6040         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
6041         it has too much register pressure.
6042
6043 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6044
6045         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
6046
6047 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6050         on x86.
6051
6052         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6053         on amd64 similar to the way it is done on arm.
6054
6055         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6056
6057         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
6058         consistency, normalize error messages, avoid loading aot-only modules in
6059         normal mode.
6060
6061         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
6062         for consistency.
6063
6064         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
6065
6066 2008-07-11  Martin Baulig  <martin@ximian.com>
6067
6068         * debug-debugger.h
6069         (MonoDebuggerInfo): Add `interruption_request'.
6070
6071 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6072
6073         * aot-compiler.c (emit_plt): Remove some dead code.
6074
6075         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
6076
6077         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
6078         return the plt info offset belonging to a given plt entry.
6079
6080         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
6081         mono_aot_get_plt_info_offset.
6082         
6083         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
6084         similar to the amd64 code by makeing jumps through a separate jump table 
6085         instead of embedding the jump addresses into the code.
6086
6087 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
6090         method.
6091
6092 2008-07-10  Martin Baulig  <martin@ximian.com>
6093
6094         * mini.c (mini_method_compile): Disable generics sharing when
6095         running in the debugger.
6096
6097 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
6100
6101         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
6102         the local register allocator from running out of registers on x86 when 
6103         using aot.
6104
6105 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
6106
6107         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
6108         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
6109         C4146.
6110
6111         Contributed under MIT/X11 license.
6112
6113 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6114
6115         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
6116         speed up the assembler.
6117
6118 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6119
6120         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
6121         support.
6122
6123         * mini.c: Move the soft float handling macros a bit earlier, add 
6124         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
6125         place.
6126
6127         * mini.h: Add prototype for mono_arch_fixup_jinfo.
6128
6129         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
6130         read-only to help catch code allocation requests.
6131         
6132         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
6133         and turn it off when using --aot-only or when compiling with --aot=full.
6134
6135         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
6136         jump table for switches from the normal domain mempool, not the code
6137         manager.
6138
6139         * mini-trampolines.c (get_unbox_trampoline): New function to return an
6140         unbox trampoline which handles aot-only mode too.
6141
6142         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
6143         an AOTed unbox trampoline.
6144
6145         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
6146
6147 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6148
6149         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
6150         ""
6151
6152         Contributed under MIT/X11 license.
6153
6154 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6155
6156         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
6157           the unwind information for the method at the end of the allocated block.
6158           
6159         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
6160           MonoCompileArch to hold the unwind info for SEH on Winx64
6161         
6162         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
6163           frame pointer info for the method being compiled.
6164           
6165         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
6166           the call to mono_exception_from_token.
6167           
6168         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
6169           storing the method prolog information in a format that the Winx64 SEH can understand.  This
6170           information is stored a the end of the method block because it is all 32-bit offset based.
6171
6172         Contributed under MIT/X11 license.
6173
6174 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6175
6176         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
6177
6178         * wapihandles.c: Fix warnings.
6179
6180         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
6181         mode.
6182
6183         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
6184         mono_jit_compile_method in aot-only mode since that calls the type 
6185         initializer.
6186         
6187         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
6188         get_delegate_invoke_impl in aot-only mode.
6189
6190         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
6191
6192 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
6193
6194         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
6195
6196         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
6197         is on by default.
6198
6199         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
6200
6201         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
6202         init trampoline from the AOT file as well.
6203
6204         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
6205         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
6206         code.
6207
6208         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
6209         mono_init.
6210
6211         * exceptions-amd64.c: Add _full variants for the remaining exception code
6212         creation functions as well, allow emission of relocatable code, remove
6213         caching since that is now done by the caller.
6214
6215         * mini-exceptions.c: Add _full variants for the remaining exception code
6216         creation functions as well, add aot-only support.
6217
6218         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
6219         if we can determine a proper token for them.
6220         (add_wrappers): Add a few more wrappers.
6221         (emit_method_code): Remove some dead code.
6222         (emit_trampolines): Emit exception code too.
6223
6224         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
6225
6226         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
6227         mono_array_new_va which avoids varargs.
6228
6229         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
6230
6231         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
6232         mono_arch_create_specific_trampoline () in all places.
6233
6234         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
6235         a bit so it can be used for other things as well.
6236         
6237         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
6238         on demand as well.
6239
6240         * exceptions-amd64.c: Rename the caching from the exception code creation
6241         functions, it is done by the caller instead.
6242         
6243         * exceptions-amd64.c: Change the signature of the exception code creation 
6244         functions to allow the creation of relocatable code later.
6245
6246         * mini-exceptions.c: Add a set of functions to query the various 
6247         runtime-generated exception functions.
6248
6249         * mini.c mini-exceptions.c: Use the newly added functions instead of the
6250         mono_arch_.. () functions.
6251         
6252 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6253
6254         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
6255
6256         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
6257
6258         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
6259         (mini_get_vtable_trampoline): Ditto.
6260
6261         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
6262         code in the AOT case by returning the code size and a list of relocations to
6263         the caller.
6264
6265         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
6266
6267 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6268
6269         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
6270           clean the stack.
6271
6272         Contributed under MIT/X11 license.
6273
6274 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6275
6276         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
6277         so the buffer size can be computed correctly. Fixes #404735.
6278
6279         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
6280         normally as cfg->debug_info is already freed.
6281
6282 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * mini-amd64.c: For calls returning vtypes in registers, don't store
6285         the return address on the stack, instead allocate a separate local for
6286         it. Fixes #404729.
6287
6288 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6289
6290         * mini-trampolines.c, mini.h: Add an argument to
6291         mono_create_jit_trampoline_in_domain() for turning off the adding
6292         of the sync wrapper.
6293
6294         * mini.c: Use the JIT trampoline without sync instead of
6295         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6296         be patched.
6297
6298 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6299
6300         * driver.c: Turn on GSHARED optimization by default.
6301
6302 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6305         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6306
6307         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6308         create a variant of the generic trampoline code callable from AOTed trampolines.
6309
6310         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6311         trampoline code callable from AOTed trampolines.
6312
6313         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6314
6315 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6316
6317         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6318         pass-through manner.
6319
6320         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6321         and don't fail sharing for them anymore.
6322
6323         * mini-exceptions.c: Handle exceptions in shared generic methods.
6324
6325         * generic-sharing.c: When checking the context of a generic
6326         method, also check its class's context.  Don't treat wrappers as
6327         sharable.
6328
6329         * mini-trampolines.c: Some code factored out to
6330         metadata/generic-sharing.c.  Handle the MRGCTX case.
6331
6332         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6333         we must deal with the method being of another instantiation of the
6334         class.  Add static rgctx invoke wrappers to generic methods.
6335
6336 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6337
6338         * mini.c: Provide all jit infos of generic shared methods with a
6339         generic jit info.
6340
6341         * mini-exceptions.c: Handle the new situation that a generic info
6342         might be available, but not info about the this/vtable/mrgctx
6343         variable.
6344
6345 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6346
6347         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
6348         generic methods.
6349
6350 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
6351
6352         * dominators.c (check_dominance_frontier): Fix a warning.
6353
6354         * mini.h: Add some missing prototypes.
6355
6356         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6357
6358         * driver.c (mono_jit_init_version): Correct the comments since the first
6359         argument should be the name of the root domain, not a filename.
6360
6361         * aot-runtime.c (make_writable): Error out if this is called while running
6362         with --aot-only.
6363         (load_aot_module): Ditto.
6364
6365         * aot-compiler.c: Really fix the computation of method indexes.
6366
6367         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6368         optimizations as this is no longer called frequently.
6369
6370         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6371         method and the invoke impl code and pass it to the delegate trampoline instead of
6372         just the delegate class.
6373
6374 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6375
6376         * aot-compiler.c: Fixup the computation of method indexes.
6377         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6378         the method builder infrastructure.
6379
6380         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6381         has no header.
6382
6383         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6384         mode, load the method right away instead of creating a trampoline.
6385
6386         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6387
6388         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6389         some checks a bit.
6390
6391 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6392
6393         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6394         (mono_aot_load_method): Use method_index instead of method->token.
6395
6396         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6397         can handle icalls etc. properly.
6398
6399         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6400
6401         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6402
6403         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6404         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6405         JIT_ICALL_ADDR patch type.
6406
6407         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6408
6409         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6410         request flag.
6411         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6412
6413         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6414
6415 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6416
6417         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6418         domain->jit_code_hash.
6419
6420 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6421
6422         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6423
6424 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6425
6426         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6427         get_this_arg_from_call, let it compute it when needed.
6428
6429         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6430         gsctx from code only when needed.
6431
6432         * mini-trampolines.c (get_generic_context): Rename this to 
6433         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6434         it can be called by the arch backends.
6435
6436         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6437
6438 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6439
6440         * driver.c (mono_main): Add experimental --aot-only command line option.
6441
6442         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6443         set.
6444
6445 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
6446
6447         * driver.c (DllMain): Remove mono_module_handle.
6448
6449         Contributed under MIT/X11 license.
6450
6451 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6452
6453         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6454         for emitting methods which are not in the source assembly. Detect and report
6455         failure of assembling+linking.
6456         
6457         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6458
6459         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6460
6461 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6464
6465 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6466
6467         * mini.h: Remove some obsolete prototypes.
6468
6469         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6470
6471 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6472
6473         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6474         supported by Visual Studio, so use alloca().
6475
6476 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6477
6478         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6479         Fixes #402585.
6480
6481 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6482
6483         * mini.c: Fail sharing of a generic method if it contains an open
6484         catch clause (because we don't pass MRGCTXs yet).
6485
6486 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6487
6488         * mini.c: When compiling a method with generic sharing, insert the
6489         method instantiated with an all-Object generic context into the
6490         jit info table, instead of the context of the first instantiation
6491         of the method we happen to compile.
6492
6493 2008-06-18  Martin Baulig  <martin@ximian.com>
6494
6495         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6496         `major_version' and `minor_version'.
6497
6498 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6499
6500         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6501         mono_method_is_generic_sharable_impl() takes an additional
6502         argument specifying whether to treat type variables as reference
6503         types.
6504
6505 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6506
6507         * mini.h: Removed obsolete prototypes.
6508
6509 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6510
6511         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6512         already handle them.
6513
6514 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6515
6516         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6517         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6518         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6519         tramp-x86.c: Added a MonoGenericContext* argument to
6520         mono_arch_get_unbox_trampoline() so that it can call other
6521         functions which require it.
6522
6523 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6524
6525         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6526         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6527         mono_arch_get_this_arg_from_call() takes a
6528         MonoGenericSharingContext* as well.
6529
6530 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6531
6532         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6533         implement generic sharing of unbox.
6534
6535 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6536
6537         * mini.c: Don't compute the vtable to determine whether a field is
6538         special static, because it might not work for open types.
6539
6540 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6541
6542         * mini.c: Removed the unused token_type and token_source arguments
6543         from get_runtime_generic_context_ptr().
6544
6545 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6546
6547         * mini.c (ADD_BINOP): fix the build
6548
6549 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6550
6551         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6552         a widening op.
6553
6554 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6555
6556         * mini.h: Removed class relations enum that's not used anymore.
6557
6558 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6559
6560         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6561
6562         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6563         the lazy fetch trampoline access code.
6564
6565 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6566
6567         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6568
6569 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6570
6571         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6572
6573         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6574
6575         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6576
6577 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6578
6579         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6580         intrinsics.
6581
6582         * mini-ops.h: Add MIN/MAX_UN opcodes.
6583
6584         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6585         intrinsics.
6586
6587         * basic-math.cs: Add more min/max tests.
6588
6589         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6590
6591 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6592
6593         * mini.c: Small fix in the prologue of emit_castclass.
6594
6595 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6596
6597         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6598
6599         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6600         do not work even for unsigned types. Fixes #400014.
6601
6602         * basic-math.cs: Add regression tests for unsigned Min/Max.
6603
6604 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6605
6606         * mini.c: Added additional context_used argument to several
6607         functions, which will be needed for sharing generic methods.  Use
6608         GET_RGCTX macro wherever appropriate.  Declare only one
6609         context_used in mono_method_to_ir().
6610
6611 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6612
6613         * mini.c, generic-sharing.c: Removed generic class relations.
6614
6615         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6616         functions due to MRGCTX changes.
6617
6618 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6619
6620         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6621         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6622         with calculated IMT.
6623
6624         * mini.c: Generic sharing of calls via generic interfaces.
6625
6626         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6627         generic method with non-constant MonoGenericContext*.  Instead,
6628         the context is taken out of the method itself.
6629
6630 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6631
6632         * mini.c: Generic sharing of ldvirtftn.
6633
6634 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6635
6636         * mini.c: Generic sharing of ldftn.
6637
6638 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6639
6640         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6641
6642 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6643
6644         * mini.c: Generic sharing of the special case of ldtoken followed
6645         by a call to GetTypeFromHandle.
6646
6647 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6648
6649         * mini.c: Generic sharing of box for nullable types.
6650
6651 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6652
6653         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6654         are passed on the stack. Fixes #324807.
6655
6656 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6657
6658         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6659         for the ArgValuetypeAddrInIReg case.
6660
6661         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6662         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6663
6664         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6665         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6666         local variable and pass the local variable by reference to the called method.
6667           
6668         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6669         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6670
6671         Contributed under MIT/X11 license.
6672
6673 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6674
6675         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6676
6677         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6678         everything.
6679
6680 2008-06-10  Martin Baulig  <martin@ximian.com>
6681
6682         * debug-mini.c
6683         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6684
6685 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
6686
6687         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6688         possible error when no arguments are passed.
6689
6690         Contributed under MIT/X11 license.
6691
6692 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6693
6694         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6695         where the file name is NULL.
6696
6697 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6698
6699         * mini.c: Fix s390 build.
6700
6701 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6702
6703         * trace.c (mono_trace_parse_options): Fix warnings.
6704
6705         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6706
6707 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6708
6709         * mini.c (remove_block_if_useless): Avoid printing the method name.
6710         
6711         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6712         MONO_INST_NEW.
6713
6714         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6715         LMF. Not yet used.
6716
6717         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6718         translated code after it has been patched.
6719
6720 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6721
6722         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6723         avoid problems during code patching on SMP systems.
6724         (emit_call): Avoid adding a patch info which is already added by 
6725         emit_call_body.
6726         (mono_arch_emit_exceptions): Ditto.
6727
6728 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6729
6730         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6731         MONO_TYPE_ISSTRUCT already checks for it.
6732
6733 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6734
6735         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6736           structs with floats on Winx64 the float registers are not used.  
6737           The integer registers are always used..
6738         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6739           only one register will be used and only if the size of the struct 
6740           is 1,2,4, or 8 bytes.
6741
6742         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6743           to work for Winx64.
6744
6745         Contributed under MIT/X11 license.
6746
6747 2008-06-05  Martin Baulig  <martin@ximian.com>
6748
6749         * debug-debugger.c (debugger_lookup_class): Also call
6750         mono_class_setup_methods() here; we're only called from RTI.
6751
6752 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
6753
6754         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6755         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6756         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6757         Post-process object files and add dtrace-generated object, if necessary.
6758
6759         Contributed under MIT/X11 license.
6760
6761 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6762
6763         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6764         element class.
6765
6766         * mini.c: Generic sharing for unbox.any and castclass.
6767
6768 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6769
6770         * mini.c: Ignore tailcall prefix in shared generic code and when
6771         doing calls which require a vtable/rgctx argument.
6772
6773 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6774
6775         * mini.c: Don't free the JIT info.
6776
6777         * driver.c: Changes in the JIT info table testing code.
6778
6779 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6782         interruption. Fix some warnings.
6783
6784         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6785         interruption_checkpoint.
6786
6787 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6788
6789         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6790         from embedding applications.
6791
6792 2008-06-02  William Holmes  <billholmes54@gmail.com>
6793
6794         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6795           reserving 32 bytes on the stack when making calls. 
6796
6797         Contributed under MIT/X11 license.
6798
6799 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6800
6801         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6802         the linear IL branch.
6803
6804         * driver.c: Print out more information for --version on arm.
6805
6806 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6807
6808         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6809         bb_exit instead, since out of line bblocks might not actually be emitted
6810         out-of-line.
6811         
6812         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6813         maximum epilog size for out of line bblocks if tracing is enabled.
6814
6815         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6816
6817 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6818
6819         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6820
6821 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6824         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6825         opcodes.
6826
6827 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6828
6829         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6830         the 'value' to store is a constant.
6831
6832         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6833
6834         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6835         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6836
6837 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6838
6839         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6840         for accessing method->generic_container.
6841
6842 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6843
6844         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6845         
6846         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6847
6848         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6849
6850         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6851         fails.
6852
6853 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6854
6855         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6856
6857         * mini.c: Handle the case when mono_class_vtable () fails.
6858
6859 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6860         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6861         the stat profiler.
6862
6863 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6864
6865         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6866         together with domain sharing.
6867
6868 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6869
6870         * mini.c: Treat callvirts to final methods like non-virtual calls
6871         when doing generic sharing, i.e. look them up in the runtime
6872         generic context.
6873
6874 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6875
6876         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6877         with computed types (for generic sharing).
6878
6879         * mini.c: Generic sharing for mkrefany and refanyval.
6880
6881 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6882
6883         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6884         possible.
6885
6886         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6887         the generic sharing code.
6888         
6889         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6890         when needed.
6891
6892 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6893
6894         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6895
6896 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6897
6898         * driver.c: updated copyright date
6899
6900 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6901
6902         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6903         needed.
6904
6905 2008-05-19  Martin Baulig  <martin@ximian.com>
6906
6907         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6908         pointing to the new `_mono_debug_using_mono_debugger' variable.
6909
6910         * driver.c
6911         (mono_main): Check mono_debug_using_mono_debugger() rather than
6912         the `MONO_INSIDE_MDB' environment variable to check whether we're
6913         inside the debugger.
6914
6915 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6918         argument.
6919
6920 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6921
6922         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6923
6924         * mini.c: Added mini_assembly_can_skip_verification. This
6925         function checks if the assembly requested to skip verification. 
6926         Fixes part of #387274.
6927
6928 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * mini.c (mini_get_method): Disable the check for open generic classes when
6931         using generic sharing.
6932
6933         * generics.cs: Add a test for #387034.
6934
6935         * mini.c (mini_get_method): Check whenever the method class is an open generic
6936         type, and return NULL in that case, causing a verification error. Fixes
6937         #384123.
6938
6939 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6940
6941         * driver.c (mono_main): Revert r102623. The right
6942         thing to do is to enable the verifier under verifiable
6943         unless a --security flag was passed.
6944
6945         We need this non-trivial behavior for --verify-all otherwise
6946         mcs-compileall won't be able to use it. As it needs everything to
6947         be verified under validil.
6948
6949 2008-05-06  Martin Baulig  <martin@ximian.com>
6950
6951         Fix #383749.
6952
6953         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6954         (mono_debugger_thread_cleanup): Likewise.
6955         (mono_debugger_extended_notification): Likewise.
6956
6957 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6958
6959         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6960         against both inflated and non-inflated methods. We need to check against the
6961         generic definition for cases where the instantiated method is not visible.
6962         We need to check against the inflated types for cases where the instantiation
6963         changes any super type. This fixes #382986.
6964
6965         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6966         that check for visibiliy as generic params only appears as the type subject
6967         of tokens on call opcodes. Field manipulation and ldftn must always
6968         target an exact type.
6969
6970 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6971
6972         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6973         if no related --security flag is passed.
6974
6975 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
6976
6977         * mini-arch.h: Prepare support for ppc64.
6978
6979         Contributed under MIT/X11 license.
6980
6981 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
6982
6983         * aot-runtime.c: Prepare support for ppc64.
6984
6985         Contributed under MIT/X11 license.
6986
6987 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
6988
6989         * mini-ops.h: Prepare support for ppc64.
6990
6991         Contributed under MIT/X11 license.
6992
6993 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
6994
6995         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6996
6997         Contributed under MIT/X11 license.
6998
6999 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7000
7001         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7002         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7003         assemblies on windows.
7004
7005 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7006
7007         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7008         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7009         * main.c: Use UTF-8 encoded command line instead of Windows default code
7010         page on Windows to support Unicode.
7011         * driver.c (DllMain): New function for mixed-mode assembly support.
7012         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7013         export __stdcall functions without decoration.
7014
7015         Contributed under MIT/X11 license.
7016
7017 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7018
7019         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7020         saving it very early.
7021
7022 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7023
7024         * mini.h, mini.c: Lots of code for accessing the old RGCTX
7025         deleted.  The only way to access the new RGCTX is via the
7026         trampline.
7027
7028         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
7029         vtable instead of the RGCTX to static methods.
7030
7031         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
7032         accessing the new RGCTX.
7033
7034         * generic-sharing.c: There is no separation between self, type
7035         arguments and other types in the RGCTX anymore.
7036
7037 2008-04-25  Jonathan Chambers <joncham@gmail.com>
7038
7039         * mini-amd64.c (add_general): Remove previous stack adjustment.
7040         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
7041         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
7042         for 32 bytes of stack space reserved for all calls.
7043         
7044         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
7045         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
7046         adjustment.
7047         
7048         Code contributed under MIT/X11 license.
7049
7050 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
7051
7052         * mini.c (mini_method_verify): Only verify non-inflated methods, check
7053         against the root definition, peeling out method and type instantiations.
7054         Cache verify success results, code that fails verification is still
7055         checked multiple times.
7056
7057 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
7060
7061 2008-04-23  Jonathan Chambers <joncham@gmail.com>
7062
7063         * mini-amd64.c (add_general): Always increment stack on Win64.
7064         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
7065         on Win64.
7066         
7067         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
7068         stack based argument handling on Win64.
7069         
7070         Code contributed under MIT/X11 license.
7071
7072 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
7073
7074         * Makefile.am (version.h): Add support for git-svn.
7075
7076 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7077
7078         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
7079         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
7080         avoiding allocations and libc functions which might deadlock.
7081         
7082         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
7083         'no-gdb-backtrace' option is set.
7084
7085         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
7086
7087         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
7088
7089 2008-04-21  Martin Baulig  <martin@ximian.com>
7090
7091         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
7092         and `get_lmf_addr'; `notification_address' is no longer a pointer.
7093
7094 2008-04-21  Martin Baulig  <martin@ximian.com>
7095
7096         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
7097         `thread_vtable', `event_handler_ptr' and `event_handler'.
7098
7099 2008-04-21  Martin Baulig  <martin@ximian.com>
7100
7101         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
7102         allows delayed initialization of the `executable_code_buffer' when
7103         attaching.
7104
7105 2008-04-21  Martin Baulig  <martin@ximian.com>
7106
7107         * mini.h (mono_debugger_create_notification_function): Removed.
7108         * tramp-*.c (mono_debugger_create_notification_function): Removed.
7109
7110         * mdb-debug-info64.s
7111         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7112
7113         * mdb-debug-info32.s
7114         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7115
7116         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
7117         currently only works on x86 and x86_64, so don't create it on ppc.
7118
7119 2008-04-21  Martin Baulig  <martin@ximian.com>
7120
7121         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
7122
7123         * mini.c
7124         (mini_method_compile): In the fp elimination check, check
7125         `debug_options.mdb_optimizations' in addition to
7126         mono_debug_using_mono_debugger().       
7127
7128         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
7129         disable some JIT optimizations which are only disabled when
7130         running inside the debugger.
7131         Added `--help-debug' option to describe the debugging options.
7132         (parse_debug_options): New static function to parse the `--debug'
7133         options, so we can easily add more stuff in future.
7134
7135 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
7136
7137         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
7138         the method has no body.
7139
7140 2008-04-19  Jonathan Chambers <joncham@gmail.com>
7141
7142         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
7143         assembly is not allowed in MSVC 64-bit compiler. 
7144         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
7145         as we get floating point exceptions everywhere.
7146         
7147         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
7148         correctly align arguments for call to throw_exception.
7149         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
7150         
7151         Code contributed under MIT/X11 license.
7152
7153 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
7154
7155         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
7156
7157 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
7158
7159         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
7160
7161         * mini-amd64.c (NEW_INS): Set cil_code.
7162
7163         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
7164         from mini-amd64.c so all debugger related logic is in one place.
7165
7166         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
7167         later won't have a random ip assigned to them.
7168
7169 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
7170
7171         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
7172         the arch specific function initializes code_size.
7173         (mono_create_delegate_trampoline): Ditto.
7174
7175         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
7176         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
7177         platforms.
7178
7179         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
7180         running under the debugger.
7181
7182         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
7183         debugger.
7184
7185         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
7186         debugger. Also move the disabling of optimizations here from driver.c.
7187         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
7188         debugger.
7189
7190         * mini.h (MonoCompile): Add a few new flags.
7191
7192 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
7195         so the cil_code field of created MonoInst's is properly set.
7196         (mini_select_instructions): Ditto.
7197
7198         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
7199         (MONO_INST_NEW_CALL): Ditto.
7200
7201         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
7202         in many places so the ins->cil_code field is properly initialized.
7203
7204         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
7205         place.
7206
7207 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7208
7209         * mini.c (mini_method_compile): Print a different message when compiling a 
7210         shared method.
7211         
7212         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
7213         > 1.
7214
7215 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7216
7217         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
7218         SSE2 instructions.
7219
7220         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
7221         
7222 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7223
7224         * mini.c (handle_stack_args): Make this return void since its return value was
7225         never used. Also set cfg->unverifiable for invalid IL instead of calling
7226         G_BREAKPOINT ().
7227
7228 2008-04-10  Mark Probst  <mark.probst@gmail.com>
7229
7230         * mini.c: Make sure "this" is live in catch clauses with type
7231         variables in shared generic code.
7232
7233 2008-04-08  Mark Probst  <mark.probst@gmail.com>
7234
7235         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
7236         generic_class_is_reference_type() to ensure the proper behaviour
7237         when sharing generic code and the type in question is a type
7238         argument.
7239
7240 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7241
7242         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
7243         race conditions when printing thread dumps. Fixes #377738.
7244
7245 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
7246         
7247         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
7248         shows up when both MonoInst arguments can cause aliasig.
7249         There is likely no way in the current JIT to trigger this problem, but
7250         it showed up in the development of generics sharing, when in a new
7251         opcode both args of an OP_GROUP can be aliases (addresses of a local).
7252         When the generics sharing code will be committed, its tests will be
7253         valid also for this bug.
7254
7255 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7256
7257         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
7258         PATCH_INFO_METHOD.
7259
7260         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
7261         NULL.
7262
7263 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
7264
7265         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
7266         use a more detailed exception message for InvalidCastException.
7267
7268         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
7269
7270         * driver.c (mono_main): Add --debug=casts option to turn on better 
7271         InvalidCastException message details.
7272
7273         * mini.c (mini_get_debug_options): New helper function to return the address of
7274         the debug_options variable.
7275
7276         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
7277         the jit_tls TLS variable.
7278
7279         * mini.c (mono_jit_tls): New TLS variable.
7280
7281         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
7282         option is used.
7283
7284 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * mini.h: Removed verifer related stuff. This code was moved to verify.c
7287
7288         * mini.c: Removed verifer related stuff, code moved to verify.c.
7289
7290         * driver.c: Using code from verify.c instead of mini.c.
7291
7292 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7293
7294         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7295         longer valid.
7296
7297 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7298
7299         * mini.c (check_for_method_verify): Enabling verification of
7300         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7301         have been fixed.
7302
7303 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7304
7305         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7306         caller saved registers as well.
7307         
7308         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7309         saved registers as well.
7310
7311 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7312
7313         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7314
7315         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7316         code.
7317
7318 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7321         to get_call_info.
7322         (get_call_info): Take a gsctx argument instead of 'cfg'.
7323
7324 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7327         mono_verify_all is set.
7328
7329         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7330
7331         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7332
7333 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
7336         an exception.
7337
7338         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7339         verifier and the code generated by the compiler.
7340
7341 2008-03-25  Mark Probst  <mark.probst@gmail.com>
7342
7343         * mini.c: Generic sharing of the non-nullable case of the box
7344         instruction.
7345
7346 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * inssel.brg: Fix the build.
7349
7350         * iltests.il.in: Add a test for lconv.ovf.u8.un.
7351
7352 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
7353
7354         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7355         Array:Address. Fixes #372410.
7356
7357         * iltests.il.in: New tests for readonly prefix.
7358
7359 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7360
7361         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7362         mini-trampolines.c.
7363
7364         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7365         mini-exceptions.c.
7366
7367         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7368         
7369         * mini.c (mono_decompose_op_imm): New helper function.
7370
7371         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
7372         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7373         return value.
7374
7375         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7376         mono_arch_output_basic_block. Fix warnings.
7377
7378         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7379         for now.
7380
7381 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7382
7383         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7384         since the extra frame is now detected automatically inside the loop.
7385
7386         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7387         opts which are now in mono_peephole_ins ().
7388         
7389         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7390
7391         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7392         frames and skip duplicate managed-to-native frames. Fixes #367665.
7393
7394         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7395         opts which are now in mono_peephole_ins ().
7396         (mono_arch_peephole_pass_2): Ditto.
7397
7398         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7399
7400         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7401         arch independent peephole optimizations.
7402
7403         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7404         opts which are now in mono_peephole_ins ().
7405
7406         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7407         
7408         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7409
7410         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7411         pattern.
7412
7413         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7414         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7415         opcode. 
7416
7417 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7420         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7421         return value.
7422
7423         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7424         mono_arch_output_basic_block. Fix warnings.
7425
7426 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7427
7428         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7429         conv.ovf.u.un.
7430
7431 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7432
7433         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7434         conv.ovf.u.un.
7435
7436         * iltests.il: Add new tests.
7437
7438 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
7439
7440         * mini.c: Removed Windows version macros.
7441
7442 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7443
7444         * generic-sharing.c: Put reflection types in the extensible part
7445         of the runtime generic context.
7446
7447         * mini.c: Generic sharing of the GetTypeHandle special case of the
7448         ldtoken instruction.
7449
7450 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7451
7452         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7453
7454         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7455         
7456         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7457         consistency with the other version on the linear IR branch.
7458
7459         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7460
7461         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7462
7463         * iltests.il.in: Add new tests.
7464
7465 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7466
7467         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7468
7469         * iltests.il.in: Add new tests.
7470
7471 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7472
7473         * mini.c: Two variables with the same name were declared in
7474         nesting contexts and one wasn't initialized.  Fixed.
7475
7476 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7477
7478         * mini.c: Generic sharing of the initobj instruction.
7479
7480 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7481
7482         * mini.c: make the test to optimize ldtoken from typeof() more
7483         precise.
7484
7485 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7486
7487         * mini.c: Generic sharing of the initobj instruction for reference
7488         types.
7489
7490 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7491
7492         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7493         the mono_breakpoint_clean_code() code to perform bound checks.
7494
7495 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7496
7497         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7498         mono_arch_patch_callsite() to include the start of the managed method
7499         to be able to perform bound checks.
7500
7501 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7502
7503         * mini.c: Generic sharing for the isinst instruction.
7504
7505 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7506
7507         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7508         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7509         with the runtime generic context argument.
7510
7511         * mini.c: Share calls to several types of unsharable methods by
7512         putting the address of the method code in the runtime generic
7513         context and doing an indirect call.
7514
7515         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7516         to switches.
7517
7518 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7519
7520         * generic-sharing.c: Change due to a change in the runtime genric
7521         context API.
7522
7523 2008-03-15  Martin Baulig  <martin@ximian.com>
7524
7525         * tramp-x86.c
7526         (mono_arch_nullify_class_init_trampoline): Add call to
7527         mono_breakpoint_clean_code() to make things work when running
7528         inside the debugger.
7529
7530         * tramp-amd64.c
7531         (mono_arch_nullify_class_init_trampoline): Add call to
7532         mono_breakpoint_clean_code() to make things work when running
7533         inside the debugger.
7534
7535 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7536
7537         * inssel-long.brg (reg): Fix 64 bit build.
7538
7539 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7540
7541         * mini.c, mini.h: Share static generic code by passing it an
7542         implicit argument pointing to the runtime generic context.
7543
7544         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7545         inssel-long32-mips.brg: New opcodes for calling shared static,
7546         which need to be passed the runtime generic context.
7547
7548         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7549         argument on the stack in the prologue if needed.  New function for
7550         finding the runtime generic context argument from the registers
7551         saved by the trampoline.
7552
7553         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7554         runtime generic context argument.
7555
7556         * tramp-amd64.c: Also restore the register used for the runtime
7557         generic context argument.
7558
7559         * mini-trampoline.c: Resolve shared static calls by consulting the
7560         runtime generic context via the new argument.
7561
7562         * generic-sharing.c: Add an argument to sharability-checking
7563         functions that specifies whether type variables should be treated
7564         as sharable type arguments.
7565
7566         * inssel-x86.brg: Removed a superfluous, buggy rule.
7567
7568         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7569         to switches.
7570
7571 2008-03-14  Martin Baulig  <martin@ximian.com>
7572
7573         * debug-debugger.c (main_thread_handler): Call
7574         mono_runtime_run_main() without sending any notifications.
7575
7576         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7577
7578 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7581
7582 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7583
7584         * tramp-x86.c: Fixed register restore offsets in the trampoline
7585         code for ECX and EDX.
7586
7587 2008-03-12  Geoff Norton  <gnorton@novell.com>
7588
7589         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7590         different ucontext_t implementations.
7591         * exceptions-arm.c: Use the above defines to get exceptions working on 
7592         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7593         * mini-arm.c: Implement iPhone icache support (based on a patch by
7594         Luke Howard lukeh@padl.com)
7595
7596 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7597
7598         * mini.c: Enable generic sharing of calls to non-static
7599         non-interface non-generic non-value-type methods.
7600
7601         * mini-trampolines.c: Resolve calls from shared generic code.
7602
7603 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7604
7605         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7606
7607         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7608
7609 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7610
7611         * mini.c: some fixes for the AOT compiler.
7612
7613 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7614
7615         * cpu-amd64.md: Add clob:1 to some float opcodes.
7616
7617 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7618
7619         * mini.h: Added MiniVerifierMode enumeration.
7620
7621         * mini.c: Added mini_verifier_set_mode to control
7622         the usage of the new verifier.
7623
7624         * mini.c (mono_method): Integrated the new verifier.
7625
7626         * driver.c: Extended --security option with validil and
7627         verifiable options to activate the new verifier.
7628
7629 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7630
7631         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7632         optimization to ctors taking 0 or 2 arguments too.
7633
7634         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7635         a bit.
7636
7637         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7638
7639         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7640
7641 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7642
7643         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7644         non-aot case as well.
7645
7646         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7647
7648         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7649         changes.
7650
7651         * aot-compiler.c (encode_patch): Ditto.
7652
7653         * mini.h (G_MININT32): Fix the definition of this.
7654
7655 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7656
7657         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7658
7659         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7660
7661 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7662
7663         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7664         methods returning vtypes in registers.
7665         (mono_arch_allocate_vars): Ditto.
7666
7667         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7668
7669         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7670
7671         * generics.cs: Add a test from the linear IR branch.
7672
7673         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7674
7675         * mini.c (inline_method): Cache failed inline attempts.
7676
7677 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7678
7679         * mini.c: For shared methods of generic classes put the location
7680         of "this" into the MonoGenericJitInfo.
7681
7682         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7683         register out of a MonoContext by register number.  Add the generic
7684         sharing context as an argument to mono_arch_find_this_argument().
7685
7686         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7687         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7688         for new arch function.
7689
7690         * mini-exception.c: Handle open exception clauses in shared
7691         generic code.
7692
7693         * mini-trampolines.c: Supply additional argument to
7694         mono_arch_find_this_argument().
7695
7696 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7697
7698         * Makefile.am (regtests): Run the bench.exe tests last.
7699
7700 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7701
7702         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7703         a bit.
7704
7705 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7706
7707         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7708         with MS.
7709
7710         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7711         
7712         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7713
7714         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7715         whose class has no cctor.
7716
7717         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7718
7719 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7720
7721         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7722         unverified.
7723
7724 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7725
7726         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7727         to be in sync with the code on the linear IR branch.
7728
7729         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7730
7731         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7732
7733 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7734
7735         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7736
7737         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7738
7739         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7740
7741         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7742
7743         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7744         
7745         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7746         body.
7747
7748 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7749
7750         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7751         OP_LOADR4_MEMBASE emission.
7752
7753         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7754         (mono_spillvar_offset_float): Ditto.
7755
7756         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7757
7758         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7759         emission.
7760
7761         * basic-long.cs: Add regression tests for them.
7762
7763         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7764         use.
7765         (mono_arch_allocate_vars): Fix representation of single-precision float
7766         argument.
7767         (mono_arch_output_basic_block): Ditto.
7768
7769         * inssel-mips.brg: Ditto, remove duplicate items.
7770
7771         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7772         arguments of tail calls as on other platforms.
7773         (mono_arch_output_basic_block): Handle tail calls.
7774
7775         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7776         register.
7777
7778         * objects.cs (test_5_pass_static_struct): Add test for it.
7779
7780         Contributed under MIT/X11 license.
7781
7782 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7783
7784         * Makefile.am: Use gmcs for compiling the regression tests.
7785
7786         * *.2.cs *.2.il: Rename to *.cs and *.il.
7787
7788 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7789
7790         * regalloc.h: Make the vassign array smaller.
7791
7792         * mini.c (mini_method_compile): Remove an unused field in cfg.
7793
7794         * mini-codegen.c: Add a bunch of micro optimizations.
7795
7796 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7797
7798         * regalloc.h: Remove some unused fields.
7799
7800 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7801
7802         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7803
7804         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7805
7806 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7807
7808         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7809
7810         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7811         trampoline: Fetch an entry from the runtime generic context.  If
7812         it's NULL, jump to the actual trampoline to fill the runtime
7813         generic context.  Otherwise, return it.
7814
7815         * mini.c: Call the lazy fetch trampoline to get entries out of the
7816         runtime generic context.
7817
7818         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7819         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7820         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7821
7822 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7823
7824         * mini.c: Fetch data out of the extensible part of the runtime
7825         generic context instead of calling a helper function.
7826
7827         * generic-sharing.c: Some functions moved into
7828         metadata/generic-sharing.c.  Helper function for fetching other
7829         types now checks and asserts against extensible rgctx (just for
7830         debugging purposes - the helper function isn't called anymore
7831         unless for debugging).
7832
7833 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7836         for tail calls up to the point that the tests in iltests.exe run. Also add a
7837         dummy CKFINITE implementation.
7838         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7839         needed for trampoline LMF frames.
7840
7841         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7842         trampoline LMF frames.
7843
7844 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7845
7846         * mini.c (inline_method): clean any pending loader error when inlining fail.
7847         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7848
7849 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7850
7851         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7852
7853         * aot-runtime.c (decode_patch_info): Ditto.
7854
7855         * mini.c (mono_resolve_patch_target): Ditto.
7856         
7857         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7858         icall wrappers.
7859
7860         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7861         
7862         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7863         if it references an icall address.
7864
7865 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7866
7867         * cpu-s390x.md: Remove some more unused opcodes.
7868         
7869         * cpu-s390x.md: Remove some unused opcodes.
7870
7871         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7872         mono_op_imm_to_op ().
7873
7874         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7875         instead of a switch statement.
7876         
7877         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7878         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7879
7880         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7881         
7882         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7883
7884         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7885         -1.
7886
7887 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7888
7889         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7890         opened. Fixes #362607.
7891
7892         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7893
7894         * iltests.il.in: Add a test for static methods in interfaces.
7895
7896 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7897
7898         * genmdesc.c (build_table): Fix a crash on older glib versions.
7899
7900         * cpu-sparc.md: Remove some unused opcodes.
7901         
7902         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7903         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7904
7905         * cpu-amd64.md: Remove some unused opcodes.
7906
7907         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7908         like the other opcodes.
7909
7910 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7911
7912         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7913
7914         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7915
7916         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7917         variables 'cfg' instead of 'm' for consistency.
7918
7919         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7920
7921         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7922         argument holding the vtype return address, to avoid the ambigious use of
7923         cfg->ret for this purpose.
7924
7925         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7926
7927         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7928         
7929         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7930         new mono_print_ins () function which only takes one argument.
7931
7932 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7935         macro arguments.
7936
7937 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7938
7939         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7940
7941         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7942
7943         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7944         opcodes and other small changes.
7945
7946         * mini-ops.h: Add some new opcodes from the linear IR branch.
7947
7948         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7949
7950         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7951         opcodes, use the REG_MEMBASE opcodes instead.
7952         
7953         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7954         opcodes, use the REG_MEMBASE opcodes instead.
7955         
7956         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7957         linear IR branch.
7958
7959         * mini.c (mono_op_imm_to_op): New helper function.
7960
7961         * mini-ops.h: Add some opcodes from linear IR branch.
7962
7963 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7964
7965         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7966         <tsv@solvo.ru>.
7967
7968 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7969
7970         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7971         OP_ICONV_TO_R4/R8.
7972
7973         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7974
7975 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7976
7977         * aot-compiler.c (emit_method_code): Add an assert.
7978
7979         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7980         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7981         methods.
7982
7983 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7986         some load/store opcodes so they are consistent. 
7987         (mono_arch_emit_prolog): Simplify some code.
7988
7989         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7990
7991         * objects.cs: Add tests for large argument offsets on ARM.
7992
7993         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7994         stack offsets. Fixes #359651.
7995
7996         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7997
7998         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7999
8000         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8001
8002         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8003
8004         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8005
8006         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8007         rid of CEE_CONV_R_UN.
8008
8009         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8010
8011 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8014
8015         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8016
8017         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8018
8019         * cpu-amd64.md: Remove some unused opcodes.
8020
8021         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
8022
8023         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
8024
8025         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8026         arch specific functions for its parts. Call the peephole pass after local
8027         regalloc so the prolog can compute a more accurate max_offset.
8028         
8029         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
8030         the corresponding OP_I/OP_L opcodes.
8031
8032         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
8033
8034         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
8035
8036 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8037
8038         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
8039         as they are handled in mini.c.
8040
8041         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
8042         
8043         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
8044         case since it is handled in mini.c.
8045
8046         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
8047
8048         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
8049
8050         * *.c: Use the new opcodes in the IR and back end code.
8051
8052         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
8053
8054         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
8055
8056 2008-02-06  Mark Probst  <mark.probst@gmail.com>
8057
8058         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
8059         an assert because it has a race condition.
8060
8061 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8062
8063         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
8064
8065         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
8066
8067         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
8068
8069         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
8070         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
8071
8072 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8073
8074         * cpu-amd64.md (move): Correct the maximum size of move.
8075
8076 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8077
8078         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
8079         the generic class init trampoline to return quickly if the class
8080         is already inited.
8081
8082 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
8085         issues where an 32 bit callsite cannot be patched by a 64 bit address.
8086
8087 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
8088
8089         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
8090         branch.
8091
8092 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
8093
8094         * objects.cs: Add some soft-float tests.
8095
8096         * mini.c: Fix a couple more soft-float issues.
8097
8098         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
8099
8100         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
8101         avoid a REX prefix.
8102
8103 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8104
8105         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
8106         exception happens while compiling a virtual method.
8107
8108 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8109
8110         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
8111         
8112         * mini-sparc.c: Fix build.
8113
8114         * mini-sparc.c (get_call_info): Add support for generic sharing.
8115
8116         * mini-exceptions.c: Add a FIXME.
8117
8118 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8119
8120         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
8121         altstack handling code.
8122
8123         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
8124         
8125         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
8126
8127         * mini-s390.c: Add support for generic sharing.
8128
8129         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8130         Fix CAS on s390.
8131         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8132
8133         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
8134
8135         * mini-s390x.c: Add support for generic sharing.
8136         
8137         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8138         Fix CAS on ia64.
8139         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8140
8141         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
8142         can be used since it takes a 16 bit signed immediate.
8143
8144         * inssel-s390x.brg: Fix OP_SETRET.
8145
8146         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
8147
8148         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
8149
8150         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
8151
8152         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
8153
8154         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
8155         in one place.
8156
8157         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
8158         stuff.
8159
8160         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
8161         of the unused mono_arch_patch_delegate_trampoline stuff.
8162
8163 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
8164
8165         * basic-long.cs: Move the fp related tests to basic-float.cs.
8166
8167         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
8168
8169         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
8170
8171         * basic-calls.cs: Add a test for proper float argument passing.
8172
8173         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
8174         if the context corresponds to an exception received through a signal.
8175
8176         * exceptions.cs: Add a test for nullref handling at the start of a try
8177         clause.
8178
8179         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
8180
8181         * jit-icalls.c (mono_break): New JIT icall.
8182
8183         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
8184
8185         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
8186
8187 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
8188
8189         * cpu-*.md: Get rid of unused opcodes.
8190
8191         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
8192
8193         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
8194         by all platforms.
8195
8196         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
8197         define.
8198
8199         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
8200         the arch independent trampoline code in mini-trampolines.c.
8201
8202         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
8203
8204         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
8205
8206         * mini-s390.h: Remove an unused define.
8207         
8208         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
8209         the arch independent trampoline code in mini-trampolines.c.
8210
8211         * mini-arm.c (mono_arch_emit_prolog): Fix build.
8212
8213 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
8214
8215         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
8216
8217         * mini-s390.c (mono_arch_emit_prolog): Fix build.
8218
8219         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
8220
8221         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
8222
8223         * cpu-amd64.md: Use smaller sizes for int opcodes.
8224
8225         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
8226
8227         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
8228         objects.cs.
8229
8230         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
8231         debugging.
8232
8233         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
8234         instead of though a pointer to save an indirection when accessing elements of
8235         the array.
8236
8237         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
8238         some typos.
8239         (NOT_IMPLEMENTED): New helper macro.
8240         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
8241         of a bb.
8242
8243         * *.c: Use the new helper macro.
8244
8245 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
8246
8247         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
8248
8249 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8250
8251         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
8252         stack slots.
8253
8254 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
8255
8256         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
8257         profiling is enabled.
8258         
8259         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
8260         the end.
8261         (mono_arch_emit_prolog): Add more first bblock optimizations.
8262
8263         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
8264         in order if possible.
8265         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
8266         bblock, since the arguments are still in their original registers.
8267
8268         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
8269
8270 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
8273         as well.
8274
8275         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
8276         offset 0.
8277
8278         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
8279
8280         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
8281         process async exceptions received while in unmanaged code.
8282
8283         * mini.c (mini_init): Install a callback with the runtime which will be called
8284         when a thread receives an async exception while in unmanaged code.
8285
8286         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
8287
8288         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8289
8290 2008-01-16  Wade Berrier  <wberrier@novell.com>
8291
8292         * cpu-g4.md:
8293         * cpu-arm.md:
8294         * cpu-s390x.md:
8295         fix build
8296
8297 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8298
8299         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8300         compilation with sun cc.
8301
8302         * cpu-*.md: Fix the build.
8303
8304         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8305
8306         * mini-amd64.h: Add some comments to the MonoLMF structure.
8307
8308         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8309         
8310         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8311         in the LMF structure if possible. This saves two instructions in the
8312         managed->native wrappers.
8313
8314         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8315
8316 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8317
8318         * generic-sharing.c: New type argument lookup code which uses the
8319         runtime generic context template.
8320
8321 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8322
8323         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8324
8325         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8326         (mono_arch_output_basic_block): Fix localloc implementation.
8327
8328         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8329
8330         * mini-ia64.c (peephole_pass): Fix ia64 build.
8331
8332         * mini-amd64.c (peephole_pass): Fix a warning.
8333         
8334         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
8335         at a constant offset from sp/fp.
8336
8337         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8338         instead of obtaining it from *lmf in the managed method case.
8339
8340 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8341
8342         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
8343
8344 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
8345
8346         * mini.h (MonoInstList): New type.
8347         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
8348         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
8349         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
8350         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
8351         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
8352         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
8353         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8354         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8355         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8356         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8357         MONO_INST_LIST_FOR_EACH_ENTRY,
8358         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8359         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8360         mono_inst_list_first, mono_inst_list_last,
8361         mono_inst_list_next, mono_inst_list_prev): New instruction
8362         list handling interfaces.
8363         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8364         list head 'ins_list'.
8365         (MonoInst): Replace next pointer with list head 'node'.
8366         (MonoCallInst): Make 'out_args' a MonoInstList.
8367         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8368         (MonoCompile): Delete reverse_inst_list and
8369         reverse_inst_list_len.
8370         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8371         mono_arch_lowering_pass, mono_arch_local_regalloc,
8372         mono_arch_output_basic_block, mono_arch_emit_prolog):
8373         Convert to new instruction lists.
8374         (insert_after_ins): Delete.
8375         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8376         instruction lists.
8377         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8378         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8379         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8380         mono_emulate_opcode, mono_emit_load_got_addr,
8381         inline_method, mono_method_to_ir, mono_print_bb_code,
8382         print_dfn, decompose_pass, nullify_basic_block,
8383         replace_out_block_in_code, remove_block_if_useless,
8384         merge_basic_blocks, move_basic_block_to_end,
8385         try_unsigned_compare, optimize_branches, mono_print_code,
8386         mini_select_instructions, remove_critical_edges): Likewise.
8387         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8388         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8389         mono_arch_output_basic_block, mono_arch_emit_prolog):
8390         Likewise.
8391         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8392         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8393         mono_arch_output_basic_block): Likewise.
8394         (inst_list_prepend, insert_after_ins): Delete.
8395         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8396         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8397         instruction lists.
8398         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8399         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8400         mono_arch_emit_prolog): Likewise.
8401         * cfold.c (mono_constant_fold): Likewise.
8402         * liveness.c (visit_bb, mono_analyze_liveness,
8403         optimize_initlocals): Likewise.
8404         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8405         * graph.c (mono_draw_code_cfg): Likewise.
8406         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8407         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8408         mono_ssa_cprop): Likewise.
8409         * abcremoval (get_relations_from_previous_bb, process_block):
8410         Likewise.
8411         * local-propagation (mono_cprop_invalidate_values,
8412         mono_local_cprop_bb): Likewise.
8413         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8414         peephole_pass, mono_arch_output_basic_block,
8415         mono_arch_emit_prolog): Likewise.
8416         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8417         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8418         mono_arch_emit_prolog): Likewise.
8419         (insert_after_ins): Delete.
8420         * aliasing.c (print_code_with_aliasing_information,
8421         mono_build_aliasing_information, mono_aliasing_deadce):
8422         Convert to new instruction lists.
8423         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8424         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8425         mono_arch_local_regalloc, mono_arch_output_basic_block):
8426         Likewise.
8427         (insert_after_ins): Delete.
8428         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8429         peephole_pass, mono_arch_output_basic_block): Convert to
8430         new instruction lists.
8431         * mini-codegen (InstList, inst_list_prepend,
8432         insert_after_ins): Delete.
8433         (insert_before_ins, get_register_force_spilling,
8434         get_register_spilling, free_up_ireg, free_up_reg,
8435         create_copy_ins, create_spilled_store, alloc_int_reg,
8436         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8437         to new instruction lists.
8438         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8439         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8440         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8441         (insert_after_ins): Delete.
8442         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8443         mono_arch_local_regalloc, mono_arch_output_basic_block,
8444         mono_arch_call_opcode): Convert to new instruction lists.
8445         (insert_after_ins): Delete.
8446         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8447         peephole_pass, mono_arch_output_basic_block,
8448         mono_arch_emit_prolog): Convert to new instruction lists.
8449
8450 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8451
8452         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8453
8454         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8455         Fixes #353182.
8456
8457         * Makefile.am (version.h): Make this work with non-bash shells.
8458
8459 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8460
8461         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8462
8463 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8464
8465         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8466         the InitializeArray optimization.
8467
8468 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * mini.c driver.c: Don't include os/gc_wrapper.h.
8471
8472 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8473
8474         * mini.c (print_jit_stats): Print GC statistics if available.
8475
8476 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8477
8478         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8479
8480 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8481
8482         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8483
8484 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8485
8486         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8487         
8488         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8489
8490         * driver.c (mono_main): Ditto.
8491
8492 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8493
8494         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8495
8496         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8497         in the vtable can't be encoded.
8498         (compile_method): Ditto.
8499
8500 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8501
8502         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8503         defined.
8504
8505         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8506         lmf->rbp.
8507
8508         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8509         the top LMF entry belongs to the current method.
8510
8511         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8512
8513 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8514
8515         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8516         
8517         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8518
8519         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8520
8521         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8522
8523         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8524
8525         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8526         implementation.
8527
8528         * basic-float.cs: Add an ulong->double cast test.
8529
8530 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8531
8532         * mini.c (mono_method_to_ir): Fix a warning.
8533
8534 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8535
8536         * mini-ops.h: Add OP_SWITCH.
8537
8538         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8539         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8540
8541 2007-12-11  Geoff Norton  <gnorton@novell.com>
8542
8543         * mini-s390x.c: Minor change to the MAX() define to allow
8544         it to compile with other gcc versions.
8545
8546 2007-12-11  Geoff Norton  <gnorton@novell.com>
8547
8548         * cpu-s390x.md:
8549         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8550
8551 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8552
8553         exceptions-arm.c (mono_arch_get_restore_context): Restore
8554         the frame pointer.
8555
8556         exceptions-arm.c (throw_exception): Save the frame pointer.
8557         This is a partial fix for #323747. Only the client side is
8558         fixed.
8559
8560 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8561
8562         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8563         was using an unrelated variable to log the class which
8564         needed the cctor to be called. This was crashing on arm.
8565
8566 2007-12-09  Robert Jordan  <robertj@gmx.net>
8567
8568         * mini-x86.c (mono_arch_emit_epilog):
8569         Consider all kinds of 64-bit types. Fixes #323114.
8570
8571 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8572
8573         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8574
8575 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8578
8579 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8580
8581         * mini.c: run type ctor before allocating an object, not only
8582         when running it's constructor method (fixes at least part of bug #342507).
8583
8584 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8585         
8586         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8587         
8588         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8589         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8590         function.
8591
8592         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8593         mono_generic_class_init_trampoline () the same as it is done with the other
8594         trampolines.
8595
8596         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8597         aot-runtime.c aot-compiler.c: Implement AOT support.    
8598
8599 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8600
8601         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8602         build for archs which don't have the vtable trampoline defined
8603         yet.
8604
8605 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8608
8609         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8610
8611         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8612
8613         * tramp-<ARCH>.c: Use the new helper function.
8614
8615 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8616
8617         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8618         trampoline call, which takes a vtable argument.
8619
8620         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8621         OP_TRAMPCALL_VTABLEs like other calls.
8622
8623         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8624         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8625         call.  Implemented a support function which fetches the vtable
8626         from a register set.
8627
8628         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8629         Implemented a generic class init trampoline, using the
8630         OP_TRAMPCALL_VTABLE opcode.
8631
8632         * mini.c: Implemented static field access when sharing generic
8633         code.  This implies initing the class using the new
8634         OP_TRAMPCALL_VTABLE call.
8635
8636 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8637
8638         * mini.c: Don't compile methods with sharing enabled if their
8639         classes are disabled for sharing.
8640
8641 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8642
8643         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8644         opcodes. Fixes #346563.
8645
8646         * objects.cs: Add a new test.
8647
8648         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8649
8650         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8651         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8652
8653 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8654
8655         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8656
8657 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8658
8659         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8660         code stream.
8661
8662 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8663
8664         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8665
8666         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8667         optimization in the AOT case.
8668         
8669 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8670
8671         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8672         
8673         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8674
8675         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8676
8677         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8678
8679         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8680         is created by the inlined delegate ctor.
8681
8682         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8683
8684         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8685
8686 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8687
8688         * cpu-x86.md: Fix the length of ckfinite.
8689
8690 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8691
8692         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8693         
8694         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8695         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8696
8697         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8698
8699         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8700         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8701
8702 2007-11-28  Martin Baulig  <martin@ximian.com>
8703
8704         * mini-x86.c
8705         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8706         after creating the trampoline.
8707
8708 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8709
8710         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8711
8712         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8713         the same version.
8714
8715         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8716         instead of the calling method to help AOT.
8717
8718         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8719
8720 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8723         is defined.
8724
8725 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8726
8727         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8728         
8729         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8730         (encode_method_ref): No need to handle generic method definitions specially.
8731
8732         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8733
8734         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8735         decode_klass_info.
8736
8737         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8738         encode_klass_info.
8739         (compile_method): Enable generic sharing.
8740
8741 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8744         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8745
8746         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8747         generic code.
8748
8749         * mini-trampolines.c: Fix a warning.
8750
8751         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8752         NEW_PCONST.
8753         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8754         (generic_class_is_reference_type): Remove unused function.
8755
8756         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8757         in the generic vtable trampoline case.
8758
8759         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8760         
8761         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8762         return an AOT method based on a vtable slot.
8763
8764         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8765
8766         * mini.c (mini_get_vtable_trampoline): Export this.
8767
8768 2007-11-22  Martin Baulig  <martin@ximian.com>
8769
8770         * debug-debugger.h
8771         (MonoDebuggerInfo): Move `debugger_version' up.
8772
8773 2007-11-22  Martin Baulig  <martin@ximian.com>
8774
8775         * mini-amd64.c
8776         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8777
8778         * mini-trampolines.c
8779         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8780         after compiling the method.
8781
8782 2007-11-20  Martin Baulig  <martin@ximian.com>
8783
8784         * debug-mini.c
8785         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8786         (mono_debugger_remove_breakpoint): Likewise.
8787         (mono_debugger_check_breakpoints): Likewise.
8788
8789         * debug-debugger.c: Implement the new breakpoint interface here.
8790
8791 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8794         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8795
8796         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8797
8798 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8799
8800         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8801
8802         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8803         mini.c.
8804
8805         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8806         mini.c.
8807
8808         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8809         returning a vtype in a register.
8810
8811         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8812         here from the arch specific code.
8813
8814         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8815         mini.c.
8816
8817         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8818         (mono_arch_emit_prolog): Increment maximum prolog size.
8819
8820         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8821         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8822
8823         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8824         MonoGenericSharingContext.
8825
8826         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8827         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8828
8829 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8830
8831         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8832         which extract fields out of the runtime generic context.  Full
8833         sharing of the NEWARR opcode.
8834
8835 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8836
8837         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8838         --enable-minimal=ssa.
8839
8840 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8841
8842         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8843         mono_marshal_get_delegate_invoke () signature change.
8844
8845 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8846
8847         * mini.c: Removed the shared context in favor of the generic
8848         sharing context.  Allocate the MonoJitInfo structure with room for
8849         the generic sharing context if it's needed.
8850
8851         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8852         domain-internals.h now.
8853
8854         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8855
8856         * generic-sharing.c: Several changes for working without a shared
8857         context and instead operating on open types instead.
8858
8859 2007-11-12  David S. Miller  <davem@davemloft.net>
8860
8861        * inssel-sparc.brg: Fix double instruction emit.
8862
8863 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8864
8865         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8866         Get/Set/Address methods.
8867         
8868         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8869         mono_marshal_get_delegate_invoke signature change.
8870
8871 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8872
8873         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8874         This can happens with dynamic methods. Fixes the other bug in #322722.
8875
8876 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8877
8878         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8879         BX call sequence.
8880
8881         * mini-arm.c (arm_patch): Implement patching of BX call
8882         sequence. Fixes one of the bugs in #322722.
8883
8884 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8885
8886        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8887        under Linux.  We only need to flush every 32-byte cache line.    
8888
8889 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8890
8891         * mini.c:
8892         move_basic_block_to_end: Add branches when needed, eventually creating
8893         a new BB.
8894         optimize_branches: added a parameter that tells if it's ok to create
8895         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8896         and avoid calling move_basic_block_to_end when it's not ok.
8897         Fixes bug 318677.
8898
8899 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8900
8901         * mini.c: Abort inlining call to InitializeArray if something
8902         looks wrong.  Let the icall handle it, which now has proper safety
8903         checks.
8904
8905 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8906
8907         * mini.c (mono_spill_call): add support for soft-float.
8908
8909         * mini.c (mono_method_to_ir): add support for soft-float
8910         to inlined functions that return float.
8911
8912         * mini.c (mono_method_to_ir): add support for soft-float
8913         to cee_stsfld opcode on float fields.
8914
8915 2007-11-05  Geoff Norton  <gnorton@novell.com>
8916
8917         * mini-x86.h: Fix the structure access for X86 Leopard.
8918
8919
8920 2007-11-05  Martin Baulig  <martin@ximian.com>
8921
8922         * mini-trampolines.c
8923         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8924         after compiling the method to notify the debugger.
8925
8926 2007-11-05  Martin Baulig  <martin@ximian.com>
8927
8928         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8929
8930 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8931
8932         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8933         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8934
8935 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8936
8937         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8938         native-to-managed wrappers.
8939         
8940 2007-11-01  Geoff Norton  <gnorton@novell.com>
8941
8942         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8943         members.
8944
8945 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8946
8947         * mini.c, mini-x86.c: when getting back from unmanaged code
8948         to managed via a marshaled delegate we also need to set the
8949         right domain.
8950
8951 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8952
8953         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8954         for amd64.
8955
8956 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8957
8958         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8959         let the debugger or other external agents to tell the JIT when
8960         a sw breakpoint has been inserted in the code that the JIT needs
8961         to be able to inspect.
8962
8963 2007-10-31  Martin Baulig  <martin@ximian.com>
8964
8965         * debug-debugger.h
8966         (MonoDebuggerInfo): Remove `runtime_class_init'.
8967
8968 2007-10-30  Martin Baulig  <martin@ximian.com>
8969
8970         * debug-mini.h
8971         (mono_debugger_thread_created): Added `MonoThread *' argument.
8972         (mono_debugger_extended_notification): New public method.
8973         (mono_debugger_trampoline_compiled): New public method.
8974
8975         * debug-mini.c
8976         (MonoDebuggerThreadInfo): Added `thread' and
8977         `extended_notifications' fields.
8978
8979         * debug-debugger.c
8980         (debugger_executable_code_buffer): New static variable.
8981
8982         * debug-debugger.h
8983         (MonoDebuggerInfo): Added `executable_code_buffer',
8984         `executable_code_buffer_size', `breakpoint_info_area',
8985         `breakpoint_table' and `breakpoint_table_size'.
8986
8987 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8988
8989         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8990         that IP  either is an unused value or the vtable pointer. IMT 
8991         calls use vtable + offset now. Reduced by almost half the size
8992         of IMT entries.
8993
8994 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8995
8996         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8997         defines to access param registers. Replace long usage with
8998         gsize as sizeof(long) != sizeof(void*) on Win64.
8999
9000         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9001         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9002         instead of non-existant _GetAddressOfReturnAddress.
9003
9004         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9005         param registers. Save/restore %rdi and %rsi in MonoLMF.
9006
9007         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9008         param registers. Modify (throw_exception) signature to take 
9009         %rdi and %rsi on Win64. 
9010
9011         Code is contributed under MIT/X11 license.
9012
9013 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9014
9015         * helpers.c: unlink debugging output files.
9016
9017 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9018
9019         * mini.c: Move mono_create_ftnptr () to object.c.
9020
9021 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9022
9023         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
9024         optional. This function can now be used to disassemble code generated
9025         outside the JIT such as trampolines and IMT thunks.
9026
9027         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
9028
9029         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
9030         vtable pointer from a ldr instruction.
9031
9032         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
9033         new IMT call sequence.
9034
9035         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
9036         call sequence for interface invocations.
9037
9038         * mini-arm.c (mono_arch_emit_imt_argument): added, required
9039         for imt support. This function is empty since IMT on ARM requires no
9040         special handling on the IR side.
9041
9042         * mini-arm.c (mono_arch_find_imt_method): added, required for
9043         imt support.
9044
9045         * mini-arm.c (mono_arch_find_this_argument): added, required
9046         for imt support.
9047
9048         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
9049         a ldr instruction to load a value stored in the code stream.
9050
9051         * mini-arm.c (mono_arch_build_imt_thunk):added, required
9052         for imt support.
9053
9054
9055 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9056
9057         * mini.c (mini_init): Install the jump trampoline callback.
9058
9059 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9060
9061         * mini-trampolines.c: handle synchronized methods with the common
9062         vtable trampoline (bug #335601).
9063
9064 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
9065
9066         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
9067
9068         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
9069         64 bit platforms.
9070
9071         * mini-ia64.h mini-ia64.c: Add support for IMT.
9072
9073         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
9074         prolog. Fixes #331958.
9075
9076 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
9077
9078         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
9079
9080 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9081
9082         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
9083         trampoline.
9084
9085 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9086
9087         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
9088         trampoline.
9089
9090 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
9091
9092         * mini-x86.c, mini-x86.h: x86 support for the common vtable
9093         trampoline.
9094
9095 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
9096
9097         * mini-trampolines.c: changed the magic rampoline to understand
9098         the common vtable trampoline method: the method to invoke is
9099         determined by the vtable displacement of the call.
9100
9101 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9102
9103         * mini.c, mini.h: register the common vtable trampoline if the
9104         architecture supports it.
9105
9106 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9107
9108         * cpu-amd64.md: use the correct max length for tls_get.
9109
9110 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
9111
9112         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
9113         CEE_STELEM_ANY. Fixes #333696.
9114
9115 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9116
9117         * exceptions-x86.c: provide more graceful handling of the case where
9118         we followed a bogus function pointer from managed code (bug #332866).
9119
9120 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9121
9122         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
9123         replaces the generic_shared flag and will carry more information
9124         in the future.
9125
9126         * generic-sharing.c: Added mini_type_stack_size() which allows
9127         allows open types if given a generic sharing context.
9128         mini_get_basic_type_from_generic() takes a
9129         MonoGenericSharingContext* instead of a MonoCompile* now.
9130
9131         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
9132         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
9133         mini-sparc.c, mini-x86.c: Trivial changes required by the two
9134         changes above.  Just passing arguments through to the right
9135         places.
9136
9137 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9138
9139         * mini-arm.c: unify the call emission to emit_code_seq().
9140
9141 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
9142
9143         * tramp-arm.c: reduced the trampoline size.
9144
9145 2007-10-10  Mark Probst  <mark.probst@gmail.com>
9146
9147         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
9148         variable handling out of arch-specific code.
9149
9150 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
9151
9152         * mini-arm.c: implemented fast delegate dispatch.
9153
9154 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9155
9156         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
9157         that fp elimination is turned off if the space required by locals is too
9158         big. Fixes #331958.
9159
9160 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9161
9162         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
9163         ARM to the new style trampoline.
9164
9165 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9166
9167         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
9168
9169         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
9170
9171 2007-10-09  Martin Baulig  <martin@ximian.com>
9172
9173         * debug-debugger.h
9174         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
9175         `field_info_offset_offset'.     
9176
9177 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9178
9179         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
9180         removed more internal usage of the r11 register and made it available
9181         to the register allocator.
9182
9183 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9184
9185         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
9186         when sharing generics and treat type variables as references.
9187
9188 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9189
9190         * mini-ppc.c: started removing the internal uses of register r11
9191         to eventually allow the register allocator to manage it as an
9192         additional available register.
9193
9194 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9195
9196         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
9197
9198 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9199
9200         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
9201         specific trampolines as they are not performance critical as a jump
9202         target (maybe align as before only for AOT code?). This saves about
9203         200 KB of native code on x86 for monodevelop startup.
9204
9205 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9206
9207         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
9208         monodevelop startup.
9209
9210 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
9211
9212         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
9213
9214         * mini-sparc.h mini-sparc.c: Implement IMT support.
9215
9216         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
9217         its smaller and doesn't clobber sparc_g1.
9218
9219         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
9220
9221 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9222
9223         * mini-ppc.c: optimized the size of the IMT thunks a bit.
9224
9225 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9226
9227         * mini-ppc.c: implemented fast delegate invocation.
9228
9229 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
9230
9231         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
9232
9233 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9234
9235         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
9236         code to the new style trampoline in preparation for IMT support.
9237
9238 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9239
9240         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
9241         systems already. This also reduces the specific trampiline sizes and
9242         prepares for the use of r12 as the IMT identifier register.
9243
9244 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9245
9246         * mini-mips.h: endianess fix (simplified from a patch by
9247         Thomas Kunze <thommy@tabao.de>, bug #323737).
9248
9249 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9250
9251         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
9252         to access ucontext fields and enable netbsd support
9253         (partially from Magnus Henoch <mange@freemail.hu>).
9254
9255 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9256
9257         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
9258         use the preprocessor from the CPP env var if it is set.
9259
9260 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9261
9262         * mini-trampolines.c: fixed an assertion and moved it earlier in the
9263         code, before interface_offset gets used.
9264
9265 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
9266
9267         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
9268         mono_class_setup_vtable () before accessing klass->vtable.
9269
9270 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
9271
9272         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
9273         hackish.
9274
9275 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9276
9277         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
9278         IMT slots (this saves hundreds of KB of memory in programs like
9279         IronPython and Monodevelop).
9280
9281 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9282
9283         * mini.c: print the delegate counter.
9284
9285 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
9286
9287         * mini-x86.c: make it easier to enable the debugging code for IMT
9288         slots.
9289
9290 2007-09-28  Martin Baulig  <martin@ximian.com>
9291
9292         * debug-debugger.h
9293         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9294         `mono_method_klass_offset' and `mono_method_token_offset'.
9295
9296 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9297
9298         * mini.c: First generics sharing implementation.  Can only share
9299         in very simple cases.  If sharing doesn't work it falls back to
9300         dedicated compilation.
9301
9302         * mini.h: Flag in MonoCompile to specify whether generic
9303         compilation is shared.  Flags enum for marking which generic inst
9304         of a context is used.  Prototypes for helper functions.
9305
9306         * generic-sharing.c: Helper functions for generic method sharing.
9307
9308         * optflags-def.h: Optimization flag (gshared) for enabling generic
9309         method sharing added.
9310
9311         * Makefile.am: generic-sharing.c added.
9312
9313 2007-09-19 Daniel Nauck <dna@mono-project.de>
9314
9315         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9316
9317 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9318         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9319         fixes bug 325507.
9320
9321 2007-09-19  Martin Baulig  <martin@ximian.com>
9322
9323         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9324         mono_debug_cleanup() is now part of mono_cleanup().
9325
9326 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * driver.c (mono_main): Fix a warning.
9329
9330 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9331
9332         * aot-compiler.c: Optimize various parts when processing large assemblies.
9333         Fixes ##325568.
9334
9335         * mini.c (mono_patch_info_hash): Improve hash function.
9336
9337 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9338
9339         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9340         
9341         Code is contributed under MIT/X11 license.
9342
9343 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9344
9345         * mini.c (mini_init): Fix a leak.
9346
9347         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
9348
9349 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9350
9351         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
9352
9353 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9354
9355         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9356
9357 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9358
9359         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9360         variance tests.
9361
9362         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9363
9364         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9365
9366         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9367
9368         * aot-runtime.c (decode_patch_info): Ditto.
9369
9370 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9371
9372         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9373         static case. Cache delegates in architecture specific code, 
9374         based on number of parameters.
9375         
9376         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9377         in architecture specific code, based on number of parameters.
9378         
9379         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9380         caching happen in architecture specific code now.
9381         
9382         Code is contributed under MIT/X11 license.
9383
9384 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9385
9386         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9387         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9388         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9389
9390         Code is contributed under MIT/X11 license.
9391
9392 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9393         * mini.c: (mono_thread_abort) Fixed bug #82416.
9394
9395 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9396
9397         * mini.: hook the new managed GC allocation feature into the JIT.
9398
9399 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9400
9401         * mini.c: implementation for the new runtime tls opcode.
9402
9403 2007-09-11  Martin Baulig  <martin@ximian.com>
9404
9405         * debug-debugger.h
9406         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9407         `mono_method_inflated_offset'.
9408
9409 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9410
9411         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9412         async exceptions into a method.
9413
9414         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9415         purpose of testing whenever the unwinder works at every instruction.
9416
9417 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9418
9419         * mini.c: check accessibility of method used in ldftn (fixes
9420         bug #82635).
9421
9422 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9423
9424         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9425
9426         * inssel.brg: Fix a warning.
9427
9428 2007-09-03  Martin Baulig  <martin@ximian.com>
9429
9430         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9431         now takes the `main_method' as argument.
9432
9433 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9434
9435         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9436
9437 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9438
9439         * driver.c: include the cil-coff.h header on Windows.
9440         
9441         Code is contributed under MIT/X11 license.
9442
9443 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9444
9445         * mini.c, driver.c: don't include the cil-coff.h header.
9446
9447 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9448
9449         * mini.c: flag places that needs fixes fo soft-float support.
9450
9451 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9452
9453         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9454         endian systems (partially from Dean Jenkins, bug #81924).
9455
9456 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9457
9458         * mini.c (check_linkdemand): Remove embedded reference object in
9459         call to LinkDemandSecurityException.
9460         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9461         with an IntPtr instead of a reference object.
9462
9463 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9464
9465         * mini.c (handle_initobj): Handle alignment properly.
9466
9467         * inssel.brg (mini_emit_memset): Ditto. 
9468
9469         * inssel.brg (mini_emit_memcpy): Ditto. 
9470
9471         * inssel-sparc.brg: Ditto.              
9472
9473         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9474
9475 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9476
9477         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9478         exceptions raised in unmanaged code. Fixes part of #82594.
9479
9480 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9481
9482         * mini.c (mono_method_to_ir), declsec.c
9483         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9484
9485 2007-08-22  Martin Baulig  <martin@ximian.com>
9486
9487         * debug-mini.h
9488         (MonoDebuggerThreadInfo): New typedef.
9489         (mono_debugger_thread_table): New global variable.
9490         (mono_debugger_thread_created): New public function.
9491         (mono_debugger_thread_cleanup): New public function.
9492
9493         * debug-debugger.h
9494         (MonoDebuggerInfo):
9495         - removed `get_current_thread' and `lookup_assembly'.
9496         - removed `data_table'.
9497         - added `thread_table'.
9498
9499         * mini.c
9500         (mono_thread_start_cb): Call mono_debugger_thread_created().
9501         (mono_thread_attach_cb): Likewise.
9502         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9503         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9504         initial domain.
9505
9506         * driver.c (mono_main): Move mono_debug_init() up, before calling
9507         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9508
9509 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9510
9511         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9512         together when passing several arguments of type double (gives a small
9513         speedup and saves a few bytes of generated code).
9514
9515 2007-08-20  Jb Evain  <jbevain@novell.com>
9516
9517         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9518
9519 2007-08-20  Jb Evain  <jbevain@novell.com>
9520
9521         * mini.c (mono_method_to_ir): throw MethodAccessException
9522         and FieldAccessException instead of InvalidProgramException.
9523
9524 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9525
9526         * mini.c: CoreCLR security checks.
9527
9528         * mini.h: Removed MonoSecurityMode (moved to
9529         metadata/security-manager.h) and mono_security_mode global var
9530         (replaced by set/get functions in security-manager.h).
9531
9532         * driver.c: Added "core-clr-test" security mode for testing.  Used
9533         set-function for setting security mode.
9534
9535 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9536
9537         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9538         the new jit_info_table.
9539
9540         * driver.c: Test code for the new jit_info_table (enabled by the
9541         define MONO_JIT_INFO_TABLE_TEST).
9542
9543 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9546         detection of call <REG> instruction sequence. Fixes build on freebsd.
9547
9548 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9549
9550         * mini-exceptions.c: Fix a warning.
9551
9552 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9553
9554         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9555         stack overflow handling code on amd64 too.
9556
9557         * mini-exceptions.c (mono_setup_altstack): Make this use 
9558         mono_thread_get_stack_bounds ().
9559
9560         * mini-x86.h: Disable sigaltstack on solaris x86.
9561
9562 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9563
9564         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9565
9566 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9567
9568         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9569
9570 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9573
9574         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9575
9576 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9577
9578         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9579         due to alignment.
9580
9581 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9582
9583         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9584         to be emitted (bug #82281).
9585
9586 2007-08-01  Martin Baulig  <martin@ximian.com>
9587
9588         Merged the `debugger-dublin' branch.
9589
9590         * debug-debugger.h (MonoDebuggerInfo):
9591         Removed the `old_*' compatibility entries.
9592         Added `debugger_version' and `data_table'.
9593         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9594         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9595
9596         * debug-mini.c
9597         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9598         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9599         instead of a `gconstpointer'.
9600         (mono_debugger_insert_method_breakpoint): Return a
9601         `MonoDebugMethodAddressList *'.
9602
9603 2007-06-28  Martin Baulig  <martin@ximian.com>
9604
9605         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9606
9607 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9608
9609         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9610         __builtin_frame_address () since it is broken on older gcc versions.
9611
9612 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9613
9614         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9615         on the stack overflow handling and made the managed stack overflows
9616         catchable in most cases using soft guard pages.
9617         * exceptions-x86.c: added code to restore the protection in the soft
9618         guard pages at the end of exception handling.
9619
9620 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9621
9622         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9623
9624 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9625
9626         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9627         exception handling.
9628
9629 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9630
9631         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9632         signal handling support until it has been ported to the new mechanism.
9633         * mini.c: fixed stack overflow detection and use the new
9634         architecture code  to handle signals on the altstack.
9635
9636 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9637
9638         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9639         stack overflows on the alt stack.
9640
9641 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9642
9643         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9644         stack overflows on the alt stack.
9645
9646 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9647
9648         * exceptions-ppc.c: cleanup preparing for altstack support.
9649
9650 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9651
9652         * exceptions-arm.c: cleanup preparing for altstack support.
9653
9654 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9655
9656         * mini.c (print_jit_stats): Output hazard pointer stats.
9657
9658 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9659
9660         * driver.c, mini.c: Replaced security mode flags with a single
9661         enum variable.
9662
9663 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9664
9665         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9666
9667 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9668
9669         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9670         (which doesn't do anything yet) for activating Core CLR
9671         (Silverlight) security.
9672
9673 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9674
9675         * mini-codegen.c: work around a possible gcc bug on arm.
9676
9677 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9678
9679         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9680         message for platforms that don't support AOT compilation.
9681
9682 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9683
9684         * mini.h, mini.c, driver.c: temporary smcs hack.
9685
9686 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9687
9688         * mini-arm.h, mini-arm.c: arm EABI fixes.
9689
9690 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9691
9692         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9693         case.
9694
9695         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9696         trampolines taking a method argument.
9697
9698         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9699
9700         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9701         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9702
9703         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9704         JIT compilation throws an exception. Fixes #82050.
9705
9706 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9707
9708         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9709         with the MONO_EXCEPTION_ defines.
9710
9711 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9712
9713         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9714         #82117.
9715         
9716         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9717         the cause of an assertion.
9718
9719 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9720
9721         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9722         removed.
9723
9724 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9725
9726         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9727         assert. Should fix #82103.
9728
9729 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9730
9731         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9732         here too. Fixes #82095.
9733
9734         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9735         addresses.
9736
9737         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9738
9739         * mini-amd64.h: Enable IMT for amd64.
9740         
9741         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9742
9743 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9744
9745         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9746
9747 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9748
9749         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9750         as soon as check_linkdemand sets an exception_type.
9751
9752 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9753
9754         * mini-x86.c: fixed offsets for IMT call sequence.
9755         * mini-x86.h: enable IMT again.
9756
9757 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9758
9759         * trace.c (mono_trace_enter_method): Decode MonoType too.
9760
9761         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9762
9763         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9764
9765         * mini-amd64.c: Add preliminary IMT implementation.
9766         
9767 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9768
9769         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9770         understand the new IMT-base interface invocation (thanks to
9771         Daniel Nauck for the report and the remote debugging session).
9772
9773 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9774
9775         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9776
9777 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9778
9779         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9780
9781 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9782
9783         * mini-trampolines.c: implement AOT IMT support.
9784         * mini-x86.h: enable IMT support for wider testing.
9785
9786 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * inssel.brg (emit_imt_argument): Add aot support here.
9789
9790         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9791
9792 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9793
9794         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9795         of the IMT implementation, partially from massi, with my
9796         implementation of the bsearch sequence. Disabled by default until
9797         the AOT code is implemented.
9798
9799 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9800
9801         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9802
9803         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9804
9805 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9806
9807         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9808         arch-independent IMT JIT code from Massimiliano
9809         Mantione (massi@ximian.com) with small cleanups from me.
9810
9811 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9812
9813         * Makefile.am: fix svn invocation to get the svn revision to be
9814         independent of the local language (build fix).
9815
9816 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9817
9818         * mini.c (inline_method): Reset cfg->exception_type if the
9819         inlining is aborted.  Fixes: 82049.
9820
9821 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9822
9823         * mini.c: remove assert from exception handling code when exception_ptr
9824         is not set.
9825
9826 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9827
9828         * mini.c (mono_codegen): Add an assert.
9829
9830         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9831         enter and leave code.
9832         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9833
9834 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9835
9836         * mini-ppc.c: fixed memory corruption for localloc(0)
9837         (bug #81852).
9838
9839 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9840         
9841         * mini.c: Fix warnings.
9842
9843 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9844
9845         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9846         to emit better double->int conversions.
9847
9848 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9849
9850         * mini.c: the provided Min/Max optimizations are valid for unisgned
9851         ints.
9852
9853 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9854
9855         * 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
9856
9857 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9858
9859         * mini.c (mono_running_on_valgrind): Add support for reporting the
9860         method and  its boundaries to valgrind.
9861
9862 2007-06-28  Martin Baulig  <martin@ximian.com>
9863
9864         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9865
9866 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9867
9868         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9869
9870         * generic.2.cs: Add new test case.
9871
9872 2007-06-25  Martin Baulig  <martin@ximian.com>
9873
9874         Merged the `debugger-dublin' branch.
9875
9876         * debug-mini.c
9877         (mono_debugger_insert_method_breakpoint): New public method.
9878         (mono_debugger_remove_method_breakpoint): Likewise.
9879         (mono_debugger_check_breakpoints): New static method.
9880         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9881
9882         * debug-debugger.h (MonoDebuggerInfo):
9883         Renamed (to keep backward compatibility in the vtable):
9884         `insert_breakpoint' -> `old_insert_breakpoint'.
9885         `remove_breakpoint' -> `old_remove_breakpoint'.
9886         `create_string' -> `old_create_string'.
9887         `lookup_class' -> `old_lookup_class'.
9888         `lookup_type' -> removed; changed into a dummy field.
9889         `lookup_assembly' -> `old_lookup_assembly'.
9890         Added (same functionality, but different signature):
9891         `create_string', `lookup_class', `lookup_assembly'
9892         Added new:
9893         `get_method_addr_or_bpt', `remove_method_breakpoint',
9894         `runtime_class_init'.
9895
9896         * debug-debugger.c: Merged the `debugger-dublin' branch.
9897
9898 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9899
9900         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9901         well.
9902         (peephole_pass): Likewise.
9903
9904 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9905
9906         * driver.c: hopefully make setaffinity work also for ancient
9907         versions of linux.
9908
9909 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9910
9911         * driver.c : win32 build fix.
9912
9913 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9914
9915         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9916         processor if it is set.
9917
9918 2007-06-21  Martin Baulig  <martin@ximian.com>
9919
9920         * debug-mini.h: New file.
9921
9922         * debug-mini.c
9923         (mono_debugger_insert_breakpoint_full): Moved here from
9924         ../metadata/mono-debug-debugger.c.
9925         (mono_debugger_remove_breakpoint): Likewise.
9926         (mono_debugger_breakpoint_callback): Likewise.
9927
9928 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9929
9930         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9931         changes in MonoGenericClass.
9932
9933 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9934
9935         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9936
9937 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9938
9939         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9940         removal of MonoGenericMethod.
9941
9942 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9943
9944         * mini-exceptions.c: hooks for the exception events profiling API.
9945
9946 2007-06-14  Randolph Chung  <tausq@debian.org>
9947
9948         * Makefile.ma: Add hppa target.
9949         * mini-arch.h: Include mini-hppa.h
9950         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9951         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9952         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9953
9954 2007-06-14  Randolph Chung  <tausq@debian.org>
9955
9956         * inssel.brg: Add rules for "chained" compare-branch operations so that
9957         a single compare op can affect multiple branches.  Adjust cost for
9958         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9959         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9960         cost for some rules so that they can more easily be overridden by
9961         per-arch rules (with fixes from lupus).
9962         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9963
9964 2007-06-13  Randolph Chung  <tausq@debian.org>
9965
9966         * mini-ops.h: Reorder branch ops so that they match the order of the
9967         corresponding CEE_* ops.  The code expects them this way.
9968         Add new ops for HPPA target.
9969         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9970
9971 2007-06-13  Randolph Chung  <tausq@debian.org>
9972
9973         * mini-exceptions.c: Handle cases where the stack grows towards
9974         larger addresses.
9975         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9976
9977 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9978
9979         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9980         counter.
9981         * driver.c: explain where a non-matching corlib is found.
9982
9983 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9984
9985         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9986
9987 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9988
9989         * mini-exceptions.c: Generate a method profile leave event during
9990         an exception to ensure that the profiler gets notified.
9991
9992 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9993
9994         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9995         branch.
9996
9997         * cpu-amd64.md: Add long_and/or/xor opcodes.
9998
9999 2007-06-06  Wade Berrier  <wberrier@novell.com>
10000
10001         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10002         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10003         length of instruction shr_imm (expected 8, got 10)
10004
10005 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10006
10007         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10008
10009 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10010
10011         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10012         MonoInternalHashTable again (fixed bug in the internal hash table
10013         code).
10014
10015 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10016
10017         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10018         Have to figure out what makes it crash the SWF regression.
10019
10020 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
10023
10024 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10025
10026         * mini.c: optimize out the type check when storing null in a
10027         reference array.
10028
10029 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10030
10031         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10032         MonoInternalHashTable.
10033
10034 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10035
10036         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
10037         signed integer methods.
10038
10039 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10040
10041         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
10042         permanently since the current approach doesn't work.
10043
10044 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10045
10046         * inssel.brg (stmt): Only call delegate->invoke_impl if 
10047         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
10048
10049 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
10052         the sreg2==rdx case.
10053         
10054         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
10055         account if it contains a rex prefix.
10056         (peephole_pass): Handle OP_FMOVE as well.
10057
10058 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10059
10060         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
10061         as it causes regressions.
10062
10063 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10064
10065         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
10066         static case as well.
10067
10068         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
10069
10070         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10071         (mono_arch_get_this_arg_from_call): Ditto.
10072
10073         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
10074
10075         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
10076         invoke_impl field.
10077
10078         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10079         (mono_arch_get_this_arg_from_call): Ditto.
10080
10081         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
10082         
10083         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
10084         try to create optimized invoke code and use that for further invocations. 
10085         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
10086
10087         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
10088
10089 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
10090
10091         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
10092         sealed classes or methods.
10093         *devirtualization.cs: tests for the new optimization
10094
10095 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
10096
10097         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
10098         by the update_volatile () function.
10099
10100 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
10103         require it.
10104
10105         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
10106
10107 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10108
10109         * mini.c: Add configure checks for header files.
10110         * mini-x86.c: Add configure checks for header files.
10111         * trace.c: Add configure checks for header files.
10112         * aot-runtime.c: Add configure checks for header files.
10113         * aot-compiler.c: Add configure checks for header files.
10114         * driver.c: Add configure checks for header files.
10115         * mini-codegen.c: Add configure checks for header files.
10116         
10117         Code is contributed under MIT/X11 license.
10118
10119 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10120
10121         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
10122         icompare_imm -128 + op_iclt. Fixes #81703.
10123
10124 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
10125
10126         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
10127
10128 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10129
10130         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
10131         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
10132         so that all isinst checks now use "interface_bitmap".
10133
10134 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
10135
10136         * cpu-amd64.md (jmp): Fix a warning.
10137
10138         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
10139
10140         * basic.cs: Add new regression test.
10141
10142         * basic.cs: Remove test which is now in basic-long.cs.
10143
10144         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
10145
10146         * basic-long.cs: Add new test.
10147         
10148 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
10149
10150         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
10151
10152 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10153
10154         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
10155
10156         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
10157         places.
10158         
10159         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
10160         throwing code a bit.
10161
10162         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
10163         the exception throwing code a bit.
10164
10165         * mini-x86.c (get_call_info): Allocate result from a mempool.
10166
10167 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
10168
10169         * aot-compiler.c (find_typespec_for_class): Fix the assert.
10170
10171         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
10172
10173         * mini.h (MonoCompile): Add 'token_info_hash' field.
10174
10175         * mini.c: Save token->method associations during compilation so the AOT 
10176         compiler can use it.
10177         
10178         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
10179         which reference generic classes and methods.
10180
10181 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
10184
10185         * aot-compiler.c (compile_method): Fix a typo in a comment.
10186
10187         * aot-runtime.c (decode_cached_class_info): Skip generic types.
10188
10189         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
10190         everything generic.
10191
10192         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
10193
10194 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
10195
10196         * mini.h (MonoCompile): Add 'args' field.
10197
10198         * mini.c (mono_compile_create_vars): Store variables representing the arguments
10199         into cfg->args.
10200
10201         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
10202
10203 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * mini.c (mono_compile_get_interface_var): Remove this unused function.
10206
10207         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
10208
10209         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
10210         opcodes for some opcodes.
10211
10212         * mini.h *.brg *.c: Use the new opcodes.
10213
10214 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10215
10216         * mini.h: Bumped aot revision.
10217
10218         * inssel.brg: modified code generation of type checks for interfaces
10219         to use the new "MonoClass.interface_bitmap" instead of the old
10220         "MonoClass.interface_offsets".
10221
10222 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10223
10224         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
10225
10226 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
10227
10228         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
10229         64 bit platforms.
10230
10231 2007-04-27  Neale Ferguson <neale@sinenomine.net>
10232
10233         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
10234
10235 2007-04-27  Wade Berrier  <wberrier@novell.com>
10236
10237         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
10238         mini.h) to fix build.
10239
10240 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10241
10242         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
10243         
10244         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
10245         causes the corlib unit tests to fail.
10246
10247 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
10250
10251         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
10252
10253         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
10254         opcodes to the comparison relations.
10255
10256         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
10257         opcodes to their types.
10258         
10259         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
10260
10261         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
10262         it in cfg->arch.cinfo.
10263
10264         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
10265
10266         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
10267         cfg->cil_offset_to_bb.
10268
10269 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
10272         created becase of initlocals.
10273
10274 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
10275
10276         * mini-alpha.c cpu-alpha.md: More alpha port work from 
10277         Sergey Tikhonov <tsv@solvo.ru>.
10278
10279 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
10280
10281         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
10282
10283 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
10284
10285         * cpu-s390.md (break): Correct the length of break instruction.
10286
10287 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10288
10289         * mini.c: fix a couple of soft-float issues and comments.
10290
10291 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10292
10293         * trace.c (is_filenamechar): - is also a filename char.
10294
10295 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10296
10297         * mini-s390.c: Correct checking for enum type in return value processing.
10298
10299 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10300
10301         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10302         (version.h): Makefile is in the build directory.
10303
10304 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10305
10306         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10307
10308 2007-04-11  Martin Baulig  <martin@ximian.com>
10309
10310         * mini.c (can_access_member): Fix handling of generic classes;
10311         fixes #81259.
10312
10313 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10314
10315         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10316
10317 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10318
10319         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10320
10321 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10322
10323         * mini-codegen.c: make sure the right spill amount is
10324         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10325
10326 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10327
10328         * mini-ppc.c: fixes for the fp_branch_nan test.
10329
10330 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10331
10332         * basic.cs: Comment out new test which still fails on ia64.
10333
10334 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10335
10336         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10337
10338 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10339
10340         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
10341
10342 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
10343
10344         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
10345         on 64 bit machines. Fixes part of #80738.
10346
10347         * basic.cs: Add regression test.
10348
10349 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * inssel.brg basic.cs: Revert previous change to fix build.
10352
10353         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10354         platforms.
10355         
10356         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10357
10358         * basic.cs: Add new regression test.
10359
10360 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10363         many arguments.
10364
10365 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10366
10367         * cpu-s390x.md: Correct length of break instruction.
10368
10369 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10370
10371         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10372         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10373
10374 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10375
10376         * *.c: Begin WIN64 port.
10377         * mini.c:  Use correct register in profiler.
10378         * mini-amd64.c: No inline assembly on Win64.
10379         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10380         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10381         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10382         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10383         mono_arch_ip_from_context for Win64.
10384         
10385         Contributed under MIT/X11 license.
10386
10387 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10388
10389         * exceptions-amd64.c (seh_handler): Ditto.
10390
10391         * exceptions-x86.c (seh_handler): Fix a memory leak.
10392
10393 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10394
10395         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10396         mini-s390x.c: fixed peephole optimizations to deal
10397         correctly with 1 and 2 byte reload avoidance.
10398
10399 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10400
10401         * cpu-s390.md, cpu-s390x.md: update localloc length.
10402
10403 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10404
10405         * cpu-g4.md: added missing descriptions.
10406
10407 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10408
10409         *  Makefile.am: Add support so the tail tests are not executed on
10410         PowerPC as that is a known limitation of the PowerPC port.
10411
10412 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10413
10414         * runmdesc.bat:  Move to msvc directory.
10415         
10416 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10417
10418         * runmdesc.bat:  Run executable that was produced by the current
10419         target and sent via an argument.
10420         
10421 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10424         #81102.
10425
10426         * generics.2.cs: Add regression test.
10427
10428 2007-03-09  Wade berrier  <wberrier@novell.com>
10429
10430         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10431
10432 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10435         AOT code depends on this.
10436
10437 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10438
10439         * mini.c: more precise tracking of types in the eval stack
10440         (part of fix for bug #81044).
10441
10442 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10443
10444         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10445
10446         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10447
10448 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10449
10450         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10451
10452         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10453
10454 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10455
10456         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10457         a pointer on 64 bit systems. Fixes #80190.
10458
10459         * iltests.il: Add new regression test.
10460
10461 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10462
10463         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10464
10465 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10466
10467         * trace.c: Remove an erroneous alignemnt check when tracing.
10468           Fixes --trace on OSX86.
10469
10470 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10471
10472         * mini-$(arch).h: initialize SP in context for all the archs.
10473
10474 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10475
10476         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10477         regressions in the thread tests.
10478
10479 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10480
10481         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10482         - fixed implementation of LOCALLOC opcode
10483         - implemented non-un compare for floats
10484         - code cleanup
10485         - implementation of FDIV and CKFINITE opcodes
10486         - fixes for latest mono updates
10487         - additional arch opcodes
10488
10489 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10490
10491         * Makefile.am: simplify and merge rules for cross-compilation.
10492
10493 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10494
10495         * local-propagation.c: Actually *apply* the fix for bug 80591...
10496
10497 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10498
10499         * mini-exceptions.c: backuot part of the last change
10500         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10501
10502 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10503         * inssel.brg: Fix bug 59286.
10504
10505
10506 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10507
10508         * mini-exceptions.c: patch from Zoltan to correctly check for
10509         stack boundaries (using the stack register, not the frame register),
10510         fixes bugs #80724, #79717.
10511
10512 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10515         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10516
10517         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10518         presence of frame pointer elimination.
10519
10520 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10521         
10522         * mini-x86.h: NetBSD UCONTEX_REG defines.
10523
10524 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10525
10526         * inssel-amd64.brg: Fix amd64 build.
10527
10528 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10529
10530         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10531         on amd64.
10532
10533 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10536         ends.
10537
10538         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10539
10540 2007-01-30 Mark Mason <mason@broadcom.com>
10541
10542            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10543            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10544            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10545            beginning support for CEE_JMP [not quite working yet]
10546            * tramp-mips.c: LMF handling now works
10547         
10548 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10551
10552         * mini.h (NULLIFY_INS): New macro.
10553
10554 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10555
10556         * mini.c: statistical profiler fix for windows, patch
10557         from Tor Lillqvist (tml@novell.com).
10558
10559 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10560         * local-propagation.c: Fix bug 80591.
10561
10562 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10563
10564         * Makefile.am: put back the --export-dynamic option as with
10565         the previous gmodule flags (thanks to Robert Jordan).
10566
10567 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10568
10569         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10570
10571         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10572         simplify and speed up the local register allocator. Also rename some fields
10573         like iassign->vassign.
10574         
10575         * regalloc.c: Remove some functions which are no longer used since their
10576         inlined version is in mini-codegen.c.
10577         
10578         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10579
10580         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10581
10582 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10583
10584         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10585         narrowing. Fixes #80622.
10586
10587         * iltests.il: Add new regresssion test. 
10588
10589 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10590
10591         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10592         debug-debugger.c, debug-debugger.h: warning fixes.
10593         * driver.c: updated copyright year and made it fit in one line.
10594
10595 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10596
10597         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10598
10599 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10602
10603         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10604
10605         * iltests.il: Add new test for bug #80507.
10606
10607 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10608
10609         * mini-arm.h: use soft-float also on vfp for now.
10610
10611 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10612
10613         * mini.c: fix some more soft-float issues.
10614
10615 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10616
10617         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10618
10619 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10620         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10621         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10622         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10623
10624 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10625
10626         * mini-arm.c: typo fix.
10627
10628 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10629
10630         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10631
10632 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10635         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10636
10637         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10638
10639         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10640
10641         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10642         
10643         * inssel.brg: Fix a warning.
10644
10645         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10646
10647         * abcremoval.c ssa.c ssapre.c: Update after this change.
10648         
10649         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10650
10651         * dominators.c (df_set): Use mono_bitset_union_fast.    
10652
10653 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10654
10655         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10656         mini-codegen.c: reduce relocations and memory usage for the cpu
10657         description.
10658
10659 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10660
10661         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10662
10663         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10664         to reduce their size.
10665
10666 2007-01-19 Mark Mason <mason@broadcom.com>
10667
10668         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10669         * mini-mips.c: more configuration macros, support long conditional branches, additional
10670         asserts, fix epilog instrumentation.
10671         * mini-mips.h: use standard stack walk
10672         * cpu-mips.md: increase size of div, rem and conditional branches
10673         
10674 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10675
10676         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10677         to cpu spec data.
10678
10679 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10682         (compile_method): Ditto.
10683
10684         * aot-runtime.c (decode_klass_info): Ditto.
10685
10686         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10687         needed by the code generated by inssel.brg. Also fix a warning.
10688
10689 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10690
10691         * mini.c: deal with enums that become genericinsts by
10692         being nested in a generic class (bug #79956).
10693
10694 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10695
10696         * mini.c: match the generic definition to check for
10697         private access with generic types (bug #78431).
10698
10699 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10700
10701         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10702         to make life easier for people cross-compiling that insist on not
10703         using scratchbox.
10704
10705 2007-01-17 Mark Mason <mason@broadcom.com>
10706
10707         * inssel-long.brg: patch to deal with mips missing flags
10708         * inssel-long32-mips.brg: implement overflow checks
10709         * insset-mips.brg: implement overflow checks
10710         * mini-mips.h: implement conditional exception handling
10711         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10712           Remove unused code, minor cleanups.
10713         * exceptions-mips.c: minor cleanups
10714         * mini-ops.h: add mips conditional exception ops
10715         * cpu-mips.md: add mips conditional exception ops
10716
10717         
10718 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10719
10720         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10721         to deal with mips missing of flags.
10722
10723 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10724
10725         * exceptions-ppc.c: execute fault handlers.
10726
10727 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10728
10729         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10730
10731 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10732
10733         * mini.c: handle also floating point values in initialize_array.
10734
10735 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10736
10737         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10738         array initialization and make it conditional on the intrins option.
10739
10740 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10741
10742         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10743         relocations and put the patch info names close to the enum definition.
10744
10745 2007-01-15 Mark Mason <mason@broadcom.com>
10746
10747         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10748
10749 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10750
10751         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10752
10753 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10754
10755         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10756
10757 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10758
10759         * Makefile.am: distribute the mips sources.
10760
10761 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10762
10763         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10764         directly.
10765
10766 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10767
10768         * cpu-x86.md: back out for now as this triggers other regressions.
10769
10770 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10771
10772         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10773         to eax:edx, so ecx can't get allocated to them (bug #80489).
10774
10775 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10776
10777         * mini.c, mini-exceptions.c: enabled running fault handlers
10778         (bug #80469).
10779
10780 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10781
10782         * driver.c: If nothing fail, do not use the string "failed",
10783         because it makes it very annoying to view test result logs on the
10784         web. 
10785
10786 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10787
10788         * debug-debugger.c (mono_debugger_main): Rename "main" to
10789         "main_method" to prevent a warning.
10790
10791         Remove a warning for unused field.
10792
10793 2006-12-28  Martin Baulig  <martin@ximian.com>
10794
10795         * debug-debugger.c
10796         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10797
10798 2006-12-22  Martin Baulig  <martin@ximian.com>
10799
10800         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10801         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10802         seperate `.mdb_debug_info' section, so we can access it from the
10803         debugger even if the binary is stripped.
10804
10805         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10806         from the `.mdb_debug_info' here to prevent the linker from
10807         removing that section.
10808
10809         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10810         mdb-debug-info64.s.
10811
10812 2006-12-19  Robert Jordan  <robertj@gmx.net>
10813
10814         * mini-x86: enable the code to return small structures in
10815         registers for FreeBSD as well. Fixes bug #80278.
10816         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10817
10818 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10819
10820         * mini-x86.c: align the stack when calling the profiler
10821         function instrumenting the prolog (on OSX).
10822
10823 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10824
10825         * mini.c: emit a break opcode where Debugger.Break () is called.
10826
10827 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10828
10829         * mini.c (mono_method_to_ir): Provide useful information on this
10830         assert, to prevent others from debugging like I did.
10831
10832 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10833
10834         * mini.c: enable code which was incorrectly commented
10835         (bug #80235).
10836
10837 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10838
10839         * mini-x86.c: enable on OSX, too, the code to return small
10840         structures in registers.
10841
10842 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10843
10844         * mini-x86.c: remove the use of the dynamic code manager here, too.
10845
10846 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10847
10848         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10849         mono_debugger_create_notification_function() to use
10850         mono_global_codeman_reserve () instead of a dynamic code manager.
10851
10852 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10853
10854         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10855         ves_array_element_address() jit icall and use a generated
10856         managed method instead (which is about 4 times faster for a rank 3
10857         array access).
10858
10859 2006-11-29  Mark Mason  <mason@broadcom.com>
10860
10861         * basic-calls.cs: additional tests for passing
10862         structures as function arguments.
10863
10864 2006-11-29  Mark Mason  <mason@broadcom.com>
10865
10866         * mini-mips.h: disable custom exception handling
10867         * mini-mips.c: throw/rethrow should use jalr to call
10868         exception stubs.  Fixed bug with passing structures
10869         by value. More support for tracing floating point
10870         functions.
10871
10872 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10873
10874         * mini.c: fixed typo in the soft-float ldind.r4 handling
10875         (bug #80086).
10876
10877 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10878
10879         * mini.c, mini.h, driver.c: added --runtime command line
10880         option to select a different runtime than the autodetected one.
10881         * jit.h: added API for embedders to initialize with a specific
10882         runtime version.
10883
10884 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10885
10886         * mini.c: handle also boxing of r4 values (bug #80024).
10887
10888 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10889
10890         * mini-ppc.c: force indirect calls until we reserve
10891         enough address space for all the generated code.
10892
10893 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10894
10895         * exceptions-arm.c: workaround bugs in the libc definition
10896         of struct ucontext.
10897
10898 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10899
10900         * inssel.brg: fixes from me and Mark Mason.
10901
10902 2006-11-23  Dick Porter  <dick@ximian.com>
10903
10904         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10905         semaphore display now we've fixed the initial value
10906
10907 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10908
10909         * inssel.brg: partially revert the last change to fix the build.
10910
10911 2006-11-21  Mark Mason  <mason@broadcom.com>
10912
10913         * inssel.brg: Add and use compare-and-branch macros to support
10914         architectures that do not have condition code registers (ie. MIPS).
10915         * *-mips.{c,brg,md}: Fix copyright statements
10916
10917 2006-11-20  Mark Mason  <mason@broadcom.com>
10918
10919         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10920         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10921         * mini.h: Added declaration for mono_print_ins()
10922         * mini-codegen.c: added ins_spec initializer for MIPS
10923         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10924         vreg to be virtual and hreg to be non-virtual.
10925         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10926         is not yet working/implemented correctly.
10927         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10928         non-static, fixup calls to print_ins() from other parts in the file.
10929
10930 2006-11-20  Mark Mason  <mason@broadcom.com>
10931
10932         * basic-calls.cs: added tests for passing structures as arguments
10933         to calls.
10934
10935 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10936
10937         * inssel-long32.brg: optimize signed division by power of two.
10938
10939 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10940
10941         * mini-arm.c: added support for interworking with thumb code
10942         (mono must be still be built using the ARM instruction encoding).
10943
10944 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10945
10946         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10947         verifier has different rules for it.   Fixes a few verifier issues
10948         in the test suite.
10949
10950         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10951         at the end, so people know what happened.
10952
10953 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10954
10955         * brach-opts.c: in optimize_exception_target() make sure we
10956         are in a catch clause (fixes bug #79871).
10957
10958 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10959
10960         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10961         more soft-float support fixes.
10962
10963 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10964
10965         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10966         that are passed half on the stack and half in registers.
10967
10968 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10969
10970         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10971         more mips integration work from Mark E Mason 
10972         <mark.e.mason@broadcom.com>.
10973
10974 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10975
10976         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10977         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10978         tramp-mips.c: added sources for the mips port, not
10979         integrated in the build yet. Contributed by
10980         Mark E Mason <mark.e.mason@broadcom.com>.
10981
10982 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10983
10984         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10985
10986 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10987
10988         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10989         put the soft-float rules in its own file since it seems to
10990         break s390 compilation.
10991
10992 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10993
10994         * mini-arm.c: fixed wrnings.
10995
10996 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10997
10998         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10999         inssel-arm.brg: ARM support for soft-float.
11000
11001 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11002
11003         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11004         loads and stores of 32 bit fp values.
11005
11006 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11007
11008         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11009
11010         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11011         works. Fixes #79852 and #79463.
11012
11013 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11014
11015         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11016         more soft-float support WIP and fixes.
11017
11018 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11019
11020         * mini-arm.c: some VFP updates.
11021
11022 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11023
11024         * mini-exceptions.c: 0 is a valid local var offset in some
11025         architectures, don't assert (bug #78508).
11026
11027 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
11028
11029         * exceptions-arm.c: fixed off by one error in stack walk code.
11030
11031 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11032
11033         * mini.h, mini.c: more precise tracking of type load exceptions.
11034
11035 2006-11-03  Robert Jordan  <robertj@gmx.net>
11036
11037         * Makefile.am: [WIN32] Add monow.exe target.
11038         * driver.c: [WIN32] Don't detach the console when debugging.
11039         Fixes bug #79797.
11040         
11041 2006-10-30  Miguel de Icaza  <miguel@novell.com>
11042
11043         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
11044
11045 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * aot-compiler.c (emit_method_info): Add a case missed earlier.
11048
11049         * driver.c (mini_regression): Fix --regression with AOT.
11050
11051         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
11052
11053 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
11054
11055         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
11056
11057         * mini-sparc.h: Don't use sigaction on sparc/linux.
11058
11059         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
11060
11061         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
11062
11063         * mini-exceptions.c: Add proper include files for getpid ().
11064
11065 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
11066
11067         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
11068         address instead of a MonoJitInfo* to avoid decoding the exception info for the
11069         method.
11070
11071         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
11072         name cache to reduce its size.
11073
11074         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11075
11076 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11077
11078         * mini-x86.c: Save/restore the current LMF structure more efficiently using
11079         the mono_lmf TLS variable.
11080
11081         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
11082         trampoline lmf frames.  
11083
11084         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
11085
11086 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
11087
11088         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
11089         the mono_lmf TLS variable.
11090
11091         * mini-exceptions.c: Access the LMF structure through accessors.
11092
11093         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
11094         variable instead of in jit_tls->lmf.
11095
11096         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
11097         
11098         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
11099         trampoline lmf frames.
11100
11101         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
11102
11103 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11104
11105        * mini.c trace.c mini-x86.c: Revert these too.
11106         
11107        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
11108        signature change.
11109
11110 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
11111
11112         * genmdesc.c: removed now dead code.
11113
11114 2006-10-09  Robert Jordan <robertj@gmx.net>
11115
11116         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
11117
11118 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11119
11120         * mini.h: do not leave gaps in the opcode values.
11121
11122 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
11123
11124         * jit-icalls.h: flag functions as internal here, too.
11125
11126 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
11127
11128         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
11129         functions with the internal attribute.
11130
11131 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
11132
11133         * aot-compiler.c: fclose the file descriptor in the profile read loop.
11134
11135 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11136
11137         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
11138         for soft-float.
11139
11140 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11141
11142         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
11143         tail calls as on other platforms.
11144
11145         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
11146
11147         * iltests.il: Add a few tailcall tests.
11148
11149 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11150
11151         * driver.c: fix loop for old compilers (bug #79521).
11152
11153 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11154
11155         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
11156
11157         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
11158
11159         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
11160         metadata without any code.
11161
11162         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
11163         more precise debugging information using gdb.
11164
11165 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * inssel-ia64.brg: Make the helper methods static.
11168
11169 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11170
11171         * inssel-x86.brg: make the helper methods static.
11172
11173 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
11174
11175         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
11176
11177 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11178
11179         * mini.c: updates for monoburg changes.
11180         * inssel.brg: make a few helper functions static as they should.
11181
11182 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11183
11184         * Makefile.am: Move mini-codegen.c to common_sources.
11185
11186 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11187
11188         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
11189         instructions.
11190         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
11191         mini-ppc.h: port to use the common local register allocator.
11192
11193 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * mini.h: Remove the comment too then.
11196
11197 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
11198
11199         * mini.h: put back backend.data which is to be used shortly and
11200         doesn't increase the size of MonoInst. If any 64 bit arch aligned
11201         pointers on 4 byte boundaries it'd have much bigger issues running
11202         and you can ifdef it out anyway.
11203
11204 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
11207         MonoInst size by 4 bytes on 64 bit machines.
11208
11209 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11210
11211         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
11212         replacement with more meaningful field names. Arch maintainers, please
11213         check the assigned names are good enough for your arch.
11214
11215 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11216
11217         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
11218         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
11219
11220 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11221
11222         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
11223         relocations and memory requirements, put the optimization flags
11224         definitions in their own file.
11225
11226 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
11229
11230         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
11231
11232 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
11233
11234         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
11235
11236 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
11237
11238         * inssel.brg: use the correct function to get the size of an item
11239         in an array, given an element class.
11240         * aot-compiler.c: do not access class->class_size directly.
11241
11242 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11243
11244         * mini.h, debug-mini.c: added a debugging function to print
11245         info about local variables and arguments in a jitted method.
11246
11247 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11250
11251         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
11252
11253 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11254
11255         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
11256         inner and outer loops when passing vtypes.
11257
11258 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
11259
11260         * mini-ppc.c: take into account the cpu errata for cache flushing
11261         which caused some random errors (bug #79381).
11262
11263 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
11266         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
11267
11268 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
11269
11270         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
11271         loaded.
11272
11273         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
11274         freebsd ports tree.
11275
11276         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
11277         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
11278
11279         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
11280         displacement.
11281
11282 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
11283
11284         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
11285
11286 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11289         macro does not have to be changed during debugging.
11290
11291         * 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>.
11292
11293         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11294
11295         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11296         
11297         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11298         MONO_ARCH_NO_EMULATE_MUL is defined.
11299
11300         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11301
11302         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11303
11304         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11305
11306         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11307         
11308 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11309
11310         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11311         stuff to mini-exceptions.c where it is used.
11312
11313         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11314         setup code, the real one is in mini-exceptions.c.
11315
11316         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11317         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11318         some changes from the freebsd ports tree.
11319
11320         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11321         constants.
11322         
11323         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11324
11325 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11326
11327         * mini.c: on Linux, check for /proc to be mounted
11328         (bug# 79351, novell bug#201204).
11329
11330 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11331
11332         * mini.c: handle cases where pthread_attr_getstack() behaves
11333         incorrectly (bug #78096).
11334
11335 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
11336
11337         * mini-arm.c: support larger stack frames (bug #79272).
11338
11339 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11340
11341         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
11342
11343         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
11344         tokens.
11345
11346         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
11347         mono_class_from_name () to find a class from its name.
11348
11349         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
11350
11351 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
11352
11353         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11354
11355 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
11356
11357         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11358
11359 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11360
11361         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11362         callinfo->trampoline.
11363
11364         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11365         fixes #79271.
11366         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11367         future.
11368
11369 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11372
11373 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11374
11375         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11376         stats.method_trampolines, it is already done by the generic trampoline code.
11377
11378         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11379         
11380 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11381
11382         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11383
11384         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11385
11386         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11387
11388         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11389         
11390         * mini.c (print_jit_stats): Print new stats.
11391
11392         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11393
11394 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11395
11396         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11397         Address on two dimensional arrays. Fixes #78729.
11398
11399         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11400
11401         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11402         a method.
11403
11404         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11405
11406         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11407         #79130.
11408         
11409         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11410         a race condition.
11411         (mini_get_ldelema_ins): Ditto.
11412
11413 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11414
11415         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11416         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11417         Fixes #79213.
11418
11419 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11420
11421         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11422         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11423
11424         * exceptions-s390x.c: Cosmetic change.
11425
11426         * tramp-s390.c: Fix warning.
11427
11428         * cpu-s390.md: Correct length of mul_imm.
11429
11430 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11431
11432         * aot-compiler.c: added binary writer with ELF backend
11433         implementation (only on Linux/x86 for now).
11434
11435 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11436
11437         * Makefile.am: Don't run net 2.0 AOT tests.
11438
11439         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11440         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11441
11442         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11443
11444 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11445
11446         * aot-compiler.c: simplified and refactored the asm-writing code
11447         to allow different backends.
11448
11449 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11450
11451         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11452
11453         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11454         little. Share patches of type TYPE_FROM_HANDLE as well.
11455
11456         * mini.c (mono_patch_info_equal): New helper function.
11457         (mono_patch_info_hash): Ditto.
11458
11459         * aot-compiler.c (emit_method_code): Fix s390 build.
11460
11461         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11462         is not handled because it is stored as a flag and not as a type ctor. Fixes
11463         #79016.
11464
11465 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11466
11467         * aot-compiler.c: Fix computation of GOT slot statistics.
11468         
11469         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11470         Also remove support for not PIC AOT.
11471
11472         * mini.h: Bump AOT file format version.
11473
11474         * objects.cs: Add a test for #78990.
11475
11476         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11477         (peter.dettman@iinet.net.au). Fixes #79087.
11478
11479         * basic-long.cs: Add a test for the above.
11480
11481 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11484         
11485         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11486         code somewhat.
11487
11488 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11489
11490         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11491         exceptions.
11492
11493 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11494
11495         * mini.c: Don't verify COM proxy invoke calls
11496         
11497
11498 2006-08-10  Dick Porter  <dick@ximian.com>
11499
11500         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11501         which process is holding semaphores locked.
11502
11503 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11504
11505         * mini-ia64.c mini-amd64.c: Fix #79027.
11506
11507         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11508
11509         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11510
11511         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11512         implicit arguments in a vararg call. Fixes #79027.
11513
11514 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11515
11516         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11517         (mono_get_array_new_va_signature): Ditto.
11518
11519 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11520
11521         * aot-runtime.c: Call init_plt lazily.
11522
11523         * inssel-long.brg: Fix unsigned long->int conversion.
11524
11525         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11526
11527         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11528         that most data is now in the .rss/.data section.
11529
11530 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11531
11532         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11533
11534         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11535
11536         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11537
11538         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11539
11540         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11541         virtual call. Fixes #79010.
11542
11543         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11544         and use the result as the this argument in the real call.
11545
11546         * generics.2.cs: Add a new test for #79010.
11547         
11548 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * mini-x86.c: Fix a warning.
11551
11552         * aot-compiler.c: Add a bunch of statistics.
11553
11554         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11555
11556 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11557
11558         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11559
11560 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11561
11562         * 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>.
11563
11564 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11565
11566         * mini.c (mono_method_to_ir): Obtain the original method in the
11567         CIL stream and use this to perform validation.
11568
11569         Fixed: #78816
11570
11571 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11572
11573         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11574         (mono_arch_call_opcode): Ditto.
11575
11576         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11577         #78826.
11578
11579         * mini.c (mono_patch_info_dup_mp): New helper function.
11580         
11581         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11582         compilation. Fixes #78827.
11583
11584 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
11585
11586         * declsec.c: Use original security informations for
11587           MONO_WRAPPER_MANAGED_TO_MANAGED.
11588
11589 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11590
11591         * mini.c: Allow Com Interop methods/classes and
11592         don't verify COM wrapper calls
11593         
11594
11595 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11596
11597         * inssel-long32.brg: Fix long->i4 checked conversion.
11598
11599         * exceptions.cs: Add a test for the above.
11600
11601 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11604
11605         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11606         leaks.
11607
11608         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11609         #78775.
11610
11611 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11612
11613         * mini.c: Fix solaris/x86 exception handling.
11614
11615         * Makefile.am: Get rid of $(ICU_LIBS).
11616
11617 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11618
11619         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11620         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11621         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11622
11623         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11624
11625         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11626         this function causes a SIGSEGV.
11627
11628 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11629
11630         * mini.c: Remove unused solaris/x86 includes.
11631
11632 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11635
11636 2006-06-20  Jb Evain  <jbevain@gmail.com>
11637
11638         * cpu-g4.md: fix max length of start_handler instruction.
11639
11640 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11641         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11642
11643 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11644         * ssa.c: Fixed bug 78653 for SSA based deadce.
11645         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11646         MonoInst.flags, used in SSA based deadce.
11647         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11648         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11649
11650 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11651
11652         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11653         it can end up using non executable memory on ppc64 systems
11654         running ppc32 userspace (fix from Johannes Berg).
11655
11656 2006-06-14  Dick Porter  <dick@ximian.com>
11657
11658         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11659         4.1.1
11660
11661 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11662         * mini.c: Made so that inline is locally disabled if it would
11663         trigger a .cctor, because too many apps depend on this behavior
11664         (which seems to be also the one of the MS CLR).
11665
11666 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11667
11668         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11669         No idea why this worked before.
11670
11671         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11672         which branch to outer exception clauses since they could skip the
11673         inner finally clauses. Fixes #78633.
11674
11675         * exceptions.cs: Add a test for the above.
11676
11677         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11678         Fixes #78629.
11679
11680         * iltests.il: Add a test for the above.
11681
11682 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11683
11684         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11685         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11686
11687         * iltests.il: Add a test for the above.
11688
11689 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11690
11691         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11692         
11693         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11694         methods as instrinsics.
11695
11696 2006-06-09  Wade Berrier <wberrier@novell.com>
11697
11698         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11699         (simple-cee-ops.h ssapre-mini-ops.h)
11700
11701 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11702
11703         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11704         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11705         instruction).
11706         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11707         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11708
11709 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11710
11711         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11712
11713 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11714
11715         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11716         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11717         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11718         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11719         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11720         of opcodes, so that bug 78549 should not happen again.
11721         * ssapre.c: Updated to use the renamed files.
11722
11723 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11724
11725         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11726         in OP_ATOMIC_EXCHANGE_I4.
11727
11728 2006-06-07  Wade Berrier <wberrier@novell.com>
11729
11730         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11731         in mono_debugger_create_notification_function)
11732
11733 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11734
11735         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11736         
11737         * mini.c (type_from_stack_type): Disable some changes which do not
11738         seem to work.
11739
11740         * driver.c: Reenable opts.
11741
11742         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11743         of the evaluation stack.
11744         
11745         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11746         evaluation stack trace at entry to the bblock.
11747
11748         * mini.c (merge_stacks): New function to perform verification of stack merges.
11749         Turned off by default.
11750
11751         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11752         STACK_MP.
11753         
11754 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11755
11756         * local-propagation.c: Fixed bug 78549.
11757
11758 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11759
11760         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11761
11762 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11763
11764         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11765         tramp-arm.c, tramp-ia64.c
11766         (mono_debugger_create_notification_function): Update signature to
11767         new signature and use new protocol for creating the notification
11768         function.  
11769
11770         Should fix the build.
11771
11772 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11773
11774         * exceptions-ppc.c (mono_jit_walk_stack)
11775         (ves_icall_get_frame_info): Fix the build
11776
11777 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11778
11779         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11780
11781 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11782
11783         * il2tests.2.il: New file for generics CIL tests.  Add test for
11784         #78019.
11785         * Makefile.am: Update.
11786
11787         Fix #78019
11788         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11789         to nullable types.
11790
11791 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11792
11793         * aliasing.c: Fixed bug 78311.
11794
11795 2006-05-29  Martin Baulig  <martin@ximian.com>
11796
11797         * mini-exceptions.c (mono_find_jit_info): When computing the
11798         native offset, check whether we're actually inside the method's
11799         code; call mono_debug_print_stack_frame() to format the frame.
11800         (ves_icall_System_Exception_get_trace): Call
11801         mono_debug_print_stack_frame() to format the stack frame.
11802         (ves_icall_get_trace): Update to the new debugging API.
11803         (mono_jit_walk_stack_from_ctx): Likewise.
11804         (ves_icall_get_frame_info): Likewise.
11805
11806         * mini.c (get_method_from_ip): Use the new debugging API.
11807         (mono_print_method_from_ip): Likewise.
11808
11809         * exceptions-ppc.c
11810         (mono_jit_walk_stack): Use the new debugging API.
11811         (ves_icall_get_frame_info): Likewise.   
11812
11813 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11814
11815         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11816
11817 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11818
11819         * mini.c: Added "limitator" to inline for debugging.
11820
11821 2006-05-24  Martin Baulig  <martin@ximian.com>
11822
11823         * debug-debugger.c (mono_debugger_init): Create a private,
11824         malloc()-based code manager for the notification function and
11825         intentionally leak it on exit.  This fixes the crash-on-exit race
11826         condition.
11827
11828         * tramp-amd64.c
11829         (mono_debugger_create_notification_function): Added
11830         `MonoCodeManager *' argument.
11831
11832         * tramp-x86.c
11833         (mono_debugger_create_notification_function): Added
11834         `MonoCodeManager *' argument.
11835
11836 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11837
11838         * aliasing.c: Fixed 64 bit issue.
11839         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11840         default since all known bugs are fixed (one more time!).
11841
11842 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11843
11844         * mini.c: write barrier support.
11845
11846 2006-05-23  Martin Baulig  <martin@ximian.com>
11847
11848         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11849         check at the top of the file.
11850
11851 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11852
11853         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11854         reverting changes without reason and without changelog entries.
11855
11856 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11857
11858         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11859         to a few opcodes. Fixes #78439.
11860
11861         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11862         consistency with other archs.
11863
11864         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11865
11866 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11867
11868         * debug-debugger.c: fix the build.
11869
11870 2006-05-17  Martin Baulig  <martin@ximian.com>
11871
11872         * debug-debugger.c
11873         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11874         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11875         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11876         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11877
11878 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11879
11880         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11881
11882 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11883
11884         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11885         MONO_TYPE_GENERICINST.
11886         
11887         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11888         MONO_TYPE_GENERICINST.
11889
11890 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11891
11892         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11893         #78325.
11894
11895 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11896
11897         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11898         mempool.
11899         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11900
11901 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11902
11903         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11904         mono_trace_cleanup ().
11905
11906         * iltests.il: Fix problem with the newly added test.
11907
11908         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11909         due to register constraints, free up the previous hreg. Fixes #78314.
11910
11911         * iltests.il: Add new test for #78314.  
11912
11913         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11914         Interlocked.Add. Fixes #78312.
11915
11916         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11917         
11918 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11919
11920         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11921
11922 2006-05-05  Martin Baulig  <martin@ximian.com>
11923
11924         * debug-mini.c (mono_debug_open_block): New method.
11925
11926         * mini-amd64.c
11927         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11928         the beginning of each basic block.
11929
11930         * mini-x86.c
11931         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11932         the beginning of each basic block.
11933
11934 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11935
11936         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11937         default until I understand why they break the build on amd64.
11938
11939 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11940
11941         * mini.c (mini_cleanup): Call mono_cleanup ().
11942
11943         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11944         errors.
11945
11946 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11947
11948         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11949         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11950         default since all known bugs are fixed, and I cannot reproduce bug
11951         77944... I'm asking Matt Hargett to test again after this commit.
11952
11953 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11954
11955         * mini-codegen.c: Fixed typo that thrashed inline.
11956
11957 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11958
11959         * dominators.c (compute_dominators): Avoid using a worklist since
11960         it is not correct in some cases. Instead, iterate over all bblocks as
11961         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11962
11963 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11964
11965         * mini.c (mono_jit_compile_method_inner): Use
11966         mono_prepare_exception_from_error that resets the value
11967         internally.
11968
11969 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11970
11971         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11972         
11973 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11974
11975         * aliasing.c: Fixed bug 78210.
11976
11977 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11978
11979         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11980         default until all their problems (or the ones they trigger) are fixed.
11981
11982 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11983
11984         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11985         
11986         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11987         as loaded only after resolving patches since that could invoke the same method.
11988
11989         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11990
11991         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11992         functions.
11993
11994         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11995         AOT loader.
11996
11997         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11998         stack.
11999
12000         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12001         made from AOT code through the PLT table.
12002
12003         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12004         holding the plt offset when a call is made to the aot plt trampoline.
12005         
12006 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12009         amd64 AOT support.
12010
12011         * Makefile.am (common_sources): Fix build breakage.
12012
12013         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12014         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12015         intra-assembly calls if possible.
12016         
12017         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12018
12019         * mini-trampolines.c: Handle PLT entries.
12020
12021         * mini.c: Avoid creating a GOT var for calls.
12022
12023         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
12024         from mscorlib code.
12025
12026         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
12027         from mscorlib code.
12028
12029         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
12030         AOT code.       
12031
12032         * mini.h: Bump AOT file format version.
12033         
12034         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
12035         covers more cases.
12036
12037 2006-04-25  Martin Baulig  <martin@ximian.com>
12038
12039         * driver.c: Disable copyprop, consprop and inline when running
12040         inside the debugger.
12041
12042 2006-04-25  Martin Baulig  <martin@ximian.com>
12043
12044         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
12045         with `get_current_thread' and added `detach'.
12046         (MonoDebuggerMetadataInfo): Added `thread_size',
12047         `thread_tid_offset', `thread_stack_ptr_offset' and
12048         `thread_end_stack_offset'.
12049
12050 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12051
12052         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
12053         aot-runtime.c.
12054
12055         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
12056         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
12057
12058         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
12059
12060         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
12061
12062         * aot.c: Add support for ADJUSTED_IID.  
12063
12064 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * aot.c (emit_method_order): Don't align method_order_end.
12067
12068         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
12069         the interface ID changes.
12070
12071 2006-04-21  Dick Porter  <dick@ximian.com>
12072
12073         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
12074         cleaning up a thread.  Fixes the new part of bug 77470.
12075
12076 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
12077
12078         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
12079         to managed wrapper.
12080                      
12081 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
12082
12083         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
12084         
12085         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
12086         SIGSEGV. Fixes #78072.
12087
12088         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
12089         unregister our SIGABRT handler.
12090
12091 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
12092
12093         * mini.c: Disabled inline where it can alter the call stack in a
12094         way visible from managed code.
12095         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
12096         default.
12097
12098 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
12099
12100         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
12101         on other platforms. Fixes #78089.
12102
12103 2006-04-13  Martin Baulig  <martin@ximian.com>
12104
12105         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
12106         determine whether we're inside the debugger.
12107
12108         * debug-debugger.h
12109         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
12110
12111 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
12112
12113         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
12114         handler clauses. Fixes #78024.
12115
12116         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
12117         in the CALL_MEMBASE opcodes. Fixes #78088.
12118         (mono_arch_get_vcall_slot_addr): Ditto.
12119
12120 2006-04-10  Martin Baulig  <martin@ximian.com>
12121
12122         * debug-debugger.c: The thread handling code has now been moved
12123         into ../metadata/threads.c.
12124
12125 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * driver.c (mono_main): Fix --with-gc=none build.
12128
12129         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
12130         (mono_spillvar_offset_float): Ditto.
12131         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
12132         hreg, not when its !global, since on ia64, there is a third category: stacked
12133         registers.      
12134
12135 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
12136
12137         * mini.c: set MonoInst->klass for load field address and a few other
12138         places.
12139
12140 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12141
12142         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
12143
12144 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
12145
12146         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
12147         the branch opt changes.
12148
12149 2006-04-06  Dick Porter  <dick@ximian.com>
12150
12151         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
12152         
12153         * wapihandles.c (mini_wapi_seminfo): 
12154         * driver.c (mono_main): Add semaphore info option
12155
12156 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
12159         branch optimization changes. Fixes #78009.
12160
12161 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12162
12163         * mini.c: ignore accessibility of methods in managed->native wrappers.
12164
12165 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12166
12167         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
12168         
12169         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
12170
12171 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini.c: Modify the branch optimizations to preserve the invariant that
12174         the entries inside the in_bb and out_bb arrays are unique.
12175         (mono_unlink_bblock): Avoid creation of new arrays.
12176
12177 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
12178
12179         * mini.c (mono_unlink_bblock): Fix regression caused by previous
12180         change (#77992).
12181
12182 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
12183
12184         * mini.c (optimize_branches): Remove the "optimizations" in
12185         the cbranch1/cbranch2 -> branch cases which were causing several
12186         problems in the past. Fixes #77986.
12187
12188 2006-03-31  Chris Toshok  <toshok@ximian.com>
12189
12190         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
12191         default optimizations :(
12192
12193 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
12196         branch.
12197
12198 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
12199
12200         * local-propagation.c: Added comments to structs and removed
12201         "Mono" prefixes from local tree mover types.
12202
12203 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * Makefile.am (arch_sources): Define this for each architecture so 
12206         libmono_la_SOURCES is defined in one place.
12207
12208 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12209
12210         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
12211         from handles/.
12212
12213 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
12214
12215         * driver.c: print the GC name supplied by configure.
12216
12217 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
12218
12219         * local-propagation.c: Added tree mover, and moved here all the
12220         local propagation code from mini.c
12221         * mini.c: Added support for treeprop, and moved all the local
12222         propagation code to local-propagation.c
12223         * mini.h: Added support for treeprop
12224         * driver.c: Added support for treeprop, enabled consprop, copyprop,
12225         treeprop, inline and deadce by default
12226         * Makefile.am: Added local-propagation.c
12227
12228 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
12229
12230         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
12231
12232 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
12233
12234         * debug-debugger.c: make it compile without the Boehm GC.
12235
12236 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12237
12238         * mini.c: fixed issue with mismatch when an icall is registered
12239         with multiple names but same address.
12240
12241 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12242
12243         * declsec.c, mini-exceptions.c: use write barrier to set reference
12244         fields of managed objects.
12245
12246 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12247
12248         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
12249         (can_access_internals): Fix a warning.
12250
12251         * mini.c (print_method_from_ip): Rename this to 
12252         mono_print_method_from_ip so it gets exported.
12253
12254         * trace.c: Deal with strings inside StringBuilder's containing garbage
12255         and fix memory leaks. Fixes #77848.
12256
12257 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12258
12259         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
12260         fixes #77787.
12261
12262 2006-03-16 Neale Ferguson <neale@sinenomine.net>
12263         
12264         * mini-s390.c: Remove OP_X86_TEST_NULL.
12265
12266 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12267
12268         * mini.c: use the correct GetHashCode() for the moving collector.
12269
12270 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
12271
12272         * liveness.c: Regalloc spill cost tuning.
12273
12274 2006-03-15 Neale Ferguson <neale@sinenomine.net>
12275         
12276         * mini-s390x.h: Correct S390_LONG macro.
12277
12278         * mini-s390x.c: Cleanup unused code.
12279
12280 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12281
12282         * jit-icalls.h: New file.
12283
12284         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
12285         icalls and include that instead of including jit-icalls.c.
12286
12287         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
12288         OP_X86 opcodes.
12289
12290 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12291
12292         * mini.c: when checking for member accessibility, also check for
12293         friend assemblies and for explicit interface implementations.
12294
12295 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12296
12297         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12298
12299         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12300
12301         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12302         common cases are done first.    
12303
12304         * mini-ops.h: Only define platform specific opcodes on the given platform.
12305
12306         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12307         branch.
12308         
12309 2006-03-14  Martin Baulig  <martin@ximian.com>
12310
12311         Revert Paolo's change from r57348:
12312
12313         * mini.h: don't use gboolean for bitfields.
12314         * mini.c: verifier changes for fields and methods accessibility.
12315
12316 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12317
12318         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12319
12320         * mini-s390x.c: Fix conv_r_un.
12321
12322         * cpu-s390, cpu-s390x.md: Fix lengths.
12323
12324 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12325
12326         * mini.c: nested types have access to all the nesting
12327         levels, not just the enclosing types.
12328
12329 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12330
12331         * mini.c: added a few more verification checks.
12332
12333 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
12334
12335         * liveness.c: Merge optimizations from the linear-il branch.
12336
12337 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12338
12339         * mini-ia64.c (emit_call): Add a comment.
12340
12341         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
12342
12343         * tramp-ia64.c: Fix some warnings.
12344
12345 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12346
12347         * mini.h: don't use gboolean for bitfields.
12348         * mini.c: verifier changes for fields and methods accessibility.
12349
12350 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12351
12352         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
12353         lazy icall wrapper changes.
12354
12355         * dominators.c: Replace all the dominator algorithms with faster
12356         ones from the linear-il branch.
12357
12358         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12359         the mempool.
12360
12361         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12362         common cases are done first.
12363
12364         * mini-amd64.c: Fix some warnings.
12365
12366         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12367         from the mempool.
12368
12369         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12370         added code.
12371
12372         * mini.h: Add a missing prototype.
12373
12374 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12375
12376         * mini.c: Compile icall wrappers lazily.
12377
12378         * mini-codegen.c: Use printf instead of g_print since its much faster.
12379
12380         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12381         function.
12382
12383         * mini.c (optimize_branches): Cache the negative result from 
12384         remove_block_if_useless ().
12385
12386         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12387         Also fix some bblock linking issues.
12388
12389         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12390         assembly files.
12391
12392         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12393
12394         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12395         accessed fields first, for better cache behavior.
12396         
12397 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12398
12399         * mini.c: speedup IList<T> array accesses.
12400
12401 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12402
12403         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12404         inline_costs counter. Fixes #77190.
12405
12406 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12407
12408         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12409         trace messages. Fixes #77706.
12410
12411 2006-03-04  Martin Baulig  <martin@ximian.com>
12412
12413         * tramp-amd64.c, tramp-x86.c
12414         (mono_debugger_create_notification_function): Use
12415         mono_global_codeman_reserve() to allocate a buffer at runtime and
12416         return it.
12417
12418         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12419
12420         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12421         notification function at runtime and then call `initialize' in the
12422         `MONO_DEBUGGER__debugger_info' vtable.
12423
12424 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12425
12426         * iltests.il: Fix a visibility problem.
12427
12428 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12429
12430         * driver.c, mini.c: add hooks for the counters API.
12431
12432 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12433
12434         * driver.c: show disabled options.
12435
12436 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12437
12438         * linear-scan.c: always use cost-driven selection.
12439
12440 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12441
12442         * jit-icalls.c (helper_compile_generic_method): Revert change from
12443         2006-02-24.
12444
12445 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12446
12447         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12448
12449 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12450
12451         * inssel.brg: style fixes, mostly to force the updated monoburg
12452         to run for people using svn.
12453
12454 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12455
12456         * mini.c: match monoburg changes.
12457
12458 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12459
12460         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12461         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12462         declaration in the header file.
12463
12464 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12465
12466         * helpers.c: reduce relocations and mem usage.
12467
12468 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12469
12470         * mini.h, mini-codegen.c: disable logging features if
12471         requested by configure.
12472
12473 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12474
12475         * mini.c: tiny verifier changes.
12476
12477 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12478
12479         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12480         cpu-pentium.md: stack alignment changes for osx/x86,
12481         partially from Geoff Norton <gnorton@customerdna.com>.
12482
12483 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12484
12485         * jit-icalls.c (helper_compile_generic_method): Update to changes
12486         in metadata/class.c.
12487
12488 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12489         
12490         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12491         
12492         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12493         interface calls with large offsets.
12494
12495 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12496
12497         * jit-icalls.c (helper_compile_generic_method): Document the
12498         special-case we depend on so that we can inflate the method twice
12499         with the same context with no bad side-effects.
12500
12501 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12502
12503         * mini-x86.c, mini-amd64.c: fix for case when xen support
12504         is disabled.
12505
12506 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12507
12508         * mini-x86.c, mini-amd64.c: generate code to access tls items
12509         in a faster way for Xen systems.
12510
12511 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12512
12513         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12514         updates and compilation fixes for the OSX/x86 port, mostly from
12515         Geoff Norton <gnorton@customerdna.com>.
12516
12517 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12518
12519         * inssel.brg: faster interface call implementation
12520         to sync with the interface_offsets MonoVTable changes.
12521
12522 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12523
12524         * mini.c: more verification checks.
12525
12526 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12527
12528         * mini.c: added a few more verification checks.
12529
12530 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12531
12532         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12533         facility on the processor and use it if available.
12534
12535 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12536
12537         * driver.c, aot.c, mini.c: throw exception if the IL code is
12538         invalid or unverifiable.
12539
12540 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12541
12542         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12543         m.StructField.
12544
12545 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12546
12547         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12548
12549 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12550
12551         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12552         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12553         handling of instantiated generic valuetypes.
12554
12555 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12556
12557         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12558         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12559         instead.
12560
12561         * generics.2.cs: Revert the nullable reftypes tests.
12562
12563 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12564
12565         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12566         using __builtin_frame_address (1) as it doesn't work in the presence
12567         of optimizations. Hopefully fixes #77273.
12568
12569         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12570         -> generics.cs change as it doesn't work with some automake versions.
12571
12572 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12573
12574         * mini.c: handle systems that sue a different way to
12575         retrieve the stack address of the current thread.
12576
12577 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12580         it specially in the makefile.
12581
12582         * generics.2.cs: Add tests for nullable reference types.
12583
12584 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12585
12586         * mini.c: always handle the case when mono_jit_init()
12587         is called in a thread different from the main thread,
12588         confusing libgc (bug #77309).
12589
12590 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12591
12592         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12593
12594 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12595
12596         * mini.c: change optimize_branches () to use a single loop
12597         and introduce a new optimization to simplify some range checks.
12598
12599 2006-02-03  Martin Baulig  <martin@ximian.com>
12600
12601         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12602         and merged with debugger_thread_manager_add_thread().
12603         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12604         inform the debugger about the main thread.
12605
12606 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * basic.cs: Add test for div.un/rem.un constant folding.
12609
12610 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12611
12612         * cpu-s390x.md: correct int_xor_imm length
12613
12614 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12615
12616         * generics.2.cs: New test for #77442.
12617
12618         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12619         #77442.
12620
12621 2006-02-02  Martin Baulig  <martin@ximian.com>
12622
12623         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12624         <mono/metadata/mono-debug-debugger.h>   
12625
12626         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12627
12628 2006-02-02  Martin Baulig  <martin@ximian.com>
12629
12630         * debug-debugger.h: New header file for debug-debugger.c.
12631
12632         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12633         function is a separate thread anymore; add support for attaching.
12634
12635 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12636
12637         * tramp-x86.c: Fix a warning.
12638
12639 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12640
12641         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12642         on very large methods.
12643
12644         * aot.c (load_patch_info): Fix a warning.
12645
12646 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12647
12648         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12649         mini-ops.h: alu membase optimizations.
12650
12651 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12652
12653         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12654         to speedup StringBuilder.
12655
12656 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12657
12658         * dominators.c (mono_compute_natural_loops): Fix detection of
12659         loop body start blocks.
12660
12661         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12662
12663 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12664
12665         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12666         #75145.
12667
12668 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12669
12670         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12671
12672 2006-01-25  Martin Baulig  <martin@ximian.com>
12673
12674         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12675         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12676         started to cleanup this file a little bit.
12677
12678 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12679
12680         * mini.c: optimize a codepath frequently happening in generics code.
12681
12682 2006-01-23  Martin Baulig  <martin@ximian.com>
12683
12684         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12685
12686         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12687         functions directly.
12688
12689         * driver.c: debug-debugger.c is only available if
12690         `MONO_DEBUGGER_SUPPORTED' is defined.   
12691
12692 2006-01-23  Martin Baulig  <martin@ximian.com>
12693
12694         * debug-debugger.c: Only enable this on platforms where the Mono
12695         Debugger is working (x86 and x86_64).
12696
12697 2006-01-21  Martin Baulig  <martin@ximian.com>
12698
12699         The Mono Debugger is now using the normal `mono' instead of the
12700         `mono-debugger-mini-wrapper' when executing managed code.
12701
12702         * debug-debugger.c: New file; previously known as
12703         debugger/wrapper/wrapper.c.
12704
12705         * debug-mini.c (mono_init_debugger): Removed.
12706
12707         * driver.c (mono_main): Added new `--inside-mdb' command line
12708         argument which is used when running inside the debugger.
12709
12710 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12711
12712         * liveness.c (mono_analyze_liveness): Remove some unused data
12713         structures.
12714
12715 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12718
12719 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12720
12721         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12722         depends on implementation details of monobitset.
12723
12724         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12725         Fixes #77271.
12726
12727 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12728
12729         * liveness.c: Update after monobitset changes.
12730
12731 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12734
12735 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12736
12737         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12738
12739         * mini-s390x.c: Remove warning messages.
12740
12741 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12742
12743         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12744
12745 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * generics.2.cs: Add ldelem/stelem_any test.
12748
12749 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12750
12751         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12752
12753 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12754
12755         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12756         
12757 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12758
12759         * generics.2.cs: Reenable vtype tests.
12760
12761         * inssel-x86.brg: Remove an icorrect valuetype rule.
12762
12763 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12764
12765         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12766         initial support for OP_ABS.
12767
12768 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12769
12770         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12771
12772 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12773
12774         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12775         conversion and implement LADD/LSUB.
12776
12777         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12778         architectures.
12779
12780 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12781
12782         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12783
12784         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12785         architectures.
12786
12787 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12788
12789         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12790         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12791         (stack walk problem).
12792
12793 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * aot.c (mono_aot_load_method): Fix a warning.
12796
12797 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12798
12799         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12800
12801 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * iltests.il: Add test for #77148.
12804
12805         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12806         #77148.
12807
12808 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12809
12810         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12811
12812 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12813
12814         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12815         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12816
12817         * basic-long.cs: Add lconv-to-r4/r8 tests.
12818
12819 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12822
12823         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12824         here as on other archs.
12825
12826 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12827
12828         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12829
12830 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12831
12832         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12833         
12834         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12835
12836         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12837         instrument_prolog; Add memory_barrier instruction.
12838
12839 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12840
12841         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12842
12843 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12844
12845         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12846
12847         * aliasing.c inssel.brg: Fix warnings.
12848
12849         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12850         could skip initialization of some parts of memory.
12851
12852         * mini.c mini-ia64.c: Fix warnings.
12853
12854         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12855
12856 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12859         a crash seen on sparc.
12860
12861         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12862         
12863         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12864
12865 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12866
12867         * mini-ops.h: Add s390_backchain instruction
12868
12869         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12870
12871         * cpu-s390.md: Add s390_backchain instruction
12872
12873         * mini-s390.c: Significant ABI changes
12874
12875         * mini-s390.h: Cater for zero length structures
12876
12877 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12878
12879         * mini-s390.c: ABI fixes
12880
12881         * inssel-s390.brg: Remove debug statements
12882
12883         * cpu-s390.md: Fix length of ATOMIC_xx operations
12884
12885 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12886
12887         * basic-float.cs: Add float<->long conversion tests.
12888
12889 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12890
12891         * mini-s390.c: Fix LOCALLOC processing.
12892
12893         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12894
12895 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12896
12897         * iltests.il: Add tests for some opcodes not covered by the other
12898         tests.
12899
12900 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12901
12902         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12903         register loading for Tail processing; Correct trace output.
12904
12905         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12906
12907         * cpu-s390.md: Correct size of jmp instruction. 
12908
12909 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12910
12911         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12912
12913 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12914
12915         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12916           Bring s390 up to current level.
12917
12918 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12919
12920         * generics.2.cs: Disable the newly added tests as they do not work yet.
12921         
12922         * generics.2.cs: Add valuetype tests.
12923
12924 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * basic-long.cs: Add i4->u8 test.
12927
12928         * objects.cs: Add tests for JIT intrinsic.
12929
12930         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12931         optimizations lost by a mistake.
12932
12933 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * basic-long.cs: Remove a test moved to objects.cs.
12936
12937         * arrays.cs: Add more array tests.
12938
12939 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12940
12941         * arrays.cs: Add new tests for multi-dimensional arrays.
12942
12943 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12944
12945         * Makefile.am (test_sources2): Add generics.2.cs.
12946         (EXTRA_DIST): Add test_sources2.
12947
12948 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12949
12950         Support for boxing and unboxing nullable types as well as the
12951         isinst operation on nullables, per the CLI ammendment.
12952
12953         * inssel.brg (CEE_ISINST): Special case for nullable
12954
12955         * mini.c (handle_unbox_nullable): new method
12956         (handle_box): Special case for nullable types
12957         (mono_method_to_ir): Call handle_unbox_nullable in correct
12958         places.
12959
12960         * generics.2.cs: New test suite
12961
12962         * Makefile.am: Support for regression tests with generics.
12963
12964 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12965
12966         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12967         allocated to registers. Fixes #76800.
12968
12969 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12970
12971         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12972
12973 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12976         of platforms.
12977
12978 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12979
12980         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12981         objects.cs.
12982
12983         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12984         
12985         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12986 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12987
12988         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12989         single precision before storing to a single precision location.
12990
12991 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12992
12993         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12994
12995 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12998         correct files.
12999
13000         * basic.cs: Remove test_0_byte_compares test which was moved to
13001         objects.cs a long time ago.
13002
13003 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13004
13005         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13006
13007 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13008
13009         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13010         handlers are called.
13011
13012         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13013         throwing code.
13014
13015          * mini-ia64.c: Add support for the throw->branch exception 
13016         optimization.   
13017
13018         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13019
13020 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13021
13022         * mini.c: Enabled "fastpath" deadce :-)
13023         
13024 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13025
13026         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
13027         alias analysis pass to support it.
13028         * mini.h: Likewise.
13029         * ssa.c: Likewise.
13030         * liveness.c: Likewise (liveness computation can use aliasing
13031         information to be more accurate).
13032         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
13033         moreover made so that "--compile-all" uses the given optimization
13034         flags and not the default ones.
13035         * aliasing.c: Alias analysis (new file).
13036         * aliasing.h: Likewise.
13037         * Makefile.am: added "aliasing.c" and "aliasing.h".
13038         
13039 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13040
13041         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
13042         OP_L opcodes.
13043
13044 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
13045
13046         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
13047         fp >= end_of_stack exit condition, as it is not needed, and it might
13048         become true for fp eliminated frames.
13049
13050 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13051
13052         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
13053         coded offsets.
13054
13055 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
13056
13057         * mini-arm.c: fixed alignment of doubles/longs to match
13058         the C ABI (bug #76635).
13059
13060 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
13061
13062         * aot.c: fix compilation with --enable-minimal=aot.
13063
13064 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
13065
13066         * mini-arm.c: fixed compatibility with the new
13067         floating point emulator package for compares.
13068
13069 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
13070
13071         * mini.c : reverted sig->pinvoke changes (r51396-51397).
13072
13073 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
13074
13075         * mini-exceptions.c (print_stack_frame): Output to stderr.
13076         (mono_handle_native_sigsegv): Ditto.
13077
13078 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13079
13080         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
13081         OP_LCONV_TO_OVF_I implementation.
13082
13083         * mini-amd64.c: Add support for the throw->branch exception 
13084         optimization.
13085
13086         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
13087         when the catch clause catches a more general exception, i.e. Object.
13088
13089 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * cpu-ia64.md: Remove unused opcodes.
13092
13093         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
13094         specific defines for architectures defining USE_SIGACTION.
13095
13096         * mini-ia64.c: Fix some warnings.
13097
13098         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
13099         version seemed to skip a frame.
13100
13101 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13102
13103         * mini.c: Clean up the usage of sig->pinvoke flag. Now
13104         only calls which are made to native code use this flag.
13105
13106 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
13107
13108         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
13109         varargs methods as well.
13110         
13111         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
13112         which have save_lmf set. Reorganize methods prologs a bit.
13113
13114         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
13115         debugger to the proper place.
13116
13117 2005-10-29  Martin Baulig  <martin@ximian.com>
13118
13119         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
13120         when running inside the debugger until the debugger has support
13121         for it.
13122
13123 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13124
13125         * mini.h: Fix a warning.
13126
13127 2005-10-24  Miguel de Icaza  <miguel@novell.com>
13128
13129         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
13130         we expose publicly, this returns the string.
13131
13132 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
13133
13134         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
13135         with fp elimination.
13136
13137 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13138
13139         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
13140         native stacktrace using the glibc 'backtrace' function if available.
13141
13142 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
13143
13144         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
13145
13146         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
13147         handle SIGSEGVs received while in native code.
13148
13149         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
13150         code, call mono_handle_native_sigsegv which will abort the runtime
13151         after printing some diagnostics, instead of converting it into a
13152         confusing NullReferenceException.
13153
13154 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13155
13156         * cpu-pentium.md: Remove unused opcodes.
13157
13158 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
13159
13160         * mini-amd64.h (MonoLMF): Add rsp field.
13161
13162         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
13163         the lmf too.
13164
13165 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
13166
13167         * mini-codegen.c (get_register_spilling): Fix some warnings.
13168
13169 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
13170
13171         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
13172         elimination during exception handling. Enable fp elimination by
13173         default.
13174
13175         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
13176         elimination.
13177
13178 2005-10-16  Martin Baulig  <martin@ximian.com>
13179
13180         * mini-exceptions.c
13181         (mono_debugger_run_finally): New public method for the debugger.
13182
13183 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13184
13185         * debug-mini.c (mono_debug_init_method): Fix warning.
13186
13187         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
13188         the 'exname' parameter const to fix some warnings.
13189
13190 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
13191
13192         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
13193         introduced by the previous patch.
13194
13195 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
13196
13197         * basic-float.cs: Add test for precision of float arithmetic.
13198
13199         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
13200         when loading/storing single values from/to memory.
13201
13202         * mini.c (mono_jit_compile_method_with_opt): Create the function
13203         pointers in the correct domain.
13204
13205 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13206
13207         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
13208         introduced by previous patch.
13209         
13210         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
13211         when out_filter_idx is NULL.
13212
13213         * mini-exceptions.c: Don't run filter clauses twice during exception
13214         handling. Fixes #75755.
13215
13216 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * aot.c: Add support for ldflda wrappers.
13219
13220         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
13221         #75902.
13222
13223 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
13224
13225         * mini.c, mini.h: do not consider exception handlers blocks when
13226         setting up interface variables.
13227
13228 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
13229
13230         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
13231
13232 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
13233
13234         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
13235         causes a regression.
13236
13237         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
13238
13239 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
13240
13241         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
13242         of the OP_P definitions.
13243
13244         * TODO: Add a proposal for dealing with the CEE/OP mess.
13245
13246         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
13247         optimizations from the x86 port.
13248
13249         * cpu-amd64.md: Ditto.
13250
13251         * basic.cs basic-long.cs: Add tests.
13252
13253 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
13254
13255         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
13256         Patrik Torstensson's implementation of my exception-handling
13257         optimization idea, when the exception object is not used
13258         (bug #62150).
13259
13260 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
13261
13262         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
13263         of the mul_imm optimizations from the old jit.
13264
13265 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
13266
13267         * mini.c, liveness.c: patch by Patrik Torstensson and
13268         Zoltan Varga to improve performance in methods with
13269         exception clauses.
13270
13271 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13272
13273         * driver.c: Remove 'Globalization' entry from --version.
13274
13275 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
13276
13277         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
13278         there is a profiler interested in JIT events.
13279
13280         * aot.c: Load profile files produced by the AOT profiling module, and
13281         reorder methods based on the profiling info. Add a 'method_order' table
13282         to the AOT file to make mono_aot_find_jit_info work with the reordered
13283         methods.
13284
13285         * mini.h: Bump AOT file version info.
13286
13287 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
13288
13289         * mini-arm.h: work around what looks like a gcc bug when optimizations
13290         are enabled.
13291
13292 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13293
13294         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13295         conditionals.  Use ...
13296         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13297
13298 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13299
13300         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13301         to determine the amount of memory to copy when passing valuetypes.
13302
13303         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13304         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13305
13306 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13307
13308         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13309         information about aot.
13310
13311 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13312
13313         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13314         macros. This will allow a deadlock debugger to easily be plugged
13315         in.
13316
13317 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13318
13319         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13320
13321 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13322
13323         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13324         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13325         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13326         ($(arch_built)) [CROSS_COMPILING]: Error out.
13327
13328 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13329
13330         * aot.c: Add support for the no_special_static flag for classes.
13331
13332 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13333
13334         * Reapply reverted patches.
13335
13336         * *: Revert r50174 as well.
13337
13338         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13339
13340 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13341
13342         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
13343
13344 2005-09-23  Miguel de Icaza  <miguel@novell.com>
13345
13346         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
13347         part of the SIG_HANDLER_SIGNATURE.  
13348
13349 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
13352         statistics.
13353
13354         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13355         introduced by previous patch.
13356
13357 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13360         saved registers too.
13361
13362         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13363         upon the information returned by get_call_info ().
13364         
13365         * mini-x86.c (add_float): Fix stack size calculation.
13366         (mono_arch_call_opcode): Rewrite this so it works based up the
13367         information returned by get_call_info ().
13368         (mono_arch_get_this_vret_args): Ditto.
13369
13370 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13371
13372         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13373         in cinfo to determine the registers which need to be used.
13374
13375 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13376
13377         * driver.c (mono_main): Add --server and --desktop flags. 
13378
13379 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13380
13381         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13382         registers as global registers.
13383
13384         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13385         longer needed with the new register allocator.
13386
13387         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13388
13389         * cpu-ia64.md: Remove unused opcodes.
13390         
13391         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13392         
13393 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13394
13395         * cpu-amd64.md: Remove unused opcodes.
13396
13397         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13398         needed with the new register allocator.
13399
13400         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13401         reg-reg moves.
13402
13403 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13404
13405         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13406
13407 2005-09-16  Martin Baulig  <martin@ximian.com>
13408
13409         * exceptions-amd64.c
13410         (throw_exception): Don't call mono_debugger_throw_exception() if
13411         we're a rethrow - see the FIXME in the code.
13412
13413 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13414
13415         * mini.c (mono_init_exceptions): This only works on some architectures.
13416         
13417 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13418
13419         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13420         on ia64.
13421
13422         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13423
13424         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13425         now in mini-exceptions.c.
13426
13427 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13428
13429         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13430         now in mini-exceptions.c.
13431
13432 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13435         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13436
13437         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13438         code into mini-exceptions.c. Add some assertions to it.
13439
13440 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13441
13442         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13443         (<software@solmersa.com>). Fix as errors on windows.
13444
13445 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13446
13447         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13448         method info into the LMF.
13449
13450 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13451         
13452         * mini-ia64.c: Add proper unwind info for method epilogs.
13453
13454         * exceptions-ia64.c: Add some code to help debugging.
13455         
13456         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13457
13458         * mini-exceptions.c: Fix warning.
13459
13460 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13461
13462         * mini.c: Really fix build.
13463
13464         * mini-x86.c mini-amd64.c: Fix build.
13465
13466 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13467
13468         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13469
13470         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13471         some Interlocked methods as intrinsics.
13472
13473         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13474         for Thread methods as well.
13475
13476         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13477
13478         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13479
13480         * mini-ia64.c mini-x86.c mini-amd64.c 
13481         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13482         OP_MEMORY_BARRIER.
13483         
13484         * mini.c (mono_init_exceptions): Fix build breakage.
13485
13486 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13487
13488         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13489         of instructions. Use the new ia64_unw_op macros for emitting unwind
13490         info.
13491
13492         * mini.c (mono_init_exceptions): Initialize exception handling
13493         related trampolines at startup.
13494
13495 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13496
13497         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13498
13499 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13500
13501         * mini.c: Handle type loading errors gracefully during compilation and
13502         throw the appropriate exception.
13503
13504 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13505
13506         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13507         for the mono binary.
13508
13509 2005-09-09  Martin Baulig  <martin@ximian.com>
13510
13511         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13512         the release.
13513
13514 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13515
13516         * mini-arm.h: use emulation for conv.r.un for the release.
13517
13518 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13519
13520         * mini-arm.c, objects.cs: more fixes and tests for them.
13521
13522 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13523
13524         * mini-arm.c: align structures to at least 4 bytes to be able
13525         to keep our current optimized memcpy.
13526
13527 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13528
13529         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13530
13531 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13532
13533         * mini.c: ignore SIGPIPE.
13534
13535 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13536
13537         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13538
13539         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13540
13541 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13542
13543         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13544
13545 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13546
13547         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13548         exception handling support.
13549         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13550         patch by Brian Koropoff <briank@marakicorp.com>).
13551
13552 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13553
13554         * mini.c: revert another 'optimization' which breaks when
13555         items on the eval stack need to be saved at a basic block end
13556         (bug #75940).
13557
13558 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13559
13560         * jit-icalls.c: for arrays, ensure we always provide
13561         lower bounds.
13562
13563 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13564
13565         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13566         
13567         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13568
13569 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13572         arguments in their original register.
13573
13574 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13575
13576         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13577         memset/memcpy.
13578
13579         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13580         when ssapre is enabled.
13581
13582         * inssel-long.brg: Fix bug in previous patch.
13583
13584         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13585         multiplication by a constant.
13586
13587 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13588
13589         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13590         icc.
13591
13592         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13593         saving registers.
13594
13595 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13596
13597         * inssel-arm.brg: apply changes tested by Brian Koropoff
13598         <briank@marakicorp.com>.
13599
13600 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13601
13602         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13603         
13604 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13605
13606         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13607         to the same register if dreg is just a base register.
13608         (print_ins): Improve printing of membase opcodes.
13609
13610         * inssel-x86.brg: Add optimized ldind(reg) rules.
13611
13612         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13613
13614 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13615
13616         * mini.c: when running under valgrind, set the stack bottom for
13617         the GC at the actual approximate stack for the app (fixes running
13618         mono with valgrind).
13619
13620 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13621
13622         * mini.c: do no break at the first valuetype to init found
13623         (fixes bug #75791).
13624
13625 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13626
13627         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13628
13629 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13630
13631         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13632
13633 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13634
13635         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13636
13637 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13638
13639         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13640
13641         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13642         code.
13643
13644         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13645         code.
13646
13647         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13648         methods.
13649
13650 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13651
13652         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13653
13654 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13655
13656         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13657         in the tail recursion optimization.
13658
13659         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13660         debug info into the assembly file.
13661
13662         * iltests.il: Add test for filter regions.
13663
13664         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13665         initial stack of filter regions. Fixes #75755.
13666
13667 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13668
13669         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13670         stack requirements.
13671
13672 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13673
13674         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13675         the check for an already compiled method on non-ia64 platforms.
13676         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13677         proper domain.
13678
13679         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13680
13681         * inssel-x86.brg: Add some optimized call rules.
13682
13683 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13684
13685         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13686         method here.
13687
13688         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13689         mono_arch_patch_delegate_trampoline.
13690
13691         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13692
13693         * mini-trampolines.c: Fix build.
13694
13695         * mini-amd64.h: Add delegate trampolines.
13696
13697         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13698
13699         * inssel-amd64.brg: Add optimized call rules.
13700         
13701         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13702
13703         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13704
13705 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13706
13707         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13708         change.
13709
13710         * mini-ia64.c: Remove LMF fixmes.
13711
13712         * mini-ia64.h: Remove most fields from LMF.
13713
13714         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13715
13716         * mini-trampolines.c: Add support for IA64 function descriptors.
13717
13718         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13719         for IA64 function descriptors.
13720
13721 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13722
13723         * tramp-arm.c: patch the vtable for virtual calls. Added
13724         support code to register/unregister the LMF.
13725         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13726         more LMF work.
13727
13728 2005-08-19  Dick Porter  <dick@ximian.com>
13729
13730         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13731         bit value if needed.
13732
13733 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13734
13735         * mini.c (mini_get_method): Move handling of wrapper data here.
13736
13737         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13738
13739         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13740         virtual.
13741
13742         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13743         bblock->code does not remain empty.
13744
13745 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13746
13747         * arrays.cs: Add regression test for #75832.
13748
13749         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13750         rules. Fixes #75832.
13751
13752         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13753         instruction scheduling.
13754
13755 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13756
13757         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13758
13759 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13760
13761         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13762
13763         * mini-codegen.c: Fix VC build.
13764
13765         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13766
13767 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13768
13769         * mini.h: fix signature for mono_register_opcode_emulation.
13770
13771 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13772
13773         * mini.c: Get rid of most of the helper_sig_... constants using
13774         mono_create_icall_signature ().
13775
13776 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13777
13778         * jit-icalls.c (helper_ldstr): New helper function.
13779
13780         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13781
13782         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13783         throw, load the string using a helper call instead of creating a string object.
13784
13785         * aot.c: Update after LDSTR changes.
13786
13787         * mini.h: Bump AOT file version.
13788         
13789         * aot.c: Save class size info into the AOT file. Print more statistics during
13790         compilation.
13791
13792         * mini.h: Bump AOT file version.
13793
13794         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13795         ordering of disasm cases. Fixes #74957.
13796
13797 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13798
13799         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13800         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13801         the generic code needed for the ARM port.
13802
13803 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13804
13805         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13806         inssel-arm.brg: more ARM features and fixes.
13807
13808 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13809
13810         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13811         ARM port work in progress.
13812
13813 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13814
13815         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13816
13817         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13818
13819         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13820
13821         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13822
13823         * *-ia64.*: Ongoing IA64 work.
13824         
13825         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13826
13827 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13828
13829         * TODO: Remove out-of-data todo stuff.
13830
13831         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13832         dead code.
13833
13834         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13835
13836         * mini.h: Bump corlib version.
13837
13838 2005-07-27  Martin Baulig  <martin@ximian.com>
13839
13840         * mini-codegen.c
13841         (create_copy_ins): Added `const unsigned char *ip' argument; set
13842         `copy->cil_code' from it.
13843
13844 2005-07-27  Martin Baulig  <martin@ximian.com>
13845
13846         * mini-exceptions.c (mono_handle_exception): Don't call
13847         mono_debugger_handle_exception() for filters.
13848
13849 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13850
13851         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13852         as well.
13853
13854 2005-07-26  Martin Baulig  <martin@ximian.com>
13855
13856         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13857
13858         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13859         helper_compile_generic_method() if the method is actually virtual
13860         and non-final.
13861
13862 2005-07-26  Martin Baulig  <martin@ximian.com>
13863
13864         * mini.c
13865         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13866         public; this is now accessed directly by the debugger.
13867         (mono_generic_trampoline_code): Removed.
13868
13869         * debug-mini.c
13870         (mono_debug_init_method): Also add interncalls and wrappers.
13871
13872 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13873
13874         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13875
13876 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13877
13878         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13879
13880 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13881
13882         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13883
13884 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13885
13886         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13887         getting TLS offsets on AMD64 too.
13888
13889 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
13890
13891         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13892
13893 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13894
13895         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13896         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13897
13898 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13899
13900         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13901
13902         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13903         to mini.c.
13904
13905         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13906         mono_sparc_is_virtual_call ().
13907         
13908         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13909
13910         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13911         trampoline parameters.
13912
13913         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13914         
13915         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13916         to mono_arch_get_vcall_slot_addr.
13917
13918         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13919         trampoline code.
13920
13921         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13922
13923 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13924
13925         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13926
13927 2005-07-19  Martin Baulig  <martin@ximian.com>
13928
13929         * exceptions-amd64.c (throw_exception): Call
13930         mono_debugger_throw_exception() here like we're doing it on i386.
13931
13932 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13933
13934         * mini-ia64.c: Add optimized TLS access support.
13935
13936 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13937
13938         * mini-exceptions.c: Ongoing IA64 work.
13939
13940         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13941
13942         * mini.c: Use the default optimization set when embedding. Fixes
13943         #75194.
13944
13945 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13946
13947         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13948         of trampolines to a separate file.
13949
13950         * mini-trampolines.c: New file.
13951
13952         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13953         separate file.
13954         
13955         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13956         amd64/ia64 code.
13957
13958         * mini-codegen.c: Fix cygwin build.
13959
13960 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13961
13962         * mini.c: Add some minor changes needed by the IA64 port.
13963
13964         * *-ia64.*: Ongoing IA64 work.
13965
13966 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13967
13968         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13969         trampolines into arch-independent and arch-dependent parts.
13970
13971         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13972
13973 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13974
13975         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13976
13977         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13978         the xp-regalloc-branch for amd64.
13979
13980         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13981         xp-regalloc-branch for x86.
13982
13983 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13984
13985         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13986
13987 2005-07-06  Martin Baulig  <martin@ximian.com>
13988
13989         * mini.c
13990         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13991         (mono_jit_runtime_invoke): Likewise.
13992
13993 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13994
13995         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13996         on x86 too.
13997         
13998         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13999         without loading their metadata. Reorganize the file format so exception handling+
14000         debug info is kept separate from normal method info. Create MonoJitInfo 
14001         structures for methods lazily.
14002
14003         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14004         loading metadata.
14005         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14006
14007         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14008
14009         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14010         in AOT code.
14011
14012         * mini.h: Bump AOT file version.
14013
14014 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14015
14016         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14017
14018 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14019
14020         * Makefile.am (check-local): Call semdel-wrapper.
14021
14022 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
14023
14024         * mini-x86.c: Revert the last change as it seems to break the build..
14025
14026 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14027
14028         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14029         
14030         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
14031
14032 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
14033
14034         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
14035         outside of the macro, so strange stuff doesn't happen with gcc4
14036         (NEW_AOTCONST_TOKEN): Likewise.
14037
14038 2005-06-28  Martin Baulig  <martin@ximian.com>
14039
14040         * mini.c (mini_class_is_system_array): New static method; use this
14041         instead of `klass->parent == mono_defaults.array_class' everywhere
14042         since this also works for the new generic array class.
14043
14044 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14045
14046         * inssel.brg: Remove warnings.
14047
14048 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
14049
14050         * mini-ia64.c: Ongoing IA64 work.
14051
14052         * basic-float.cs: Add float->i1 conversion test.
14053
14054         * iltests.il: Add conv.u4 test.
14055
14056 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
14057
14058         * inssel-long.brg: Fix bug caused by last change.
14059
14060 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
14061
14062         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
14063         BSDs.  Allows the x86 JIT to work on OSX86
14064
14065 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
14066
14067         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
14068         u4->i8 conversion.
14069
14070         * mini-ia64.c: Ongoing IA64 work.
14071
14072 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14073
14074         * mini-ia64.c: Ongoing IA64 work.
14075
14076         * driver.c: Clean up jit_code_hash as well when using --regression.
14077
14078         * inssel-long.brg: Fix long->i4/u4 conversion rules.
14079
14080         * basic-long.cs: Add tests for long->u4 conversion.
14081
14082 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
14083
14084         * mini.c: Take mono_get_domainvar out of macros. This makes sure
14085         that we do not depend on undefined C behavior: the order stuff
14086         gets evaluated within an expression. Fixes mono when compiled on
14087         GCC 4.
14088
14089 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
14090
14091         * *-ia64.*: Ongoing IA64 work.
14092
14093         * aot.c: Lower memory usage while loading AOT methods.
14094
14095         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
14096
14097         * mini.h: Bump AOT file format version.
14098
14099 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
14100
14101         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
14102
14103 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
14104
14105         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
14106         not on callee assembly). Fixed some comments.
14107
14108 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
14109
14110         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
14111         it gets proper disassembly.
14112         (emit_method_info): Remove some dead code.
14113
14114         * mini.c (mini_method_compile): Allways allocate the GOT var in
14115         mono_method_to_ir for emulating opcodes.
14116
14117 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
14118
14119         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
14120         before freeing the code memory. Fixes #74990.
14121
14122         * objects.cs: Add regression test for #74992.
14123
14124         * liveness.c: Extend live ranges of arguments to the beginning of the
14125         method. Fixes #74992.
14126
14127         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
14128         so it points into the faulting instruction.
14129
14130 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
14131
14132         * jit-icalls.c (mono_imul_ovf): Add exception handling.
14133
14134         * *-ia64.*: Ongoing IA64 work.
14135
14136         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
14137
14138 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
14139
14140         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
14141
14142         * *-ia64.*: Ongoing IA64 work.
14143
14144 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
14145
14146         * basic-long.cs: Add tests for add/sub.ovf.
14147
14148         * basic.cs: Add tests for sub.ovf.
14149
14150         * *-ia64.*: Ongoing IA64 work.
14151
14152 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
14153
14154         * *-ia64.*: Ongoing IA64 work.
14155
14156         * basic.cs: Add conv.ovf.i4.un test.
14157
14158 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
14159
14160         * mini.c: (remove_block_if_useless) Fixed bug 75061.
14161         
14162 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14163
14164         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
14165
14166 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14167
14168         * *-ia64.*: Ongoing IA64 work.
14169
14170 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14171
14172         * trace.[ch]:
14173         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
14174
14175 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
14176
14177         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
14178
14179 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
14180
14181         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
14182
14183         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
14184         of a call is callable by a near call.
14185
14186 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
14187
14188         * mini-ia64.c: Ongoing IA64 work.
14189
14190 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
14191
14192         * genmdesc.c: Make the generated array non-static.
14193
14194         * inssel-long.brg: Fix LSHR_IMM rule.
14195
14196         * *-ia64.*: Ongoing IA64 work.
14197
14198         * *-ia64.*: Ongoing IA64 work.
14199
14200 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14201
14202         * *-ia64.*: Ongoing IA64 work.
14203
14204         * *-ia64.*: Ongoing IA64 work.
14205         
14206         * mini-ia64.c: Ongoing IA64 work.
14207
14208         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
14209
14210 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14211
14212         * objects.cs basic-calls.cs: Move some tests to objects.cs.
14213         
14214         * objects.cs basic-long.cs: Move some tests to objects.cs.
14215
14216 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
14217
14218         * *-ia64.*: Ongoing IA64 work.
14219
14220         * iltests.il: Add a new test.
14221
14222         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
14223         newobj. Fixes #75042.
14224
14225 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
14226
14227         * *-ia64.*: Ongoing IA64 work.
14228         
14229         * *-ia64.*: Ongoing IA64 work.
14230         
14231         * *-ia64.*: Ongoing IA64 work.
14232
14233         * basic.cs objects.cs: Move tests accessing static variables as well.
14234
14235         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
14236
14237 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
14238
14239         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
14240
14241         * driver.c: Always print failed tests.
14242
14243         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
14244         frame pointer.
14245
14246         * *ia64*: Ongoing IA64 work.
14247
14248 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
14249
14250         * basic.cs: Add tests for add.ovf. Fix warnings.
14251
14252 2005-05-18  Miguel de Icaza  <miguel@novell.com>
14253
14254         * driver.c (mono_main): Avoid crash if no argument is passed to
14255         --break;  Do not use g_error, but f_printf.   And fix all other
14256         ocurrences of the same crash.
14257
14258 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
14259
14260         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
14261         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
14262         Fixes #74742.
14263
14264 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
14265
14266         * *-ia64.*: Add beginnings of IA64 backend.
14267
14268         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
14269
14270 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
14271
14272         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
14273         Fixes #74925.
14274
14275         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
14276
14277         * mini-amd64.c: Fix a warning.
14278
14279 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
14280
14281         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
14282         in float_neg. Fixes #74897.
14283
14284         * mini-amd64.c (emit_call): Fix another near call bug.
14285
14286 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
14287
14288         * declsec.c: Keep the appdomain information in the structure. Added a 
14289         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14290         value gets overwritten).
14291         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14292         an MonoAppDomain member to MonoSecurityFrame.
14293         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14294         used in the stack walk. Now use a MonoArray which grow (double) when
14295         it gets full.
14296
14297 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14298
14299         * mini.c: Re-enabled runtime cleanup, since running threads should
14300         now properly stop when exiting.
14301
14302 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14303
14304         * mini-codegen.c: New file contaning the arch-independent local
14305         register allocator. Not used by any architectures yet.
14306
14307         * mini.h linear-scan.c: Merge some changes from the 
14308         mini-xp-local-regalloc branch.
14309
14310 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14311
14312         * mini-amd64.c (emit_call): Fix calls to native functions when the
14313         runtime is compiled as a shared library. Fixes #74756.
14314
14315         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14316         on a literal field. Fixes #74751.
14317
14318 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14319
14320         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14321
14322 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14323
14324         * objects.cs: Add missing null casting test.
14325
14326 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14327
14328         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14329         in wrapper methods. Also rename 'address' variable to 'offset'.
14330
14331 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14332
14333         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
14334         warnings.
14335         
14336         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14337
14338         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14339         work on windows.
14340
14341 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14342
14343         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
14344
14345 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14346
14347         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
14348         just the last bytes.
14349
14350 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14351
14352         * aot.c (mono_compile_assembly): Fix warning.
14353
14354         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14355         by the _MSC_VER stuff.
14356
14357 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14358
14359         * inssel-long.brg: Fix #74588.
14360
14361         * cpu-amd64.md: Fix #74591.
14362
14363         * iltests.il: Add new regression tests.
14364
14365 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14366
14367         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14368         valuetype.
14369
14370 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14371
14372         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14373
14374         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14375         from Bill Middleton <flashdict@gmail.com>.
14376
14377 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14378
14379         * arrays.cs: Add new regression test. Fix warnings.
14380
14381 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14382
14383         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14384         and leakage in CKFINITE.
14385
14386         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14387         this to a null op since it is called on amd64 too.
14388
14389         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14390
14391         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14392         body since this is not used on amd64.
14393         
14394         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14395
14396         * mini-amd64.c: Remove obsolete fixmes.
14397
14398         * mini.c (print_method_from_ip): Fix debugging support.
14399
14400 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14401
14402         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14403         so that expressions that don't give much gain are not reduced.
14404         * ssapre.h: Likewise.
14405
14406 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14407
14408         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14409
14410         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14411
14412         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14413
14414 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14415
14416         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14417
14418         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14419
14420 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14421
14422         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14423         stack touching.
14424
14425         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14426
14427         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14428
14429         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14430
14431         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14432         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14433
14434         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14435
14436         * mini-x86.c: Fix up stack overflow handling.   
14437
14438         * exceptions.cs: Add new regression test.
14439
14440 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14441
14442         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14443         mono_jit_thread_attach.
14444
14445         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14446
14447 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14448
14449         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14450         avoid calling constructors using callvirt.
14451
14452         * inssel.brg: Fix #74073.
14453
14454 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14455
14456         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14457         compilation with non-GCC compilers.
14458         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14459         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14460
14461 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14462
14463         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14464         klass->interface_offsets (will likely fix bug#74073).
14465
14466 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14467
14468         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14469
14470 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14471
14472         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14473         to amd64_div_reg_size ().
14474         
14475         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14476
14477 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14478
14479         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14480
14481 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14482
14483         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14484
14485 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14486
14487         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14488         
14489         * mini.c (mono_precompile_assembly): Load and precompile referenced
14490         assemblies as well. Fixes #74015.
14491
14492 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14493
14494         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14495
14496 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14497
14498         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14499         a lot of checks and (anyway) permissions cannot work until corlib is 
14500         loaded.
14501
14502 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14503
14504         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14505
14506 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14507
14508         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14509         calls (fixes bug#72824).
14510
14511 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14512
14513         * mini.c: fix tail recursion elimination (see test in bug#73936).
14514
14515 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14516
14517         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14518         some fp functions in sse2 mode.
14519
14520 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14521
14522         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14523
14524 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14525
14526         * mini.h mini.c: Add mono_get_jit_tls_key ().
14527
14528         * mini-x86.c: Enable fast TLS support on windows.
14529
14530 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14531
14532         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14533         * mini.c: Check for p/invoke method when generating code. If a
14534         p/invoke method, or it's class, isn't decorated with [Suppress
14535         UnmanagedCodeSecurity] then generate code to call System.Security.
14536         UnmanagedDemand (only if the security manager is active).
14537
14538 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14539
14540         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14541         last change as it seems to cause strange crashes.
14542         
14543 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14544
14545         * *.c: handle unsafe function pointers where needed.
14546
14547 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14548
14549         * mini.c (mono_jit_free_method): Remove the fixme too.
14550
14551 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14552
14553         * mini.c: As discussed, make the code actually free the delegate
14554         thunk now, to enable the debugging of delegate problems, use
14555         MONO_DEBUG=1 when running Mono. 
14556
14557         This takes also care of parts of the leaks as seen by Joe.
14558
14559 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14560
14561         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14562         thread_tls_offset calculation.
14563
14564 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14565
14566         * declsec.c: Reworked linkdemand checks for icall. The previous code
14567         was using the declaration code (untrusted) and didn't work as expected
14568         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14569         specific case.
14570
14571 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14572
14573         * iltests.il: Add new localloc test.
14574
14575         * mini-amd64.c: Handle large stack allocations the same way as on
14576         windows if stack overflow handling is working.
14577         
14578         * mini-amd64.c: Allocate the signal stack using mmap.
14579
14580         * mini.c (sigsegv_signal_handler): Fix reading of context.
14581
14582         * mini-exceptions.c: Fix up stack overflow handling.
14583
14584         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14585
14586         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14587
14588         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14589
14590         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14591
14592         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14593         tramp_init functions as they are no longer needed.
14594
14595 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14596
14597         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14598         
14599         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14600
14601         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14602         
14603         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14604         support that now.
14605
14606         * mini-ops.h: Add OP_LMUL_IMM.
14607
14608         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14609         long mul/div opcodes as intrinsic.
14610
14611         * mini-amd64.c (emit_call): Handle the case when the callee might be
14612         an AOT method.
14613
14614 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14615
14616         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14617         extra safe.
14618         
14619         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14620
14621         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14622
14623 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14624
14625         * mini.c (mono_codegen): Don't leak here, to help people running
14626         monogrind.
14627
14628 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14629
14630         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14631         conversions in sse2 mode.
14632
14633         * basic-float.cs: Add regression test.
14634         
14635         * mini-amd64.c: Reenable sse2.
14636
14637 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14638
14639         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14640
14641 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14642
14643         * driver.c: Copyright text should include 2005.
14644         
14645 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14646
14647         * cpu-amd64.md (load_membase): Fix more max lengths.
14648
14649 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14650
14651         * cpu-amd64.md (load_membase): Fix max length.
14652
14653         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14654
14655         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14656
14657         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14658         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14659
14660         * basic-float.cs: Add rounding regression test.
14661
14662         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14663
14664 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14665
14666         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14667         structures in registers for pinvoke wrappers.
14668
14669 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14670
14671         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14672
14673 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14674
14675         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14676         wrapper to mono_jit_thread_attach.
14677
14678         * mini.c (mini_jit_thread_attach): New jit icall.
14679
14680         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14681         native->managed wrappers.
14682
14683         * exceptions.cs: Add new regression test.
14684
14685         * mini.c (optimize_branches): Check regions in the cbranch to throw
14686         block case as well. Fixes #73242.
14687
14688 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14689
14690         * mini.c: thread safety fixes.
14691
14692 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14693
14694         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14695         patching stuff, since delegates use jump trampolines so there is
14696         no caller.
14697
14698         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14699         jump trampolines.
14700         
14701         * tramp-amd64.c: Fix build.
14702
14703         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14704         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14705
14706         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14707         Rename this to mono_arch....
14708         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14709
14710         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14711
14712         * mini-amd64.c (emit_call): If both the caller and the callee is
14713         guaranteed to have 32 bit addresses, emit a normal call.
14714
14715         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14716
14717         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14718         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14719         method_ptr inside delegates.
14720
14721 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14722
14723         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14724         invalidated. Fixes #73001.
14725
14726         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14727
14728         * mini-x86.c: Only use stdcall for pinvokes on windows.
14729
14730 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14733         * mini-x86.c: remove unreliable __thread var offset detection,
14734         use the correct accessors and enable by default.
14735
14736 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14737
14738         * mini.c (mono_jit_free_method): Fix memory leak.
14739
14740 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14741
14742         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14743
14744 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14745
14746         * cpu-amd64.md: Fix lengths of atomic opcodes.
14747
14748 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14749
14750         * driver.c: try to not imply using ICU is any good.
14751
14752 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14753
14754         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14755         functions as inline ops.
14756
14757         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14758         some Interlocked functions as inline ops.
14759
14760         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14761
14762         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14763
14764         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14765
14766         * mini.c: Add support for OP_NOT_TAKEN.
14767
14768         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14769         structures in registers for pinvoke wrappers.
14770
14771         * mini-amd64.c: Fix warnings.
14772
14773 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14774
14775         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14776
14777         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14778
14779         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14780         address instead of loading the address from it.
14781
14782         * mini-x86.c: Add support for returning small structs in registers
14783         on Win32. Fixes part of #70864.
14784         
14785 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14786
14787         * trace.c (get_token): Improve error checking.
14788
14789 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14790
14791         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14792
14793 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14794  
14795         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14796         it can be reused for MonoClass.
14797         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14798         _LINKDEMAND.
14799
14800 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14801
14802         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14803         instead of a MonoReflectionMethod. The method information wasn't used
14804         when displaying SecurityException details (but will be now).
14805
14806 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14807
14808         * Makefile.am : windows build fix.
14809
14810 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14811
14812         * iltests.il: Add new regression test.
14813
14814         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14815         #72522.
14816
14817 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14818  
14819         * mini.c: Moved linkdemand check into helper function check_linkdemand
14820         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14821         LDFTN, LDVIRTFTN).
14822
14823 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14824
14825         * declsec.c: Added statistics counter for different kinds of 
14826         LinkDemands.
14827         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14828         (and commented) declaration.
14829         * mini.c: Added statistics counter for security Demand code 
14830         generation. Added display of security statistics.
14831
14832 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14833
14834         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14835         Fix compilation errors under gcc-2.95.
14836
14837 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14838
14839         * mini.c, driver.c: Use the new jit trampoline hashtable
14840
14841 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14842
14843         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14844
14845 2005-02-11  Martin Baulig  <martin@ximian.com>
14846
14847         * debug-mini.c (mono_debug_close_method): Free the line number array.
14848
14849 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14850
14851         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14852         icalls.
14853
14854         * mini.h: Bump AOT file format version. 
14855
14856 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14857
14858         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14859         APTC and P/Invoke.
14860         * declsec.h: Added macros to get/set lazyly initialized security 
14861         informations about assemblies. Added new enum for different type of
14862         possible LinkDemand violation. Added function to check LinkDemands.
14863         * mini.h: Added a field to MonoCompile to hold any security violation
14864         detected when JITting a method (so it can be thrown later).
14865         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14866         and CEE_CALLVIRT. Added code to throw exception at the end of
14867         mini_method_compile (note: the exception is unhandled right now).
14868
14869 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14870
14871         * mini.c, jit-icalls.c: use the managed implementation of
14872         memset for initobj and memset, to avoid managed <-> unmanaged
14873         transitions.
14874
14875 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14876
14877         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14878         optimization if it would need a GOT var.
14879
14880         * basic.cs: Add tests for constant propagation and switch statements.
14881
14882         * ssa.c: Fix out-of-range constant propagation and switch statements.
14883
14884 2005-02-09    <vargaz@freemail.hu>
14885
14886         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14887
14888 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14889
14890         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14891
14892 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14893
14894         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14895
14896 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14897
14898         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14899         arithmetic operations.
14900
14901 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14902
14903         * mini-ppc.c: add a workaround for broken user code that
14904         DllImports vararg functions with non-vararg signatures.
14905
14906 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14907
14908         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14909         meaningfull error message for assemblies written in Managed C++.
14910
14911         * tramp-amd64.c mini-amd64.h: Add support for 
14912         create_trampoline_from_token ().
14913
14914         * aot.c mini-x86.c abcremoval.c: Applied patch from
14915         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14916
14917 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14918
14919         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14920         which takes a MonoImage/token as parameter instead of a MonoMethod.
14921
14922         * aot.c: Use the new trampoline for initializing vtables.
14923
14924         * aot.c: Add support for ldfld/stfld_remote wrappers.
14925
14926         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14927         rules for compare <MEM>, IMM.
14928
14929         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14930
14931         * aot.c: Handle inherited finalizers correctly.
14932
14933 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14934
14935         * inssel.brg (stmt): Add a missing _setup_... ().
14936
14937         * aot.c: Save some parts of the class state to the AOT file and use it
14938         to recompute that state when a class is initialized.
14939
14940         * mini.c: Install AOT hooks into the runtime.
14941
14942         * mini.h: Bump AOT file format version.
14943         
14944         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14945         Fixes #72148.
14946
14947         * iltests.il: Add new test.
14948
14949 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14950
14951         * mini.c: fix typo.
14952
14953 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14954
14955         * mini.c: setup the statistical profiler in the thread attach
14956         callback to cope with the new single thread code.
14957
14958 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14959
14960         * mini-ppc.c: ensure we have enough room for the profiler
14961         calls (fixed bug#72084).
14962
14963 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14964
14965         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14966         it.
14967
14968 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14969
14970         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14971
14972 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14973
14974         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14975         to succesfully execute parrotbench).
14976         * ssapre.h: Likewise.
14977
14978 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14979
14980         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14981         variable for stores to method arguments (fixes a SSAPRE issue).
14982
14983 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14984
14985         * mini.c: handle value types in dup, fixes gen-112.cs.
14986
14987 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14988
14989         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14990         sequence for calls in dynamic methods to avoid thunks.
14991
14992 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14993
14994         * mini.c: correctly remove dynamic methods from the hashtable.
14995
14996 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14997
14998         * driver.c: Disabled SSAPRE until fix the bug that appears
14999         in IronPython's parrotbench.
15000
15001 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15002
15003         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15004
15005         * mini.c (mono_method_to_ir): Revert the previous change.
15006         
15007         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15008         when AOT compiling.
15009
15010         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15011         mono_jit_info_table_find () etc. when running under valgrind.
15012
15013         * inssel.brg: Fix warnings.
15014
15015         * mini-exceptions.c: Fix warnings.
15016
15017 2005-01-31  Martin Baulig  <martin@ximian.com>
15018
15019         * driver.c (compile_all_methods_thread_main): Don't try to compile
15020         generic methods or anything which has type parameters.
15021
15022 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15023
15024         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
15025
15026         * TestDriver.cs: Add --verbose flags.
15027
15028         * graph.c ssa.c: Fix 64 bit warnings.
15029         
15030         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
15031         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
15032         Fix 64 bit warnings.
15033
15034         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
15035         variable not spotted by gcc.
15036         
15037         * mini-amd64.c inssel-amd64.brg: Applied patch from  
15038         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
15039         X86_COMPARE_MEMBASE opcodes.
15040
15041         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
15042
15043 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15044
15045         * *: MonoMethod->signature might be NULL now. You *MUST* use
15046         mono_method_signature.
15047
15048 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15049
15050         * driver.c (compile_all_methods_thread_main): Compile the methods
15051         without invoking cctors.
15052
15053 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15054
15055         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
15056         * basic-calls.cs: test for the above.
15057
15058 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15059
15060         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
15061         MonoJitInfo changes.
15062
15063 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
15064
15065         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
15066         eagerly if it contains dynamic methods.
15067         
15068         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
15069
15070         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
15071         trace, it is now computed by an icall from trace_ips.
15072         
15073         * mini-exceptions.c: Fix a warning.
15074
15075 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15076
15077         * mini-exceptions.c: don't bother getting stack trace info if
15078         it's not going to be used.
15079
15080 2005-01-27  Raja R Harinath  <rharinath@novell.com>
15081
15082         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
15083         ssapre-mini-ops.h.
15084
15085 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
15086
15087         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
15088
15089         * aot.c: Avoid calling mono_method_get_header () if not needed.
15090
15091         * mini.h: Bump AOT file format version.
15092         
15093         * mini.c (mono_emit_native_call): Allocate a GOT var here.
15094
15095         * mini.c (mono_print_tree): Print more info for calls.
15096
15097 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15098
15099         * declsec.h: Remove warning by adding missing include for marshal.h
15100
15101 2005-01-26  Martin Baulig  <martin@ximian.com>
15102
15103         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
15104         `ip' twice.
15105
15106 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
15107
15108         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
15109         flags.
15110
15111         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
15112
15113         * aot.c (mono_compile_assembly): Fix a warning.
15114
15115 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
15116
15117         * declsec.c: Look for security attributes on the original MonoMethod 
15118         (and not the wrapped one). This fix permissions on icalls.
15119
15120 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15121
15122         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15123
15124         * mini.c (mono_allocate_stack_slots): Add a fixme.
15125
15126         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15127
15128 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15129
15130         * inssel.brg: optimize casts of sealed types (more
15131         optimizations waiting for fixes in remoting).
15132
15133 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15134
15135         * inssel.brg (stmt): Add another dummy rule.
15136
15137         * driver.c: Fix warnings.
15138
15139         * driver.c (mono_main): If running under valgrind, instruct glib to use
15140         the system allocation functions so valgrind can track the memory
15141         allocated by the g_... functions.
15142
15143         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
15144
15145         * mini-ops.h: Add OP_DUMMY_STORE opcode.
15146
15147         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
15148
15149         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
15150         variables in try regions.
15151
15152         * mini.c (mini_method_compile): Don't disable optimizations on large
15153         methods when AOT compiling.
15154
15155         * mini.c (mono_allocate_stack_slots): New arch independent method to 
15156         allocate stack slots. Not yet used.
15157
15158 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15159
15160         * debug-mini.c (mono_debug_close_method): Plug some leaks.
15161
15162 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
15163
15164         * mini-ppc.c: make the branch info relative as the code
15165         buffer can be reallocated.
15166
15167 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15168
15169         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
15170         * driver.c: Removed the AOT/security restriction. Now initialize the
15171         security manager (in metadata) if --security is used.
15172         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
15173         rather than the pointer to declarative security, when AOT is used.
15174
15175 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
15176
15177         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
15178         basic blocks, reduced intrinsic exception throwing code size.
15179
15180 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
15181
15182         * driver.c (mini_usage): Reorder the usage screen.
15183
15184 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
15185
15186         * mini.c (mono_resolve_patch_target): Fix warning.
15187
15188 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
15189
15190         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
15191         previous patch.
15192
15193         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15194
15195         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
15196         breaks the amd64 build.
15197
15198         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
15199         register allocation. Fixes #71454.
15200
15201         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15202
15203         * arrays.cs: Add new regression test.   
15204
15205 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15206
15207         * ssapre.c: Turned usage of snprintf to GString.
15208         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
15209         (I left it on by mistake in my previous commit).
15210
15211 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
15212
15213         * mini.c, cfold.c, basic-calls.cs: preserve side effects
15214         on cond branch optimization (fixes bug# 71515).
15215
15216 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15217
15218         * abcremoval.c: Fixed bug 71062.
15219         * abcremoval.h: Likewise.
15220
15221 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15222
15223         * mini.c: Added a new functionality to optimize_branches, the removal
15224         of useless basic blocks, and fixed some problem in the removal of
15225         critical edges; some utility functions added for both purposes.
15226         * ssapre.c: Added complex expression support, and fixed bug 70637.
15227         * ssapre.h: Likewise.
15228         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
15229         enabled in SSAPRE.
15230         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
15231         * driver.c: Re-enabled SSAPRE.
15232
15233 2005-01-19  Martin Baulig  <martin@ximian.com>
15234
15235         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
15236         the result of mono_get_method_constrained().
15237
15238 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
15239
15240         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
15241         manager.
15242
15243 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
15244
15245         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
15246         be detected.  Fixes #59296.
15247
15248 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15249
15250         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
15251         which can happen. Fixes #71361.
15252
15253 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15254
15255         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
15256         manager.
15257
15258 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15259
15260         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
15261         appdomain-unload.exe to fail.
15262         
15263         * mini.c: Fix some memory leaks.
15264
15265 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
15266
15267         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
15268         Fixed bug and sped up some codepaths.
15269
15270 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15271
15272         * mini.c: Fix some memory leaks.
15273
15274         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
15275         conversion.
15276
15277         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
15278
15279         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
15280         #71320.
15281
15282         * iltests.il: Add regression test for #71320.
15283
15284 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15285
15286         * mini.c (mono_codegen): Fix installation of profiler hooks.
15287
15288         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15289
15290 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15291
15292         * mini.h, mini.c, cfold.c: optimize access to enum
15293         readonly fields, too. Eval conditional branches if possible
15294         to perform unreachable code removal in more cases.
15295
15296 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15297
15298         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15299
15300         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15301         code manager.
15302
15303         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15304         WinXP DEP. Fixes #71244.
15305
15306 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15307
15308         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15309
15310 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15311
15312         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15313
15314 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15315
15316         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15317         changes.
15318
15319         * mini.h: Bump AOT version.
15320
15321         * mini.h (MonoCompile): Change exvar to a hash table.
15322
15323         * mini.c: Allocate a separate exvar for each handler block.
15324
15325         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15326
15327         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15328         ex var with the pending exception and only throw if the two are equal.
15329         Fixes #68552.
15330         
15331         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15332
15333         * mini-x86.c: Fix warnings.
15334
15335         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
15336         used by all the ports now.
15337
15338         * aot.c: Add write-symbols and save-temps options.
15339
15340 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15341
15342         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
15343
15344 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
15345
15346         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
15347         operations.
15348
15349         * tramp-s390.c: Check vtable slot belongs to the domain.
15350
15351         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
15352         as per other platforms.
15353
15354         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15355
15356 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15357
15358         * driver.c: we don't run the Main() code in a subthread anymore.
15359
15360 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15361
15362         * mini.c: added experimental rtc support in the statistical
15363         profiler: if the user has the permission, more accurate statistics
15364         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15365         The MONO_RTC value must be restricted to what the linux rtc allows:
15366         power of two from 64 to 8192 Hz.
15367
15368 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15369
15370         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15371
15372 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15373
15374         * mini-ppc.c: better icache flush for smp.
15375
15376 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15377
15378         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15379
15380         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15381         amd64 port, not yet used.
15382
15383 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15384
15385         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15386         a struct type.
15387
15388 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15389
15390         * driver.c: Added --security option to activate the security manager.
15391         Right now this will allow code generation for declarative demands and
15392         is disabled when AOT is specified.
15393         * mini.c: Add code generation for declarative security demands.
15394         * mini.h: Add mono_use_security_manager as an extern gboolean.
15395
15396 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15397
15398         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15399         emitting more dense assembly code.
15400
15401         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15402         exception throwing stuff.
15403
15404 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15405
15406         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15407         dead code.
15408
15409         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15410         left in by mistake.
15411
15412         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15413         fixed.
15414
15415         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15416
15417         * tramp-*.c: Only patch vtable slots if the object is in the current
15418         domain. Fixes appdomain-unload.exe.
15419
15420         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15421         
15422         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15423         x86 branch.
15424
15425 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15426
15427         * mini.c (reverse_branch_op): New helper function.
15428
15429         * mini.c (optimize_branches): Run the new optimization only on 
15430         platforms which support it. Also reverse all kinds of branches.
15431
15432         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15433
15434         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15435         a throw statement.
15436
15437         * mini.c (optimize_branches): Reverse not-equals branches if the false
15438         bblock is a throw. This happens a lot of time with argument checking in
15439         corlib.
15440
15441         * mini.c (mono_codegen): Add support for placing basic blocks after
15442         the function epilogue.
15443
15444         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15445         function epilogue.
15446         
15447 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15448
15449         * mini.c (setup_stat_profiler): Only set this up if the platform
15450         supports ITIMER_PROF.
15451
15452 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15453
15454         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15455         previous patch.
15456
15457         * inssel.brg: Fix a warning.
15458
15459 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15460
15461         * mini.c: added support for statistical profiler 
15462         (run with: --profile=default:stat).
15463
15464 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15465
15466         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15467
15468         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15469
15470         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15471         related to global registers from the amd64 port.
15472
15473 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15474
15475         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15476
15477         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15478         with global registers.
15479         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15480
15481         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15482
15483 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15484
15485         * debug-mini.c (encode_value): Fix off-by-one.
15486
15487         * aot.c (encode_value): Likewise.
15488
15489         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15490
15491 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15492
15493         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15494         AOT.
15495
15496         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15497         
15498         * aot.c (emit_method_info): Increase size of temp buffer.
15499
15500         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15501         the AOT case.
15502
15503 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15504
15505         * aot.c (emit_method_info): Fix build.
15506         
15507         * aot.c: Further rework of the AOT file format to reduce the size of
15508         the method info data.
15509
15510         * mini.h: Bump AOT file format version.
15511
15512 2004-12-27  Martin Baulig  <martin@ximian.com>
15513
15514         * mini.c (mini_get_method): New static method; call
15515         mono_get_method_full() and mono_get_inflated_method().
15516         (mono_method_to_ir): Use mini_get_method() instead of
15517         mono_get_method_full(). 
15518
15519 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15520
15521         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15522
15523 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15524
15525         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15526
15527         * inssel-amd64.brg: Add some optimization rules.
15528
15529 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15530
15531         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15532         standard not GC'd stuff is fine.
15533
15534 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15535
15536         * aot.c: Rework the AOT file format to get rid of most of the global
15537         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15538
15539         * mini.h: Bump AOT file format version.
15540         
15541 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15542
15543         * mini.h: Bump AOT file format version.
15544
15545         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15546         address is inside a GOT.
15547
15548         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15549
15550         * cpu-pentium.md: Increase the maximum size of some instructions which
15551         might involve a got access.
15552         
15553         * mini.c (get_method_from_ip): Another debug helper function.
15554
15555         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15556         when got var accesses are created during the decompose phase.
15557
15558         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15559
15560         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15561         argument mini_compile_method and to MonoCompile, and use this to
15562         determine whenever a given method is compiled for AOT. This allows the
15563         other methods compiled during AOT compilation to be free of AOT stuff,
15564         so the backends does not need to add special support for them by
15565         creating a fake GOT etc.
15566
15567         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15568         longer needed.
15569
15570 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15571
15572         * mini.c (mono_method_to_ir): It turns out that some of the
15573         x-appdomain wrappers are lax with types, so just ignore this for
15574         all wrappers.
15575
15576         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15577         at the vtable->klass. If it is non-shared code we can just use the
15578         vtable.
15579
15580 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15581
15582         * mini-ppc.c: access MonoDomain from tls, too.
15583
15584 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15585
15586         * declsec.c: Removed unused variable (and related warning ;-)
15587
15588 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15589
15590         * iltests.il: New test for LDELEMA on an array of ref types.
15591
15592         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15593         all ldelema's on reftypes.
15594         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15595         it was the wrong place to put it.
15596
15597         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15598         register to pop to make this cleaner, at the request of Paolo.
15599
15600 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15601
15602         * mini-ops.h (OP_GETHASHCODE): New op.
15603
15604         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15605
15606         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15607         operation.
15608
15609         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15610         by 25%.
15611         
15612         * mini-x86.c (mono_arch_output_basic_block): Rather than
15613
15614         add ebp, 4
15615
15616         Emit
15617
15618         pop edx
15619
15620         The first is 3 bytes while the second is 1. This saves 36 kb on
15621         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15622         see a small boost because of icache locality.
15623
15624         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15625
15626 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15627
15628         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15629         started code sharing with the generic code.
15630
15631 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15632
15633         * mini-ppc.c, cpu-g4.md: added code for direct access to
15634         tls data slots.
15635
15636 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15637
15638         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15639          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15640         to OP_TLS_GET.
15641
15642 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15643
15644         * declsec.c|h: Added functions to cache the declarative stack modifiers
15645         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15646         structure.
15647         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15648         created. Register internal calls for System.Security.SecurityFrame::
15649         _GetSecurityFrame and _GetSecurityStack.
15650         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15651         the definitions for the new stack walk/callback mechanism.
15652         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15653         first security frame for LinkDemands and InheritanceDemands) and
15654         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15655         from lupus.
15656         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15657         walk initialization (lupus).
15658
15659 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15660
15661         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15662         idiom.
15663         (handle_loaded_temps): Do not create a temporary variable for
15664         things that we know are temps. They will never be modified.
15665         (mono_spill_call): Set MONO_INST_IS_TEMP
15666         (mono_emulate_opcode): ditto
15667         (emit_tree): ditto
15668         (mono_method_to_ir.CEE_DUP): ditto
15669
15670 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15671
15672         * mini.c (type_to_eval_stack_type): Make this handle the void type
15673         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15674         (emit_tree): use ip_in_bb to special case some common idioms
15675         Update all callers to pass in the IP.
15676         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15677
15678         This gives us a nice 2% speedup in mcs bootstrap.
15679
15680         * mini-x86.c (peephole_pass): Peephole pass to make
15681         mov  [foo], eax
15682         push [foo]
15683
15684         into
15685
15686         mov [foo], eax
15687         push eax
15688
15689         * mini.c (ip_in_bb): new method.
15690         (mono_method_to_ir): use this method rather than doing the hash
15691         lookup ourselves.
15692
15693         * linear-scan.c (mono_linear_scan): When expiring actives, you
15694         don't need to keep around variables that expire on this
15695         instruction. This makes it so that:
15696              a = b + 1
15697         will turn into:
15698              store (ebx add (ebx, 1))
15699         which will become
15700              add ebx, 1
15701
15702 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15703
15704         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15705         combination to avoid doing two copies. Fix up problems with previous
15706         patch.
15707
15708         * mini.c: Fix 64 bit warnings.
15709
15710         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15711
15712 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15713
15714         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15715         changes from the x86 code.
15716
15717         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15718
15719 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15720
15721         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15722         throwing code to reduce its size, unify the AOT and non-aot code and 
15723         get rid of relocations in the AOT case.
15724
15725         * mini-x86.h mini.c exceptions-x86.c 
15726         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15727         raise corlib exceptions which doesn't require relocations in the 
15728         caller.
15729
15730         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15731
15732 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15733
15734         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15735         needed.
15736
15737         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15738         in the AOT case.
15739
15740 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15741
15742         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15743         with add function when used from Inc/dec atomic 
15744         functions. Re-enabled optimization on x86.
15745         * mini-ops.h: renamed atomic_add functions to
15746         allow _add to match the Interlocked::Add and
15747         _add_next to match Interlocked::Inc/Dec.
15748
15749 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15750
15751         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15752         linking of BBs to the end BB, and enabled SSAPRE also with
15753         consprop and copyprop (which was prevented by that bug).
15754
15755 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15756
15757         * mini-x86.c: disabling the Interlocked optimizing code. 
15758
15759 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15760
15761         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15762         file version check.
15763         
15764 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15765
15766         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15767         interlocked optimization due lack of support on x86, rewrote 
15768         exchange to take into account that base may be in eax.
15769         
15770         xsp works again; activated Interlocked optimizing code.
15771         
15772 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15773
15774         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15775
15776 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15777
15778         * mini-ops.h: Add new opcodes.
15779
15780         * mini.h: Add new patch types. Add got_var to MonoCompile.
15781
15782         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15783         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15784         make it work with all kinds of patchable code.
15785
15786         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15787         address of the GOT, and referencing entries in the GOT.
15788
15789         * mini.c: Add code to load the GOT address if needed by an opcode.
15790
15791         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15792         independent AOT code on the x86 using an elf-style Global Offset Table.
15793
15794 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15795
15796         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15797
15798 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15799
15800         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15801         when running xsp.
15802
15803 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15804
15805         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15806         of Interlocked:Increment/Decrement/Add as inline ops.
15807         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15808
15809 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15810
15811         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15812         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15813
15814 2004-12-12  Duncan Mak  <duncan@ximian.com>
15815
15816         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15817         again. `patch_info->table_size' is no longer valid after Zoltan's
15818         commit #37636.
15819
15820 2004-12-12  Martin Baulig  <martin@ximian.com>
15821
15822         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15823         if we are the "real" method, ie. not an inlined method inside it.
15824
15825 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15826
15827         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15828         before we look in the special fields table. This fixes
15829         ../tests/thread-static-init.cs.
15830
15831 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15832
15833         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15834         for Array get_Rank and get_Length. Fixes bug #70465.
15835
15836 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15837
15838         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15839         separate structure to reduce the size of MonoJumpInfo.
15840
15841 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15842
15843         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15844
15845 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15846
15847         * mini.c (mini_get_inst_for_method): Changed to allow ports
15848         to return a MonoInst instead of opcode 
15849         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15850         
15851         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15852         Allow ports to return a created MonoInst instead of op-code, will enable
15853         new optimizations.
15854         (renamed mini_get_opcode_for_method to better reflected the functionality)
15855
15856 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15857
15858         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15859
15860 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15861
15862         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15863         Fixes #69985.
15864
15865 2004-12-08  Martin Baulig  <martin@ximian.com>
15866
15867         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15868         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15869
15870 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15871
15872         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15873         correctly.
15874
15875         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15876         arithmetic.
15877
15878 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15879
15880         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15881
15882 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15883
15884         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15885         bug introduced by the previous patch.
15886
15887 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15888
15889         * mini-ppc.c, objectc.cs: handle large structs passed by value
15890         (fixes bug #69972).
15891
15892 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15893
15894         * mini-ppc.c: OP_ARGLIST implementation from
15895         Geoff Norton  <gnorton@customerdna.com>.
15896
15897 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15898
15899         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15900         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15901
15902 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15903
15904         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15905
15906 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15907
15908         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15909         support.
15910
15911 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15912
15913         * mini-sparc.c: Zero out localled-ed memory.
15914
15915         * iltests.il: Add tests for zeroing out localloc-ed memory.
15916
15917 2004-12-04  Martin Baulig  <martin@ximian.com>
15918
15919         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15920         mono_method_get_signature_full().       
15921
15922 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15923
15924         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15925         and some utility functions (always for SSAPRE), integrated SSAPRE.
15926         * mini.h: Likewise.
15927         * driver.c: Added ssapre option.
15928         * ssa.c: Small fix on OP_ARG handling.
15929         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15930         * Makefile.am: Likewise.
15931
15932 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15933
15934         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15935         now in the xp code.
15936
15937         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15938         icall.
15939
15940 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15941
15942         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15943         
15944         * cpu-s390.md : Increase instruction length of oparglist.
15945
15946         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15947
15948 2004-11-30  Martin Baulig  <martin@ximian.com>
15949
15950         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15951         virtual generic methods.  We call a special helper_compile_generic_method()
15952         icall to retrieve the method from the vtable, inflate and compile
15953         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15954
15955         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15956
15957 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15958
15959         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15960
15961 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15962
15963         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15964         Fixes #69929.
15965
15966 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15967
15968         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15969         platforms with PIC aot.
15970
15971 2004-11-28  Martin Baulig  <martin@ximian.com>
15972
15973         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15974         Fixes gen-112.cs.
15975
15976 2004-11-28  Martin Baulig  <martin@ximian.com>
15977
15978         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15979         the result of mono_type_get_underlying_type() to check whether
15980         we're byref.
15981
15982 2004-11-26  Martin Baulig  <martin@ximian.com>
15983
15984         * mini.c
15985         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15986         in the g_assert().
15987
15988 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15989
15990         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15991         the same way as the other arguments so they won't get clobbered.
15992
15993         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15994         calls through R11 since it is clobbered by the trampoline code.
15995
15996 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15997
15998         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15999         pick up in-tree mscorlib.dll.
16000
16001 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16002
16003         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16004
16005         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16006         runtime data/code are now stored in a table similar to the GOT in ELF. 
16007         This allows the code itself to be position independent.
16008
16009         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16010         loading changes.
16011
16012         * aot.c: Attach ELF type (object/function) directives to all global
16013         symbols.
16014
16015         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16016
16017         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16018
16019         * mini-amd64.h: Turn on PIC AOT code.
16020
16021         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
16022         returning the offset within an OP_AOTCONST instruction where the GOT
16023         offset needs to be added.
16024
16025         * mini.h: Bump AOT file format version.
16026
16027 2004-11-25  Martin Baulig  <martin@ximian.com>
16028
16029         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
16030         uninflated generic methods.
16031
16032 2004-11-25  Martin Baulig  <martin@ximian.com>
16033
16034         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
16035
16036 2004-11-24  Martin Baulig  <martin@ximian.com>
16037
16038         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
16039         original klass (this only applies for generic instances).
16040
16041 2004-11-24  Martin Baulig  <martin@ximian.com>
16042
16043         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
16044         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
16045         that array).
16046
16047 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16048
16049         * mini.c (mono_method_to_ir): Disable inlining for methods containing
16050         localloc. Fixes #69678.
16051
16052         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
16053         
16054 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
16055
16056         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
16057         used SSE registers on pinvoke calls. Fixes #69774.
16058
16059 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
16060
16061         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
16062         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
16063
16064 2004-11-23  Raja R Harinath  <rharinath@novell.com>
16065
16066         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
16067         Refer directly to the mcs/ tree.
16068
16069 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16070
16071         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
16072         Check if a trampoline for a synchronized method is required. 
16073
16074 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
16075
16076         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
16077         with localloc if needed. Throe arithmetric exception in
16078         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
16079         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
16080
16081 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
16082
16083         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
16084         types before switching on type.  Fixes #69622.
16085
16086 2004-11-19  Raja R Harinath  <rharinath@novell.com>
16087
16088         * Makefile.am (check-local): New.  Integrate into 'make check'.
16089         (MCS,RUNTIME): Define using in-tree mono and mcs.
16090         (ILASM): New.
16091         (%.exe): Use $(ILASM).
16092
16093 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
16094
16095         * mini-ppc.c: adjust initial prolog size (bug #69691).
16096
16097 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
16098
16099         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
16100         #69664.
16101
16102 2004-11-17  Raja R Harinath  <rharinath@novell.com>
16103
16104         * Makefile.am (clean-local): Rename from 'clean'.
16105
16106 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16107
16108         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
16109         to mono_arch_is_int_overflow. 
16110         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
16111         SIGFPE events.
16112
16113 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16114
16115         * declsec.c|h: New files to support declarative security attributes.
16116         Added function to check if a method has (applicable) security.
16117         * mini.c|h: Add check for declarative security attributes in
16118         mono_method_check_inlining.
16119         * Makefile.am: Added declsec.c and declsec.h to the build.
16120
16121 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
16122
16123         * mini.c, mini.h: update to keep dynamic code info per-domain.
16124
16125 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16126
16127         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
16128         (mini_init): Get rid of it from here too.
16129
16130 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
16131
16132         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
16133         implemented OP_RETHROW (patch by Geoff Norton
16134         <gnorton@customerdna.com>).
16135
16136 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
16137
16138         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
16139         between appdomains.  Fixes appdomain-unload on PPC.
16140
16141 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
16142
16143         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16144         mini-exceptions.c: handle the new wrapper types.
16145         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
16146         token value as a MonoClass* when compiling a wrapper.
16147         mono_jit_create_remoting_trampoline now takes an additional
16148         MonoRemotingTarget parameter.
16149         
16150 2004-11-10  Martin Baulig  <martin@localhost>
16151
16152         * mini.c (mono_method_to_ir): Use `generic_container->context'
16153         rather than creating a new one.
16154
16155 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16156
16157         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
16158
16159         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
16160
16161 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16162
16163         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
16164         the experimental aot cache stuff.
16165
16166 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16167
16168         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16169         mini-exceptions.c: update to exception clause structure changes.
16170
16171 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16172
16173         * exceptions-x86.c (throw_exception): Fix warnings.
16174
16175         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
16176         for OP_RETHROW.
16177
16178 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16179
16180         * exceptions-sparc.c (get_throw_exception): Really fix this.
16181
16182 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16183
16184         * tramp-*.c: we no longer support icalls without wrappers, so
16185         a bit of code can be removed here
16186
16187 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
16188
16189         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
16190         patch.
16191
16192         * cpu-sparc.md: Add op_rethrow.
16193
16194         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
16195
16196         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
16197
16198         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
16199         * mini-ops.h: Add OP_RETHROW.
16200
16201         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
16202
16203         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
16204
16205 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16206         
16207         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
16208         Makes the output much easier to read
16209
16210 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
16211
16212         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
16213         prevents another huge leak when compiling with ssa. Secondly, the
16214         performance of doing this rather than freeing the lists is much
16215         better. GList does a lock every time you allocate a list link,
16216         so that it can use a memory pool. So, it is better to just use
16217         a memory pool of our own.
16218         
16219         * ssa.c, linear-scan.c: replace g_list_remove_link with
16220         g_list_delete.  The remove one does not free the GList, so we were
16221         leaking memory. On -O=all --compile-all with corlib, this cut down
16222         3 MB of allocations.
16223
16224 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16225
16226         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
16227
16228         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
16229
16230         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
16231         into a new function mono_create_jit_trampoline ().
16232
16233 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16234
16235         * trace.c (get_spec): Allow tracing of classes without a namespace.
16236
16237 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
16238
16239         * mini.c: Fix pointer overwrite in mini_method_compile.
16240
16241 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
16242
16243         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
16244         The darwin ABI needs some special handling for 1 and 2 byte structs
16245         Lets use lbz/lhz instead of lwz everywhere.
16246         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
16247         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
16248         Use stb/sth for the former, and put the latter always on stack instead of in
16249         argument registers.
16250
16251 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
16252
16253         * trace.c (is_filenamechar): Add '_'.
16254
16255 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
16256
16257         * mini-s390.c: Fix prolog length to allow for large trace requirements.
16258
16259         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
16260
16261 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
16262
16263         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
16264         depends on libmonogc. Fixes #68805.
16265
16266 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
16267
16268         * mini.c (mono_jit_free_method): Provide extra information for
16269         this error.  Currently this leaks, but will be turned into a
16270         developer option in the future.
16271
16272 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
16273
16274         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
16275
16276 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16277
16278         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
16279         boundary. Fixes reading of PATCH_INFO_R4 and R8.
16280         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
16281
16282 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
16283
16284         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
16285         trampolines for AOT code.
16286
16287 2004-10-22    <vargaz@freemail.hu>
16288
16289         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16290         constructed types. Fixes #68136.
16291
16292 2004-10-21  Martin Baulig  <martin@ximian.com>
16293
16294         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16295         if it returns true, unwind the stack to the call instruction.
16296
16297 2004-10-21    <vargaz@freemail.hu>
16298
16299         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16300
16301         * mini.h: Bump AOT version number.
16302
16303         * objects.cs: Add another test for unbox trampolines.
16304
16305         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16306         valuetype methods.
16307
16308 2004-10-20    <vargaz@freemail.hu>
16309
16310         * driver.c: Add SHARED to the set of optimizations tested.
16311
16312         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16313
16314         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16315         used by CEE_NEWARR.
16316
16317         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16318
16319 2004-10-20  Martin Baulig  <martin@ximian.com>
16320
16321         * mini-exceptions.c (mono_handle_exception): Call
16322         mono_debugger_handle_exception() to tell the debugger about
16323         catch/finally clauses.
16324
16325 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16326
16327         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16328
16329         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16330         #68447.
16331
16332 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16333
16334         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
16335         methods as their native size, fixed bug #57543, #57545.
16336         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16337         This saves a temporary register and mullw call down into 1 (minor perf
16338         increase for cases like sum = sum * 5;  This use to translate into:
16339             li r11,5
16340             mullw r28,r28,r11
16341         It now translates to
16342             mulli r28,r28,5
16343
16344 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
16345
16346         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
16347         #68388.
16348
16349 2004-10-11  Martin Baulig  <martin@ximian.com>
16350
16351         * mini.c (mono_method_to_ir): If we're a generic method, get the
16352         MonoGenericContainer from our MonoMethodNormal and create a
16353         MonoGenericContext from it.
16354
16355 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16356
16357         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16358
16359         * basic-long.cs: Add test for checked i8->i2 cast.
16360
16361 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16362
16363         * inssel-ppc.brg: added a couple of speedup rules.
16364
16365 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16366
16367         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16368         to speed up rebuilds.
16369
16370 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16371
16372         * mini-s390.c: Minor fix to OP_OR_IMM.
16373
16374 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16375
16376         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16377         better. Fixes appdomain-unload.exe on sparc.
16378
16379 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16380
16381         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16382         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16383         see bug 67324.
16384
16385 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16388
16389 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16390
16391         * mini.c: Always generate a field read/write wrapper for members
16392         of the class MarshalByRefObject since the actual instance could
16393         be a CBO.
16394
16395 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16396
16397         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16398
16399 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16400
16401         * driver.c mini.h trace.c: Move the setting of the main assembly into
16402         a separate function called mono_trace_set_assembly () and call it after
16403         actually loading the main assembly. Fixes #66872.
16404
16405 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16406
16407         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16408         using the code manager.
16409
16410 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16411
16412         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16413
16414 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16415
16416         * cpu-amd64.md: Fix bug in previous patch.
16417         
16418         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16419         #66650.
16420
16421 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16422
16423         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16424         mini-exceptions.c: updates for changed stack walk interface.
16425
16426 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16427
16428         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16429
16430 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16431
16432         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16433
16434 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16435
16436         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16437         since assemblies can't be unloaded.
16438         
16439 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16440
16441         * cpu-amd64.md: Fix more instruction lengths.
16442
16443         * cpu-amd64.md: Fix lengths of some instructions.
16444
16445 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16446
16447         * inssel.brg: Make the array ldelema check aot friendly.
16448
16449 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16450
16451         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16452
16453         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16454
16455 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16456
16457         * mini-x86.c: Fix build.
16458
16459         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16460         mono_type_get_underlying_type () helper function to simplify code.
16461         
16462 2004-09-09  Martin Baulig  <martin@ximian.com>
16463
16464         * mini-amd64.c: Don't access `type->data.klass' directly, call
16465         mono_class_from_mono_type() instead since the type may be a
16466         generic instance.
16467
16468 2004-09-09  Martin Baulig  <martin@ximian.com>
16469
16470         * mini-amd64.c (get_call_info): Fix support for generic instances.
16471         (add_valuetype): Use mono_class_from_mono_type() to get the class
16472         since we can be a generic instance.
16473
16474 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16475
16476         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16477
16478 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16479
16480         * liveness.c: reset spill costs on each scan: bug 62107
16481
16482 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16483
16484         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16485         unnecessary line that doesn't compile
16486
16487 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16488
16489         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16490         trampolines, make them call an error function so people can fix their
16491         code.
16492
16493 2004-09-06  Martin Baulig  <martin@ximian.com>
16494
16495         * mini.c (mono_method_to_ir): When initializing locals, handle a
16496         generic instances like a valuetype if it's a valuetype and like a
16497         class if it's a class.
16498
16499 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16500
16501         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16502         stack. Fixes #64674.
16503
16504         * exceptions.cs: Add test for unwinding of call arguments.
16505
16506 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16507
16508         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16509         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16510         set the carry/borrow flag). The sparc and s390 implementations
16511         can now use optimized versions (and simplify the code). ppc bugfixes.
16512
16513 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16514
16515         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16516
16517 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16518
16519         * inssel-amd64.brg: Remove leftover 32 bit rule.
16520
16521         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16522
16523 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16524
16525         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16526         mono_arch_find_jit_info functions into a new function. Fix a memory
16527         leak.
16528
16529         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16530         refactored code.
16531         
16532 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16533
16534         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16535         as well.
16536         
16537         * exceptions.cs: Add array size tests.
16538
16539         * mini.c: Allocate a separate icall wrapper for each arity of 
16540         mono_array_new_va. Fixes #59509.
16541
16542         * exceptions.cs: Add testcase for 64578.
16543
16544         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16545
16546         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16547         
16548 2004-09-02  Martin Baulig  <martin@ximian.com>
16549
16550         * mini.c (mono_method_to_ir): When initializing the locals, call
16551         handle_initobj() on the generic instance itself, not its
16552         underlying type.
16553
16554 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16555
16556         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16557         MonoJitInfo for dynamic methods.
16558
16559         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16560
16561         * mini.c: Add support for freeing JIT data for dynamic methods.
16562         
16563 2004-09-01  Martin Baulig  <martin@ximian.com>
16564
16565         * mini-x86.c (is_regsize_var): Added support for generic
16566         instances.
16567         (mono_arch_emit_prolog): Make this compile again, use
16568         `x86_push_imm_template (code)'.
16569
16570 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16571
16572         * mini-x86.c: make all push_imm instructions that get
16573         patched always emit the long form
16574
16575 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16576
16577         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16578         in a per-domain hash.
16579
16580         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16581         types.
16582
16583 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16584
16585         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16586         work.
16587         
16588         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16589         work.
16590
16591         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16592         Beginnings of SSE2 support.
16593
16594         * exceptions.cs: Add more tests for checked int<->uint casts.
16595
16596 2004-08-28  Martin Baulig  <martin@ximian.com>
16597
16598         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16599         generic instances.
16600
16601         * mini.c
16602         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16603         Handle generic instances recursively.
16604
16605 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16606
16607         * iltests.il: test for conv.u8 on a constant
16608
16609 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16610
16611         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16612         LCONV_x4 (shrun_32 (membase)).
16613
16614 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16615
16616         * inssel-x86.brg: c&p rules for push/setret of long
16617
16618 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16619
16620         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16621         compare (regvar, base)
16622
16623         * inssel-x86.brg: more burg love
16624
16625         * inssel.brg: more cleanup
16626
16627         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16628
16629 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16630
16631         * basic-long.cs, basic-calls.cs: new tests for optimization.
16632
16633 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16634
16635         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16636         patch.
16637
16638 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16639
16640         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16641         
16642 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16643
16644         * inssel.brg (mini_emit_memcpy): use 
16645         NO_UNALIGNED_ACCESS to disable memcpy optimization
16646
16647 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16648
16649         * mini-amd64.c: Handle generic types in various places.
16650
16651         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16652
16653 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16654
16655         * mini.c (handle_box): Fix warning.
16656
16657         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16658
16659         * mini-amd64.h: Enable the emit_state optimization.
16660
16661         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16662
16663         * mini-amd64.c: Add some new 64 bit peephole opts.
16664
16665         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16666
16667         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16668
16669         * mini-amd64.c: Register allocator fixes.
16670
16671         * mini.c: Add an optimization to emit_state to avoid allocation of new
16672         registers on some platforms.
16673
16674 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16675
16676         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16677
16678         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16679         allocation. Fixes #63085.
16680
16681         * basic-long.cs: Add new regression test.
16682
16683         * mini-amd64.c: Register allocator improvements.
16684
16685 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16686
16687         * mini-amd64.c (read_tls_offset_from_method): Add another code
16688         sequence.
16689
16690         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16691         instruction sequence for nullifying class init trampolines.
16692
16693         * objects.cs: Add new regalloc test.
16694
16695         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16696
16697 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16698
16699         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16700         
16701         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16702         arguments.
16703
16704         * driver.c: Fix profiling after TLS changes.
16705         
16706         * driver.c (mono_main): Set mono_stats.enabled if needed.
16707
16708         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16709         CEE_BOX.
16710
16711 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16712
16713         * mini-x86.c: use a 1 op rather than a 2 op tls access
16714         instruction -> faster.
16715
16716 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16717
16718         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16719         x86 backend.
16720
16721 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16722
16723         * exceptions-sparc.c (throw_exception): fix typo
16724
16725 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16726
16727         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16728         set tree->dreg correctly with tls. Allow any
16729         register to be used.
16730
16731         * mini-x86.c (read_tls_offset_from_method): add new code
16732         generation pattern seen with GCC.
16733
16734
16735 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16736
16737         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16738         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16739         exceptions-sparc.c: fix some performance issues in exception
16740         handling and setting of the stack trace for exceptions that were
16741         already thrown.
16742
16743 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16744
16745         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16746         x86 backend.
16747         
16748         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16749         registers.
16750
16751 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16752
16753         This patch inlines tls access, when possible.
16754         
16755         * mini.h: new arch functions for TLS intrinsics.
16756         All platforms updated with a stub.
16757
16758         * mini.c: use the new intrinsics
16759
16760         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16761         arch specific intrinsic for tls variables
16762
16763 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16764
16765         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16766         under windows.
16767
16768 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16769
16770         * mini.c: thread local allocation
16771
16772 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16773
16774         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16775
16776         * Makefile.am: Link against the static version of libmonogc.
16777         
16778         * Makefile.am: Link the static versions of the convenience libraries
16779         into the mono executable.
16780
16781         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16782
16783 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16784
16785         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16786         on integer overflow.
16787
16788         * mini-amd64.c: Reorganize function call code.
16789
16790         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16791
16792 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16793
16794         * inssel-x86.brg: use xor eax,eax.
16795         
16796         * basic.cs: new tests
16797
16798 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16799
16800         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16801         in exception throwing code.
16802         
16803 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16804
16805         * inssel-x86.brg: use xor esi,esi.
16806
16807 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16808
16809         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16810         can trace methods compiled during mini_init () too.
16811
16812         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16813         CEE_CONV_U4.
16814
16815 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16816
16817         * Makefile.am: static link on x86 (r=zoltan)
16818
16819 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16820
16821         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16822         code since it causes some programs to fail.
16823
16824 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16825
16826         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16827
16828 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16829
16830         * mini.c: ovfops_op_map - add STACK_OBJ case for
16831         CONV_I 
16832         * basic.cs: add test_0_pin_string as test
16833         case for above.
16834
16835 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16836
16837         * Makefile.am: build C# if srcdir != builddir
16838
16839 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16840
16841         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16842         fall-through blocks.
16843
16844 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16845
16846         * driver.c: enable loop by default again and include abcrem in -O=all.
16847
16848 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16849
16850         * iltests.il: Add some localloc tests.
16851
16852         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16853
16854         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16855         Fixes #62574.
16856
16857         * inssel-amd64.brg: Add some optimizations.
16858
16859         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16860         for gcc-3.4.
16861
16862         * Makefile.am: Statically link mono against libmono on AMD64.
16863         
16864         * mini-amd64.c inssel-amd64.brg: Optimizations.
16865
16866 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16869
16870         * tramp-amd64.c: Patch calling code in trampolines.
16871
16872 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16873
16874         * mini-amd64.c: pinvoke struct passing fixes.
16875
16876 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16877
16878         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16879         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16880
16881 2004-08-05  Duncan Mak  <duncan@ximian.com>
16882
16883         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16884         CEE_LDELEM_ANY.
16885
16886 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16887
16888         * mini-amd64.c (emit_move_return_value): Move return value for normal
16889         calls too.
16890
16891 2004-08-05  Martin Baulig  <martin@ximian.com>
16892
16893         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16894         `type->type'; just modify `type' itself when dealing with enums
16895         and generic instances.
16896         (check_call_signature): Make `simple_type' a `MonoType *'.
16897
16898 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16899
16900         * mini.c: Use OP_PADD to add offsets to addresses.
16901
16902         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16903
16904 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16905
16906         * mini-sparc.c (mono_arch_emit_epilog): fix check
16907         for folding last op into restore instruction
16908
16909 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16910
16911         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16912         helper methods using the code manager.
16913         
16914         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16915
16916         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16917
16918 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16919         
16920         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16921           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16922
16923         * mini-s390.c: fix tail processing
16924
16925 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16926
16927         * mini-ppc.c: mul.ovf.un exception name fix.
16928
16929 2004-08-03  Martin Baulig  <martin@ximian.com>
16930
16931         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16932         instances; before jumping to `handle_enum', also modify `ptype'.
16933
16934 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16935
16936         * cpu-sparc.md: fcall maximal length too small.
16937
16938 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16939
16940         * mini-amd64.c mini.h: Add initial support for passing/returning 
16941         structures to/from pinvoked methods.
16942
16943 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16944
16945         * mini-ppc.c: reg allocator fix.
16946
16947 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16948
16949         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16950
16951         * inssel.brg: Optimize memset on 64 bit machines.
16952
16953         * mini-amd64.c: Fix some vararg cases.
16954
16955 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16956
16957         * mini-s390.c: Corrected macro in emit_float_to_int
16958
16959         * s390-abi.cs: Tests to exercise the s390 ABI
16960
16961 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16962
16963         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16964         caller saved regs.
16965
16966         * basic.cs: Add a test for add.ovf.un.
16967
16968 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16969
16970         * mini-sparc.c: add case for OP_IDIV_UN
16971
16972 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16973
16974         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16975         
16976         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16977
16978 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16979
16980         * basic.cs: regression tests.
16981
16982         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16983         regressions.
16984
16985 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16986
16987         * basic.cs: Add a new test.
16988
16989         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16990         and AOT. Various fixes and optimizations.
16991
16992         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16993
16994 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16995
16996         * mini-ppc.c: make sure temp regs are not used for global reg
16997         allocation.
16998
16999 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17000
17001         * cpu-sparc.md: conv_i8 fix for 64bits
17002
17003         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17004
17005 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17006         
17007         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17008         add opcode for cmp BYTE PTR [eax], imm.
17009
17010         * inssel.brg: Make memcpy and memset takes bases.
17011
17012 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17013
17014         * *-amd64.*: More AMD64 work.
17015         
17016 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17017
17018         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17019         add a compare-not-equal opcode.
17020         
17021 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17022
17023         * mini.c: Use mono_init_from_assembly instead of mono_init.
17024         
17025 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17026
17027         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
17028
17029         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
17030
17031         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
17032
17033         * inssel.brg: 64 bit fixes.
17034
17035         * mini.h (MonoCallInst): Add some AMD64 specific data.
17036
17037         * mini.h: Add some OP_P opcodes.
17038
17039 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17040
17041         * basic.cs: tests for 61797 and 61740
17042
17043 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17044
17045         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
17046         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
17047
17048 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
17049
17050         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
17051
17052         * *-amd64*.*: Ongoing AMD64 work.
17053
17054 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
17055
17056         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
17057
17058         * *-amd64*: Ongoing AMD64 work.
17059
17060         * mini-arch.h: Add AMD64 support.
17061
17062         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
17063
17064         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
17065
17066         * mini-ops.h: Add new opcodes.
17067
17068         * Makefile.am: Add AMD64 support.
17069
17070         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
17071         rules into the inssel-long*.brg files.
17072
17073         * *-amd64.*: Add beginnings of AMD64 backend.
17074
17075 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
17076
17077         * mini.c (print_dfn): commenting out the code that prints
17078         the cil. With -O=deadce, this makes -v -v crash.
17079         
17080         * cpu-pentium.md: make checkthis have a length of 2
17081
17082 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
17083
17084         * mini-sparc.h: fix implementations of __builtin
17085         functions for Sun compiler for V9.
17086
17087 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
17088
17089         * mini.c: use the new stelem.ref wrapper
17090         * exceptions.cs, arrays.cs: new stelem.ref tests
17091
17092 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17093
17094         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
17095         new XSP should work with these changes).
17096
17097 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
17098         
17099         * inssel-{long32,x86,}.brg: trivial optimizations.
17100         
17101 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17102
17103         * mini.c: load value when emitting box operation in
17104         constrained calls.
17105
17106 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
17107
17108         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
17109         is one byte shorter than cmp DWORD PTR [eax], 0.
17110
17111 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17112
17113         * inssel-ppc.brg: arguments on the stack are always
17114         relative to the stack pointer (spotted by Neale Ferguson).
17115
17116 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17117
17118         * exceptions-x86.c: delay appending the method name to the trace until
17119         after mono_jit_info_table_find is called, as this gets the real
17120         MonoMethod.
17121
17122 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
17123
17124         * aot.c: register roots
17125
17126 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17127
17128         * aot.c : I could just use PLATFORM_WIN32 flag.
17129
17130 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17131
17132         * aot.c : Reverting the previous fix. This time it broke linux build.
17133
17134 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17135
17136         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
17137
17138 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17139
17140         * mini.c (handle_stack_args): Remove some more debugging code.
17141         
17142         * mini.c (handle_stack_args): Remove debug output left in by mistake.
17143
17144         * driver.c mini.h aot.c: Allow additional options to be specified with
17145         --aot and pass them to mono_compile_assembly.
17146
17147         * aot.c: Add experimental code to AOT compile all loaded assemblies
17148         on demand and save the code into a cache in the filesystem.
17149
17150         * aot.c: Add support for more wrapper methods.
17151         
17152         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
17153         58863.
17154
17155         * cpu-*.md: Remove removed opcodes.
17156
17157         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
17158         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
17159         related icalls to marshal.c.
17160
17161 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
17162
17163         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
17164
17165         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
17166
17167         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
17168
17169 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17170         * liveness.c: If liveness is recomputated we need to reset the information
17171         for each variable. This way, if the liveness range has been narrowed
17172         by optimizations that happened after the last computation, we can return
17173         a smaller range.
17174         
17175         For example, if you have
17176         
17177         {
17178                 int i = 0;
17179                 
17180                 // Tons of code that does not affect i
17181                 
17182                 i = foo ();
17183                 ...
17184         }
17185         
17186         i = 0 is dead code and will be removed by SSA. However, when
17187         linear scan gets to the code, i will still appear to be live
17188         throughout the entire block. This prevents good register allocation.
17189
17190 2004-07-06  Martin Baulig  <martin@ximian.com>
17191
17192         * debug-mini.c (mono_debug_init_method): Allow
17193         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
17194         (mono_debug_add_icall_wrapper): New method.
17195
17196         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
17197
17198 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17199
17200         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
17201         optimization.
17202
17203 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17204
17205         * aot.c (mono_aot_load_method): Fix loading of debug info.
17206
17207 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17208
17209         * aot.c: Add logging support.
17210
17211 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17212
17213         * mini.h: Add prototype for mono_print_method_from_ip.
17214
17215         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
17216
17217         * inssel.brg: 64 bit fixes.
17218
17219         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
17220         inssel-long32.brg.
17221
17222         * Makefile.am: Add SPARC64 support.
17223
17224 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17225
17226         * aot.c: Fix alignment problems on 32 bit platforms.
17227
17228 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17229
17230         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
17231         SPARC64.
17232
17233         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
17234         problems.
17235
17236         * mini.h: Bump AOT file version. Some 64 bit fixes.
17237
17238 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * inssel-sparc.brg: Add new rule to avoid register moves.
17241
17242         * inssel.brg: Add ldind_to_load_membase helper function.
17243
17244 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17245
17246         * mini.c: OffsetToStringData intrinsic.
17247         
17248 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17249
17250         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
17251
17252         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
17253         regression tests.
17254
17255         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
17256 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17257
17258         * mini.c: reinstated mono_compile_get_interface_var()
17259         on x86, too, since the change breaks the Gtk# build there as well.
17260
17261 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17262
17263         * driver.c: remove loop from the default optimizations: it seems to
17264         interact badly with some of the other options (see bug #60613).
17265
17266 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
17267
17268         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
17269         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
17270
17271 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
17272
17273         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
17274         vararg-using methods.
17275
17276 2004-06-21  Martin Baulig  <martin@ximian.com>
17277
17278         * mini/mini-exceptions.c
17279         (mono_handle_exception): Added `gpointer original_ip' argument.
17280         After calling mono_unhandled_exception(), call
17281         mono_debugger_unhandled_exception() and if that returns true,
17282         restore the context and return.
17283
17284 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17285
17286         * mini-ppc.c: prefer the use of relative branches so
17287         they won't need to be patched in aot code (patch from Patrick Beard).
17288
17289 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17290
17291         * aot.c: patch from Patrick Beard to make the output assembly
17292         more correct for the MacOSX assembler. Small tweak to
17293         generate sane images on Linux/PPC, too.
17294
17295 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17296
17297         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17298         case until bug #59509 is fixed (shows up in #60332).
17299
17300 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17301
17302         * mini.c: make sure the needed wrappers are compiled, too, with
17303         precomp.
17304
17305 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17306
17307         * driver.c: remove NPTL reference in --version output.
17308
17309 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17310
17311         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17312         generate valid assembly for the Mach-O assembler.
17313
17314 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17315
17316         * driver.c: don't include abcrem in the all optimization specifier
17317         since it slows down jit compilation too much for now.
17318
17319 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17320
17321         * mini.c: use BIGMUL only if both operands have the same signage.
17322         * iltests.il: Test for bug 60056. (errors related to signage in
17323         BIGMUL).
17324
17325         r=lupus.
17326
17327 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17328
17329         * mini.c, aot.c: memory leak fixes.
17330
17331 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17332
17333         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
17334
17335 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
17336
17337         * Makefile.am: remove the -static hack completely, it links in
17338         statically glib as well.
17339
17340 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
17341
17342         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
17343         * exceptions.cs: make it compile with new mcs/csc.
17344
17345 2004-06-03 Massimiliano Mantione <massi@ximian.com>
17346         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
17347         and added relevant test case.
17348
17349 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17350
17351         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
17352         regressions in gtk-sharp.
17353
17354 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17355
17356         * exceptions.cs: New regression tests.
17357
17358         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17359
17360 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17361
17362         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17363
17364 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17365
17366         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17367
17368         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17369
17370 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17371
17372         * mini.c (mono_jit_runtime_invoke): Init class in this
17373         method instead of trusting mono_jit_compile_method to
17374         do the work (because wrappers can be in object class)
17375
17376 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17377
17378         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17379
17380         * basic-long.cs: New regression test.
17381
17382 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17383
17384         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17385         and div/rem checks.
17386
17387 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17388
17389         * Makefile.am: fix miguel's change to build mono statically against
17390         libmono (track build dependencies).
17391
17392 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17393
17394         * cfold.c: Some glib versions do not have G_MININT32.
17395
17396 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17397
17398         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17399         with precision of tan, atan, sin and cos, and implemented related
17400         regressions tests (fixes bug 54467, but one new problem appeared and
17401         is not fixed yet).
17402
17403 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17404
17405         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17406
17407         * exceptions.cs: Add test for constant folding && division by zero.
17408
17409         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17410         since driver.c is in libmono too, so the optimization was useless.
17411
17412         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17413         variable to driver.c so the compiler can emit more efficient code to
17414         access them.
17415
17416 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17417
17418         * Makefile.am: don't distribute generated inssel.[ch] files.
17419
17420 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17421
17422         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17423         into the default appdomain. Fixes #58707.
17424
17425         * jit-icalls.c: Remove the broken approximation for truncl, doing
17426         no conversion is better.
17427
17428         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17429         Fixes #58863.
17430
17431 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17432
17433         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17434         of the mcrxr instruction which is not available on some processors
17435         even if it's documented to be. Implement add and sub overflow correctly
17436         (still not complete for long unsigned). Speed up icalls a bit.
17437
17438 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17439
17440         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17441         we run .cctor in the current domain instead of target_domain.
17442         
17443         Fixes bug #58558, .cctor not being called in -O=shared.
17444
17445 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17446
17447         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17448
17449 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17450
17451         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17452         which can be done with an imm8, do it that way.
17453         (mono_arch_output_basic_block): ditto for a jmp
17454         (mono_arch_emit_prolog): Computate maximum offset of a label.
17455
17456 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17457
17458         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17459         now tries to allocate prefered physical reg's for virtual
17460         regs. This reduces the number of emited spills/loads with
17461         20-30% on our core assemblies.
17462
17463 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17464
17465         * jit-icalls.c: truncl() is not needed and trunc() is
17466         the correct thing to do anyway (bug #58287).
17467
17468 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17469
17470         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17471         if available.
17472
17473 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17474
17475         * driver.c: enable loop optimizations by default.
17476
17477 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17478
17479         * mini-x86.c: fix calc of max loop size when aligning loops start.
17480
17481 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17482
17483         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17484         the stack.
17485
17486 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17487
17488         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17489         should set carry.
17490
17491         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17492
17493         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17494         
17495         * mini.c (inline_method): Allways inline some wrappers even if the cost
17496         is too large. Fixes #58785.
17497
17498         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17499         
17500 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17501
17502         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17503         (crichton@gimp.org). Beginning of support for sparc/linux.
17504
17505         * mini-sparc.c: Optimize retrieval of LMF address.
17506
17507 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17508
17509         * exceptions-ppc.c:  handle alloca in methods with clauses.
17510
17511 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17512
17513         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17514
17515 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17516
17517         * mini.c: Delegate most of the abort signal work to 
17518           mono_thread_request_interruption, which also handles Stop and Suspend
17519           states.
17520
17521 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17522
17523         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17524         supports the save/restore lmf opcodes.
17525
17526 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17527
17528         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17529         by gcc-3.4 as well.
17530
17531         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17532
17533 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17534
17535         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17536         methods which contain array accesses.
17537
17538         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17539         boundaries. Fixes #58537.
17540
17541         * iltests.il: Add regression test for #58537.
17542
17543 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17544
17545         * mini-x86.c (mono_arch_local_regalloc): Last part of
17546         fix for bug #58633 (releasing register to early).
17547
17548 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17549
17550         * basic-long.cs: Add new regression test.
17551
17552 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17553
17554         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17555         register too early on the chain.
17556
17557 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17558
17559         * mini.c (create_helper_signature): Use a helper function to reduce
17560         the code which needs to be written. Also set the calling convention of
17561         icalls on windows. Fixes #57840.
17562
17563 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17564
17565         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17566         exceptions-ppc.c: added helper function to get the instruction address
17567         from a signal handler context.
17568
17569 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17570
17571         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17572         from gonzalo.
17573
17574 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17575
17576         * helpers.c: Add new env variable to pass args to objdump.
17577         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17578
17579 2004-05-17  Radek Doulik  <rodo@ximian.com>
17580
17581         * Makefile.am (common_sources): added abcremoval.h so it get
17582         disted and daily mono packages on go-mono.com will build again
17583
17584 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17585
17586         * abcremoval.c: Fixed coding style, added copyright header.
17587
17588         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17589
17590         * mini.h: Added prototype for abc removal main function.
17591
17592         * build_relations_propagation_table.pl: Added copyright header.
17593
17594 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17595
17596         * basic-long.cs: reg test for complex ceq_long bug.
17597
17598 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17599
17600         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17601         reg in long and clob case (bug #58343). Fixed/added comments.
17602
17603 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17604
17605         * mini.c (mono_jit_runtime_invoke): Follow new convention
17606         of calling the invoke method with an function pointer.
17607
17608 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17609
17610         * ChangeLog: Fix author of memory leak patch.
17611
17612 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17613
17614         * Makefile.am: fix make dist as well...
17615
17616
17617 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17618
17619         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17620         on archs where pointers are 4 bytes long.
17621
17622         * Makefile.am: Added abcremoval.c source file.
17623
17624         * abcremoval.c: Added abcremoval.c.
17625
17626         * abcremoval.h: Added abcremoval.h.
17627
17628         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17629
17630         * inssel.brg: Enabled bounds check removal.
17631
17632         * mini.c: Added support for abcrem optimization.
17633
17634         * mini.h: Added abcrem optimization label.
17635
17636         * driver.c: Added support for abcrem optimization.
17637
17638         * propagated_relations_table.def: Added propagated_relations_table.def.
17639
17640 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17641
17642         * mini.c, cfold.c: fix style.
17643
17644 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17645
17646         * mini.c: handle issue with the low-level implementation of
17647         some long opcodes (bug #54209).
17648
17649 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17650
17651         * basic.cs: test for my new cmov stuff.
17652
17653 2004-05-13      Patrik Torstensson
17654
17655         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17656         opt and added peephole documentation.
17657
17658 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17659
17660         * tramp-ppc.c: rewrote the generic trampoline code.
17661
17662 2004-05-11      Patrik Torstensson
17663
17664         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17665
17666 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17667
17668         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17669
17670         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17671         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17672
17673         * mini.c: Add new icalls for AsAny marshalling.
17674
17675 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17676
17677         * tramp-ppc.c, mini-ppc.c: more cleanups.
17678
17679 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17680
17681         * mini.c: no warnings.
17682
17683 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17684
17685         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17686
17687 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17688
17689         * mini.c: In the thread abort signal handler, if the thread is in the
17690         process of being stoped, don't throw the Abort exception, just stop the
17691         thread.
17692
17693 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17694
17695         * tramp-ppc.c: removed old code.
17696
17697 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17698
17699         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17700         do some simple speed optimizations on ppc.
17701
17702 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17703
17704         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17705         and large offsets in load/store.
17706
17707 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17708
17709         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17710         it causes regressions.
17711
17712 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17715         support.
17716
17717 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17718
17719         * jit-icalls.c: remove warnings.
17720         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17721         speedups for unsafe code.
17722
17723 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17724
17725         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17726
17727 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17728
17729         * basic-calls.cs: Add new regression test.
17730
17731         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17732         more portable.
17733
17734         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17735
17736         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17737         is no longer used.
17738
17739 2004-05-06      Patrik Torstensson
17740
17741         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17742         long reg allocation in any reg (not only eax:edx) and implemented 
17743         long shl/shr ops in asm instead of helpers.
17744
17745 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17746
17747         * mini-sparc.h: Fix warnings.
17748
17749         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17750         stack.
17751
17752         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17753         separate statement for clarity.
17754
17755         * mini-sparc.c: Update status.
17756
17757 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17758
17759         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17760         here.
17761
17762 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17763
17764         * inssel-ppc.brg: another small pre-release workaround:
17765         we don't do overflow detection for long_sub_un.
17766
17767 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17768
17769         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17770         (also works around a weird ppc bug: 57957).
17771
17772 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17773
17774         * tramp-ppc.c: trampoline fixes.
17775
17776 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17777
17778         * mini-ppc.c: fixed typos.
17779
17780 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17781
17782         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17783         at the top of the stack. Fixed typos. Use a frame registers
17784         for all the methods with exception clauses.
17785
17786 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17787
17788         * exceptions-ppc.c: restore fp registers.
17789
17790 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17791
17792         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17793         order from the stack top (moved the stack room to save the
17794         return value for trace after the param area). Fixed corruption
17795         in restoring registers on unwind.
17796
17797 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17798
17799         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17800
17801 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17802
17803         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17804         and prolog/epilog for methods that use it. Allow
17805         enough param area room for varargs methods. Fix miguel's
17806         breakage in exception handling.
17807
17808 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17809
17810         * Makefile.am: run genmdesc only on current arch.
17811
17812 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17813
17814         * exceptions-x86.c:
17815         * mini-x86.h: fix the build on windows.
17816
17817 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17818
17819         * 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.
17820
17821         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17822
17823         * mini-exceptions.c: New file.
17824         
17825         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17826         Move some parts of the x86 exception handling code to an 
17827         arch-independent file so it can be shared with other ports.
17828
17829 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17830
17831         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17832
17833 2004-04-26  David Waite  <mass@akuma.org>
17834
17835         * driver.c: remove comma from end of enumeration declaration
17836
17837 2004-04-26  Jackson Harper  <jackson@ximian.com>
17838
17839         * driver.c: parse config file before loading first assembly. This
17840         allows the user gac to be enabled/disabled. 
17841         
17842 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17843
17844         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17845         simpler mechanism: we do not care what is encoded initially
17846         (branch absolute or relative), we care about the code and its
17847         target.  I kept the old code for reference for now.
17848
17849         The new code tries first to determine if the jump is anywhere in
17850         the -/+32 absolute meg range, if it succeeds, it encodes using the
17851         absolute branch;  If not, it tried to find something in the
17852         relative range, if not, it uses the handle_thunk code. 
17853
17854 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17855
17856         * exceptions-ppc.c: use the correct ip register on macosx.
17857
17858 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17859
17860         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17861
17862 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17863
17864         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17865         Raise exception on integer divide by zero by hand since the hw
17866         doesn't support it. Handle NaNs in FP compares.
17867
17868 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17869
17870         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17871         code reducing duplication between the platforms and enabled
17872         signal exception handling (on linux for now).
17873
17874 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17875
17876         * exceptions-ppc.c: more macosx support.
17877
17878 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17879
17880         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17881
17882 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17883
17884         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17885
17886 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17887
17888         * iltests.il: more tests.
17889
17890 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17893         vars as well.
17894
17895 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17896
17897         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17898
17899 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17900
17901         * liveness.c: Mark variables as volatile in all basic blocks reachable
17902         from exception clauses.
17903
17904 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17905
17906         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17907         inlining.
17908
17909 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17910
17911         * iltests.il, basic.cs: more tests for regalloc.
17912
17913 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17914
17915         * iltests.il: Some tests for register allocation modifications
17916         I have locally.
17917
17918 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17919
17920         * exceptions.cs: Add regression test for bug #56782.
17921
17922         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17923         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17924         the beauty of fixing the same thing in 5 different files...
17925
17926 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17929         methods.
17930
17931 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17932
17933         * mini.c: Add support for STRWLPARRAY marshalling convention.
17934
17935 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17936
17937         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17938         to init the context to setup the regs pointer).
17939
17940 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17941
17942         * exceptions-ppc.c: more exceptions work.
17943
17944 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17945
17946         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17947         not allowed.
17948
17949 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17950
17951         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17952         can use the memory directly.
17953
17954         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17955
17956         add x86_add_membase, x86_sub_membase, x86_mul_membase
17957
17958 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17959
17960         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17961         GENERAL_REGS they were also hardcoded for all PPC ports.
17962
17963         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17964
17965         Remove hard-coded limit for floating point registers, use
17966         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17967
17968         Notice that in MacOS X calling conventions you can fit a lot more
17969         floating point values in registers, so I should update the PInvoke
17970         test to excercise the passing of floating point values on the
17971         stack (currently broken).
17972         
17973 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17974
17975         * tramp-ppc.c (create_trampoline_code): Added
17976         JUMP_TRAMPOLINE_SIZE. 
17977         (ppc_magic_trampoline): Follow the pattern from
17978         x86_magic_trampoline: if code is set to zero, return. 
17979         (create_trampoline_code): Always pass MonoMethod to the jump
17980         trampoline, before it was passing a null.
17981         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17982         share the code with mono_arch_create_jit_trampoline. 
17983
17984         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17985         implemented.
17986         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17987         implemented.  
17988
17989         * cpu-g4.md: Added length for jmp instruction, the worst case
17990         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17991         for save_lmf).
17992
17993 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17994
17995         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17996
17997 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17998
17999         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18000         before each IL instruction.
18001
18002         * mini.c (CEE_BOX): Fix warnings.
18003
18004 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18005
18006         * mini.c: removed a few unused vars and extra whitespace.
18007
18008 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18009
18010         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18011         checks.
18012         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18013         index.
18014         (OP_GETCHR): use the above
18015         (CEE_LDELEMA): use the above.
18016
18017         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18018         version of the generic impl.
18019         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18020         (CEE_LDELEMA): use the above.
18021
18022 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18023
18024         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
18025         Fixes #56317.
18026
18027         * iltests.il: Added new regression test for #56317.
18028
18029 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18030
18031         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
18032         under NetBSD. Fixes #56450.
18033
18034         * liveness.c (update_gen_kill_set): Fix previous patch.
18035
18036 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18037
18038         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
18039
18040 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18041
18042         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
18043         ldsfld and ldsflda.
18044
18045         * inssel-sparc.brg: Add more optimizations.
18046
18047         * mini-sparc.c: Replace multiply/divide with shifts if possible.
18048
18049 2004-04-01  Martin Baulig  <martin@ximian.com>
18050
18051         * mini.c (handle_box): New static function; moved the
18052         implementation of CEE_BOX here.
18053         (mono_method_to_ir): Added `constrained_call' variable.
18054         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
18055         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
18056         mono_method_get_constrained() to get the method.
18057
18058 2004-04-01  Martin Baulig  <martin@ximian.com>
18059
18060         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
18061         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
18062         (mono_method_to_ir): We don't need these macros anymore since
18063         mono_class_get_full() already takes care of it. 
18064
18065 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18066
18067         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
18068         use @function (as doesn't accept #function here) and check the return
18069         value of system and stop if fails.
18070
18071 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18072
18073         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
18074
18075 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
18076
18077         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
18078
18079         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
18080
18081         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
18082         #56223.
18083
18084         * basic-long.cs: Add test for negation of Int64.MinValue.
18085
18086 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
18087
18088         * mini-sparc.c: Update status.
18089
18090         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
18091
18092         * exceptions-sparc.c: Fix return value in filters.
18093
18094         * inssel-sparc.brg: Fix register allocation in some rules.
18095
18096 2004-03-28  Martin Baulig  <martin@ximian.com>
18097
18098         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
18099         if neccessary.  
18100
18101 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18102
18103         * mini-x86.c (mono_arch_patch_code): Fix warnings.
18104         
18105         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
18106         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
18107         remove unused conv_u4 opcode.
18108
18109         * mini-x86.c: Remove valgrind workaround since it slows down things
18110         even when mono is not run under valgrind.
18111
18112 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
18113
18114         * mini-sparc.c: Update status.
18115
18116         * inssel-sparc.brg: Add some optimizations.
18117
18118         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
18119         future delay slot filling. Add support for varargs, tail calls and JMP.
18120
18121         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
18122         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
18123
18124         * inssel.brg: Fix register allocation in OP_ARGLIST.
18125
18126         * inssel.brg: Fix warnings.
18127
18128 2004-03-25  Martin Baulig  <martin@ximian.com>
18129
18130         * mini.c (inflate_generic_field): Removed.
18131         (mini_get_method): Removed, use mono_get_method_full(),
18132         (mini_get_class): Removed, use mono_class_get_full().
18133         (mono_method_to_ir): Pass our generic context to
18134         mono_field_from_token().        
18135
18136 2004-03-25  Martin Baulig  <martin@ximian.com>
18137
18138         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
18139         of a `MonoMethod *'.
18140         (mini_get_method): Take a `MonoGenericContext *' instead
18141         of a `MonoMethod *'.
18142         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
18143         a new local variable called `generic_context' which holds the
18144         current `MonoGenericContext *'; use it to lookup things.
18145
18146 2004-03-24  Martin Baulig  <martin@ximian.com>
18147
18148         * mini.c (mini_get_class): New static method; if we're inside a
18149         generic instance, inflate the class if neccessary.
18150         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
18151
18152 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18153
18154         * iltests.il: New regression test for #55976.
18155
18156         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
18157         #55976.
18158
18159 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18160
18161         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
18162         output.
18163
18164 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18165
18166         * liveness.c: Consider SSA stores as well as loads when making vars
18167         volatile.
18168
18169         * exceptions.cs: New regression tests for register allocation.
18170         
18171 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18172
18173         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
18174         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
18175           domain lock only to protect puntual access to data structures.
18176           Added access lock for sighash, jit_icall_hash_name, 
18177           jit_icall_hash_addr and domain->code_mp.
18178
18179 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
18180
18181         * driver.c: Print SIGSEGV handling method.
18182
18183         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
18184
18185         * mini.c (setup_jit_tls_data): Handle case when this is called
18186         multiple times for a thread.
18187
18188         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
18189         is different from fbxx_un. Fixes #54303. Also use constants instead of
18190         magic numbers in a lot of places.
18191
18192 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
18193
18194         * exceptions.cs: Fix cctor test when --regression is used.
18195
18196 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
18197
18198         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
18199         for Linux/ppc.
18200
18201 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18202
18203         * inssel-ppc.brg: fixed register assignments for some rules.
18204
18205 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18206
18207         * exceptions.cs: Add test for exceptions in static constructors.
18208
18209         * mini.c (mono_jit_compile_method_with_out): Move the calling of
18210         static constructors outside the domain lock. Fixes #55720.
18211
18212 2004-03-17  Martin Baulig  <martin@ximian.com>
18213
18214         * mini.c (get_generic_field_inst): Removed, this'll never happen.
18215         (inflate_generic_field): Take the `MonoMethod *' instead of the
18216         `MonoClass *' and added support for generic method.
18217         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
18218         have a `field->parent->gen_params', only inflate the field if it's
18219         an open constructed type.
18220
18221 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18222
18223         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
18224         exception object instead of the preconstructed ones.
18225
18226 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18227
18228         * mini.c: reverted changed to sigsegv_signal_handler commited
18229         accidentally in the previous patch.
18230
18231 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18232
18233         * mini.c:
18234         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
18235         running --aot with an old assembly.
18236
18237 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18238
18239         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
18240         point values.
18241
18242         * mini-sparc.c: Add support for v9 branches with prediction.
18243
18244 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
18245
18246         * mini.c (mini_init): #warning is GNUC only
18247
18248         * mini-sparc.h: implement __builtin_frame_address
18249         and __builtin_return_address for Sun C compiler
18250
18251 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
18254
18255 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18256
18257         * basic-calls.cs: Add test for unaligned byref long argument passing.
18258
18259         * mini-ops.h: Add sparcv9 compare and branch instructions.
18260
18261         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
18262         v9 instructions if we have a v9 cpu.
18263
18264         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
18265         registers for global allocation.
18266
18267         * exceptions-sparc.c: Fixes.
18268         
18269 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
18270
18271         * liveness.c (mono_analyze_liveness): Optimized version.
18272
18273         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
18274
18275         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
18276         sparc work.
18277
18278         * basic-float.cs basic-calls.cs: New regression tests.
18279
18280 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
18281
18282         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
18283         sigaltstack implementation.
18284
18285         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
18286         
18287         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
18288         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18289
18290 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18291
18292         * mini.c: Fix warnings.
18293         
18294         * mini.c (mono_resolve_patch_target): New function which contains the
18295         arch independent part of the patching process.
18296
18297         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18298         patching code to a separate function.
18299
18300 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18301
18302         * mini.c (add_signal_handler): ifdef out on Windows
18303
18304 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18305
18306         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18307         cpu-sparc.md: Add exception handling support + other fixes.
18308
18309         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18310         typed GC detection in --version.
18311
18312         * basic.cs exceptions.cs: New regression tests.
18313
18314         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18315         the arch specific code can store data during a compilation.
18316
18317         * mini-ops.h: Add OP_SETFRET.
18318
18319         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18320         function, register a separate icall for each arity, so the icalls can
18321         get a wrapper.
18322         
18323         * mini.c (mono_print_tree): Print negative offsets in a more readable
18324         form.
18325         
18326         * mini.c: Make signal handling work on sparc.
18327         
18328         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18329
18330         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18331
18332         * jit-icalls.c: Emulate truncl by aintl on solaris.
18333
18334         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
18335
18336 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18337
18338         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18339
18340 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18341
18342         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
18343         a MarshalByRef type, inline a method that performs the check, taking into
18344         account that the object can be a proxy. Also implemented tow new opcodes:
18345         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18346         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
18347         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18348
18349 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18350
18351         * mini-ppc.c: if a relative branch displacement is too big
18352         but it points to and area reachable with an absolute branch, 
18353         avoid the thunks.
18354
18355 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18356
18357         * mini.c: optimize small copies in cpblk.
18358
18359 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18360
18361         * basic-calls.cs basic-float.cs: New regression tests.
18362
18363         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18364         negative offsets from %fp. Implement localloc. Fix local register 
18365         allocation. Fix the case when the this argument needs to be saved to
18366         the stack. Implement some missing opcodes.
18367
18368 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18369
18370         * mini.c (mini_method_compile): Reenable global regalloc in methods
18371         with exception handlers.
18372
18373         * linear-scan.c (mono_varlist_sort): Fix warning.
18374
18375         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18376
18377         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18378         regalloc costs.
18379
18380         * liveness.c: Make all variables uses in exception clauses volatile, to
18381         prevent them from being allocated to registers. Fixes #42136.
18382
18383 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18384
18385         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18386         causes regressions.
18387
18388         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18389         argument to mono_arch_regalloc_cost.
18390
18391         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18392         precisely.
18393
18394 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18395
18396         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18397         Make the cost of allocating a variable to a register arch dependent.
18398
18399         * basic-calls.cs: Fix compilation of tests.
18400         
18401         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18402         helper function to cut back on the number of #ifdefs needed.
18403
18404         * mini-ppc.c: Fix compilation.
18405
18406         * basic-calls.cs: New regression tests.
18407
18408         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18409
18410         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18411         of l0 since that is callee saved.
18412
18413         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18414         to virtual calls.
18415
18416         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18417         of delay instruction.
18418
18419         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18420
18421         * mini.h (MonoCallInst): Add 'virtual' flag.
18422
18423         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18424
18425 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18426
18427         * *.cs: New regression tests.
18428
18429         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18430         work.
18431
18432         * mini.c (mono_runtime_install_handlers): Fix build.
18433
18434         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18435         'signal_stack_size' members.
18436
18437         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18438         alternate signal stack.
18439
18440         * exceptions-x86.c: Add stack overflow handling.
18441
18442         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18443         functions to arch independent code.
18444
18445         * mini.c (mono_print_tree): Print more detailed info for load_membase
18446         opcodes.
18447         
18448 2004-02-23  Martin Baulig  <martin@ximian.com>
18449
18450         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18451
18452 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18453
18454         * mini-x86.c: fixed reg allocation for div/rem.
18455
18456 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18457
18458         * driver.c (mono_main): Report some configuratio options on --version.
18459
18460 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18461
18462         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18463         low in the address space. Correctly flush memory in thunks where we
18464         output native code.
18465
18466 2004-02-20  Martin Baulig  <martin@ximian.com>
18467
18468         * mini.c (mini_get_method): New static method; inflate all generic
18469         methods and methods in open generic instances.
18470         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18471         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18472
18473 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18474
18475         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18476
18477         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18478
18479 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18480
18481         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18482
18483         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18484         it compile using Sun's compiler.
18485
18486 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * 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.
18489
18490         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18491
18492 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18493
18494         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18495         code.
18496         * mini-ppc.c: handle calls outside of the allowed range with thunks
18497         allocated using the code manager.
18498         * tramp-ppc.c: use the code manager to hold generated native code.
18499         Fixed the magic trampoline to just patch vtable entries.
18500
18501 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18502
18503         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18504         independent file.
18505
18506 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18507
18508         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18509         PPC.
18510
18511         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18512         if we have a working __thread implementation.
18513
18514         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18515         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18516
18517 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18518
18519         * mini-x86.c: Fix compilation under gcc 2.
18520         
18521 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18522
18523         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18524         contains a call to the wrapped function.
18525
18526         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18527         OP_<CALL>_IMM opcodes, and use them under X86.
18528         
18529         * mini.c (mono_jit_find_compiled_method): Fix warning.
18530
18531         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18532
18533         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18534
18535         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18536         functionality to mini.c.
18537
18538         * mini.c (mono_create_jump_trampoline): New function to create a jump
18539         trampoline. Return a compiled method instead of a trampoline if it
18540         exists. Add a cache for jump trampolines.
18541
18542         * mini.c (mono_jit_find_compiled_method): New function to return a
18543         compiled method if it exists.
18544
18545         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18546         mono_arch_create_jit_trampoline.
18547
18548         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18549         a jump trampoline. Fixes #52092.
18550         
18551 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18552
18553         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18554         which is not up-to-date. Add check_corlib_version () instead.
18555
18556         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18557         have to call it.
18558         
18559         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18560         since newer valgrind versions do not need it.
18561
18562         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18563         compile a method with a given set of optimizations.
18564
18565         * mini.c: Compile icall wrappers on-demand instead of at startup.
18566
18567         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18568         wrapper for an icall.
18569
18570 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18571
18572         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18573         #54063.
18574
18575         * iltests.il: Add test for non-empty stack before switch instruction.
18576
18577 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18578
18579         * mini.c: Add support for new stringbuilder marshalling conventions.
18580
18581         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18582
18583 2004-02-01  Martin Baulig  <martin@ximian.com>
18584
18585         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18586         in `ginst->mtype_argv'.
18587
18588 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18589
18590         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18591         facilitate grepping.
18592
18593 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18594
18595         * mini.c: fixed buglet in initobj generic implementation for references.
18596
18597 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18598
18599         * Makefile.am: make the version script conditional.
18600         * jit-icalls.c: handle missing truncl().
18601
18602 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18603
18604         * exceptions.cs: Add more tests for double->int conversion.
18605
18606         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18607         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18608
18609 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18610
18611         * driver.c: make --verbose --version emit an error
18612         if the loaded corlib doesn't match the runtime version.
18613
18614 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18615
18616         * mini-ppc.h: export ppc_patch().
18617         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18618         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18619         on par or better than on MacOSX.
18620
18621 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18622
18623         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18624         mono_lookup_pinvoke_call.
18625
18626         * mini-x86.c: Under windows, the default pinvoke calling convention is
18627         stdcall. Fixes #52834.
18628
18629         * mini.c (optimize_branches): Add an upper bound to the number of
18630         iterations to prevent infinite loops on strange loops. Fixes #53003.
18631
18632 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18633
18634         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18635         and ISINST. Fixes #52093.
18636
18637         * objects.cs (test_0_vector_array_cast): New tests.
18638         
18639 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18640
18641         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18642         checking in Array.Set ().
18643
18644         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18645         #52590.
18646
18647         * object.cs (test_0_multi_array_cast): New regression test.
18648
18649 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18650
18651         * exceptions-ppc.c: fix build on Linux/PPC.
18652
18653 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18656         running under valgrind.
18657         (x86_magic_trampoline): Fix build bustage.
18658
18659         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18660         negative values as well. This is needed for the encoding of the line number
18661         info, since sometimes the line numbers are not in increasing order.
18662
18663 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * cpu-pentium.md (localloc): Increase the size of the localloc 
18666         instruction since it is a loop under Win32.
18667
18668         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18669         allocation.
18670
18671 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18672
18673         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18674         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18675         Max Horn (max@quendi.de). Fix file names in comments.
18676
18677 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18678
18679         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18680         avoid stack overflow.
18681         (replace_usage): Avoid uninitialized variable warnings.
18682
18683         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18684         and taking the address of valuetype variables.
18685
18686 2004-01-03  Patrik Torstensson
18687
18688         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18689         for other purposes than FP later on.
18690
18691 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18692
18693         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18694         of tail calls.
18695
18696 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18697
18698         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18699
18700 2003-12-30  Patrik Torstensson <p@rxc.se>
18701
18702         * mini-x86.h: Decreased number of availiable fp regs.
18703         Solves corner cases with FP spilling.
18704
18705 2003-12-23  Patrik Torstensson <p@rxc.se>
18706
18707         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18708         for floating point stack tracking / spilling on x86. 
18709         Fixes bug #49012.
18710         
18711         * basic-float.cs: added float mul overflow test.
18712
18713 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18714
18715         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18716
18717 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18718
18719         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18720         supports for cond branches that overflow the immediate
18721         overflow offset. mcs can compile simple programs.
18722
18723 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18724
18725         * exceptions-ppc.c: exception handling support wip:
18726         finally handlers get run on exception.
18727
18728 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18729
18730         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18731         profiling.
18732
18733 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18734
18735         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18736         initial support for stack walking and unwinding.
18737
18738 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18739
18740         * driver.c (mono_main): Make corlib-out-of-sync message more 
18741         descriptive. Also remove verify_corlib call.
18742
18743 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18744
18745         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18746         not overlap with other call's arguments, too.
18747
18748 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18749
18750         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18751         move to arch-specific code the choice of arch-specific
18752         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18753         * mini.c: ensure emulation calls will not interleave
18754         with other calls.
18755
18756 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18757
18758         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18759         the magic trampoline stack frame is dropped before executing
18760         the new method.
18761
18762 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18763
18764         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18765         and integer to fp conversions. Added support for overflowing
18766         arguments on the stack. Reserve a couple more registers as temps.
18767         Added support for aot compilation (as output still needs to be
18768         tweaked, though).
18769
18770 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18771
18772         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18773         Don't overwrite return register in some corner cases.
18774
18775 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18776
18777         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18778         static constructors when AOT compiling.
18779
18780         * driver.c (mono_main): Call mono_check_corlib_version.
18781
18782 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18783
18784         * cpu-g4.md, basic.cs: fixed div target register.
18785
18786 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18787
18788         * mini-ppc.c, basic.cs: shl_imm fix with test.
18789
18790 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18791
18792         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18793         structures by value. Misc fixes.
18794         * objects.cs: more tests.
18795
18796 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18797
18798         * mini-ppc.c: lconv.ovf.i implemented.
18799
18800 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18801
18802         * mini.c:
18803         (mini_init): don't error out if someone already called g_thread_init.
18804
18805 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18806
18807         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18808         to be any type per the spec. Fix abnormal memory usage when
18809         the same object is repeatedly thrown.
18810
18811 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18812
18813         * mini.c: check for overruns in IL code.
18814
18815 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18816
18817         * TODO: Add/remove some todo entries.
18818
18819 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18820
18821         * driver.c (mono_main): Call mono_verify_corlib.
18822
18823 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18824
18825         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18826         This has been moved to mini.c
18827         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18828         type being casted is marshalbyref it could be a proxy, so instead of
18829         emitting the type check code, emit a call to a runtime method that will
18830         perform the check by calling CanCastTo if needed.
18831
18832 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18833
18834         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18835         methods with large stack frames under Win32.
18836
18837 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * Makefile.am: Distribute regression tests.
18840
18841         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18842         at the end instead of inserting each variable into the sorted list.
18843
18844         * linear-scan.c (mono_varlist_sort): New helper function.
18845         
18846 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18847
18848         * mini.c: ensure arguments and locals are within bounds.
18849
18850 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18851
18852         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18853         related fixes.
18854
18855 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18856
18857         * mini.c (mono_cprop_copy_values): Fix crash.
18858
18859         * aot.c: Set verbosity back to 0.
18860         
18861 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18862
18863         * regalloc.c: complete memory leak fix by Laurent Morichetti
18864         (l_m@pacbell.net).
18865
18866 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18867
18868         * driver.c (main_thread_handler): Revert the previous patch.
18869
18870         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18871         under valgrind.
18872
18873         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18874         memory from the memory pool.
18875
18876         * driver.c (main_thread_handler): Turn on all optimizations when
18877         --aot is used.
18878
18879         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18880         an array for better performance.
18881
18882         * regalloc.c (mono_regstate_assign): Fix memory leak.
18883
18884         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18885         serialize the debug info.
18886
18887         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18888         debug info from the serialized representation.
18889
18890         * aot.c: Save debug info into the generated file and load it when 
18891         loading a method.
18892
18893         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18894
18895 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18896
18897         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18898         More FP-related fixes.
18899
18900 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18901
18902         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18903         and register allocation buglet. Hello world now runs.
18904
18905 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18906
18907         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18908         * tramp-ppc.c: fixed class init trampoline.
18909         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18910
18911 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18912
18913         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18914         mini.c: more ppc changes/fixes.
18915
18916 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18919         Also optimize the case when the arguments are the same in the caller 
18920         and in the callee.
18921
18922         * iltests.il: Add tests for tail calls with valuetype arguments.
18923
18924 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18925
18926         * mini-ppc.c: fixes for struct return type.
18927
18928 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18929
18930         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18931         mono_spillvar_offset() to arch-specific code.
18932
18933 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18934
18935         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18936
18937 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18938
18939         * exceptions-x86.c: Fix stack space leaks.
18940         
18941         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18942         registers from the lmf if the method has save_lmf set.
18943
18944 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18945
18946         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18947         of icall wrappers into InvokeInDomain, since these are now per-domain.
18948
18949 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18950
18951         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18952         make some opcode emulation and intrinsic ops enabled/disabled 
18953         according to the architecture. More fixes.
18954
18955 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18956
18957         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18958
18959 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18960
18961         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18962         arch-specific handling for 'this' and struct return type to
18963         arch-specific code.
18964
18965 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18966
18967         * aot.c: prevent divide by zero error when reporting (it happened with
18968         Accessibility.dll).
18969
18970 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18971
18972         * mini.h (inst_switch): Remove unused macro.
18973
18974 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18975
18976         * aot.c:
18977         (load_aot_module): free 'info->methods' and 'info' properly. No more
18978         "free(): invalid pointer blah" messages when you have an old aot
18979         compiled assembly.
18980
18981 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18982
18983         * jit-icalls.c, mini.c: Added support for context static fields.
18984
18985 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18986
18987         * mini.c (mono_method_blittable): Methods which set LastError are not 
18988         blittable either. Fixes #51108.
18989         
18990 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18991
18992         * mini.c: flush icache.
18993         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18994
18995 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18996
18997         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18998
18999 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19000
19001         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19002         safe on IA32.
19003
19004         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19005         vararg calls.
19006
19007         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19008
19009 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19010
19011         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19012         instruction when the result is discarded.
19013
19014         * iltests.il (test_0_div_regalloc): New regression test.
19015
19016         * arrays.cs: Fix compilation error.
19017
19018 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19019
19020         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19021         float rules to inssel-x86.brg: sane architectures with FP registers
19022         don't need to implement these rules.
19023
19024 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19025
19026         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
19027
19028 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19029
19030         * mini.h, inssel-long32.brg: fixed endianess issues in int64
19031         implementation of 32 bit systems.
19032
19033 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19034
19035         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
19036         (Jeroen Zwartepoorte).
19037
19038 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19039
19040         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
19041         the caller and the callee matches.
19042         
19043         * mini.c (mono_method_to_ir): Add comment.
19044
19045         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
19046         signbit is missing on some platforms.
19047
19048 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19049
19050         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
19051
19052         * mini.c (setup_jit_tls_data): Call the new function.
19053         
19054         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
19055
19056         * mini-x86.c: Add experimental support for fast access to the lmf
19057         structure under NPTL/Linux 2.6.x.
19058
19059 2003-11-06  Martin Baulig  <martin@ximian.com>
19060
19061         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
19062         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
19063         the debugger.
19064
19065 2003-11-02  Martin Baulig  <martin@ximian.com>
19066
19067         * mini.c (inflate_generic_field): New static method.
19068         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
19069         generic instance and the field is declared in a generic type, call
19070         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
19071
19072 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19073
19074         * mini.h mini.c (mono_method_same_domain): New function to return
19075         whenever the caller and the callee are in the same domain.
19076
19077         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
19078
19079 2003-10-30  Martin Baulig  <martin@ximian.com>
19080
19081         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
19082         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
19083         method parameters.
19084         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
19085         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
19086
19087 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
19090         propagation.
19091
19092         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
19093         object here, so it is in the correct appdomain etc.
19094
19095 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19096
19097         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
19098         already done.
19099         (mono_method_to_ir): Avoid freeing the type created returned from
19100         mono_type_create_from_typespec, since it is put into an internal cache
19101         by the function. Fixes pointer.exe.
19102
19103         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
19104         trampolines for icalls and pinvokes as well. Fixes #33569.
19105
19106 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19107
19108         * mini.c: Update after appdomain changes.
19109
19110         * mini.c (mono_jit_compile_method_inner): Allways compile native
19111         method wrappers in the root domain, since there can only be one
19112         instance of them, whose address is stored in method->info.
19113
19114 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19115
19116         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
19117         environment variable. Instead detect automatically whenever running
19118         under valgrind using the magic macro RUNNING_ON_VALGRIND from
19119         valgrind.h.
19120
19121 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
19122
19123         * trace.c, trace.h: New files that implement the new trace option
19124         parsing. 
19125
19126         * driver.c: Document new --trace options.
19127
19128         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
19129         mini-x86.c: Apply:
19130
19131         -       if (mono_jit_trace_calls)
19132         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
19133
19134         * mini.h: prototypes.
19135         
19136 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19137
19138         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
19139
19140         * mini.c inssel.brg: Implement typedefbyref opcodes.
19141
19142         * mini.c (mono_jit_compile_method): Remove unused local variable.
19143
19144         * mini.c (mono_jit_compile_method_inner): Ditto.
19145         
19146 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
19147
19148         * tramp-x86.c (x86_class_init_trampoline): Fix build.
19149         
19150         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
19151
19152 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19153
19154         * mini.c (mono_no_aot): Remove unused global variable.
19155
19156         * mini.c: Thread safety fixes.
19157
19158 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
19159
19160         * mini.c (mono_create_class_init_trampoline): Add a lock around
19161         class_init_hash_addr.
19162
19163         * arrays.cs (test_0_newarr_emulation): Add new regression test for
19164         #30073.
19165
19166         * mini.c: Decompose the NEWARR instruction before decomposing its
19167         arguments. Fixes #30073.
19168
19169 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
19170
19171         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
19172         convention.
19173
19174 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19175
19176         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
19177
19178         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
19179
19180         * driver.c: Add support for compiling icall wrappers to --compile.
19181
19182 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19183
19184         * inssel.brg: The empty value in class->interface_offsets is -1, not
19185         0. Fixes #49287.
19186
19187 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19188
19189         * objects.cs: New test for 'is' operator on an array of interfaces.
19190
19191 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19192
19193         * tramp-ppc.c: update trampoline code to support jumps
19194         and class initialization.
19195
19196 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19197
19198         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
19199
19200         * inssel.brg (OP_UNBOXCAST): Fix #46027.
19201
19202         * inssel.brg (OP_UNBOX): Remove unused rule.
19203
19204         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
19205         region instead of one for each method. Fixes #47813.
19206
19207 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19208
19209         * exceptions.cs (test_0_nested_finally): New regression test for
19210         nested exception handlers.
19211
19212         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
19213
19214         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
19215
19216         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
19217         inlining.
19218
19219         * mini.c (mono_method_check_inlining): Make the inlining limit 
19220         configurable by an environment variable.
19221         
19222         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
19223
19224         * mini.h: Bump AOT file version.
19225
19226         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
19227         token, store the image along with the token, since the token might not 
19228         refer to the same image as the method containing the relocation, 
19229         because of inlining.
19230
19231 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
19232
19233         * mini.c (mono_precompile_assemblies): New function to compile
19234         all methods in all loaded assemblies.
19235
19236         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
19237
19238         * regalloc.h regalloc.c (MonoRegState): Change the type of 
19239         iassign and fassign to int*, since they can contain large negative
19240         values if the register is spilled. Also added some comments. Fixes
19241         #45817.
19242
19243         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
19244         under Win32. Fixes #42964.
19245
19246 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
19249
19250         * aot.c: Added support for AOT compiling methods which contain calls
19251         to wrappers. Currently, only remoting-invoke-with-check wrappers are
19252         handled.
19253         
19254         * driver.c (compile_all_methods): Run the compilation in a thread
19255         managed by mono. Fixes #44023.
19256
19257         * mini.c (mono_codegen): Print full method name in verbose output.
19258
19259         * mini-x86.c (mono_arch_patch_code): Fix warning.
19260         
19261         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
19262         jumps, since the method we are jumping to might be domain-specific.
19263
19264         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
19265
19266 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19267
19268         * inssel.brg: string chars are unsigned.
19269
19270 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19271
19272         * TODO: New todo item.
19273
19274         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
19275         which calls mono_runtime_class_init and patches the call site to
19276         avoid further calls.
19277         (mono_arch_create_class_init_trampoline): New arch specific function 
19278         to create a class init trampoline.
19279         (create_trampoline_code): Generalized so it can create
19280         class init trampolines as well.
19281
19282         * mini.c (helper_sig_class_init_trampoline): New helper variable.
19283         (mono_create_class_init_trampoline): New function to create and cache
19284         class init trampolines.
19285         (mono_find_class_init_trampoline_by_addr): New function to lookup the
19286         vtable given the address of a class init trampoline. Used by the
19287         patching process.
19288         (mono_codegen): Generate a call to a trampoline instead of
19289         mono_runtime_class_init in LDSFLD[A].
19290         (mono_codegen): Add relocations for the new trampoline.
19291         
19292         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19293         MONO_PATCH_INFO_CLASS_INIT.
19294
19295         * mini.h: Bump AOT version number.
19296
19297         * aot.c: Create a copy of the loaded code instead of using the original
19298         so methods which call each other will be close in memory, improving
19299         cache behaviour.
19300         
19301         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19302         patch since it breaks the regression tests.
19303         
19304         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19305         for the register saving instruction sequence since the 
19306         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19307
19308 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19309
19310         * TODO: Fix todo item && remove another.
19311
19312 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19315         previous checkin.
19316
19317         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19318         function of the module.
19319
19320         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19321         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19322         --no-aot command line option.
19323
19324 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19325
19326         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19327         by Bernie Solomon (bernard@ugsolutions.com).
19328
19329         * inssel.brg: Refactor the interface offset table related code into
19330         its separate functions and add support for the AOT case.
19331
19332 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * aot.c (mono_aot_get_method_inner): Fix memory leak.
19335         
19336         * aot.c: Added mono_aot_verbose variable and made all debugging
19337         output depend on the value of this variable.
19338
19339         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19340         method_label and info_label.
19341
19342         * mini.h mini-x86.c aot.c: Added a new relocation type 
19343         MONO_PATCH_INFO_IID for klass->interface_id.
19344
19345         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
19346         the MonoJitInfo structure.
19347
19348         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
19349         a non-root appdomain in shared mode.
19350
19351 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19352
19353         * aot.c: make aot loader less verbose. Remove free of unused variable.
19354
19355 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19358
19359         * .cvsignore: Added *.dll.
19360
19361         * mini.c (mono_print_tree_nl): New function callable while debugging.
19362
19363         * mini.c (mono_print_code): Export this.
19364
19365         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19366         patched code.
19367
19368 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19369
19370         * mini.h (MonoCompile): Added 'jit_info' field.
19371
19372         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19373         the cfg structure, since it is needed by the AOT compiler.
19374
19375         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19376
19377         * aot.c: A major rewrite. Changes include:
19378         - save exception tables for methods which have them.
19379         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19380         to g_module_symbol.
19381         - reworked the file format so it is now much smaller and needs
19382         fewer relocation entries.
19383         
19384 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19385
19386         * aot.c (load_aot_module): Fix build bustage on platforms without
19387         Boehm GC.
19388
19389 2003-09-04  Martin Baulig  <martin@ximian.com>
19390
19391         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19392
19393 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19394
19395         * TODO: Some new optimization ideas.
19396
19397         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19398
19399         * aot.c: Save the optimization flags used to compile the code into
19400         the AOT module.
19401
19402         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19403         support emitting domain specific code.
19404         
19405         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19406         no longer domain neutral. It can be made domain neutral by compiling 
19407         with --optimize=shared.
19408
19409         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19410         between appdomains.
19411
19412         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19413         loading of AOT code.
19414
19415         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19416         
19417         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19418         if there is no domain neutrality information.
19419
19420 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19421
19422         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19423         format version into the generated library.
19424
19425         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19426         callee method into the caller since one of them could be shared.
19427
19428         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19429         system exceptions from AOT code now works.
19430
19431         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19432         method if it is domain neutral and the callee is not.
19433
19434         * graph.c (cfg_emit_one_loop_level): Fix warning.
19435
19436 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19437
19438         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19439         last checkin.
19440
19441 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19442
19443         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19444         is needed  by code which is executed before mono_runtime_init ().
19445         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19446         
19447         * mini.c (mono_thread_abort): Fix warning.
19448         (mono_jit_compile_method): Call static constructor in the AOT case too.
19449
19450         * aot.c (mono_compile_assembly): Fix warning.
19451
19452 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19453
19454         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19455
19456 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19457
19458         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19459
19460         * cpu-pentium.md: Fix the length of call opcodes so they include the
19461         ESP restoring instruction. Fixes #47968.
19462
19463 2003-08-28  Martin Baulig  <martin@ximian.com>
19464
19465         * mini-x86.c (mono_arch_call_opcode): Added support for
19466         MONO_TYPE_GENERICINST.
19467
19468         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19469
19470 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19471
19472         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19473         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19474
19475         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19476         metadata_section.
19477
19478 2003-08-26  Martin Baulig  <martin@ximian.com>
19479
19480         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19481         when reporting an error, set this to the actual error location.
19482         (mono_method_to_ir): Report the correct error location if
19483         get_basic_blocks() returned an error.
19484
19485 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19486
19487         * mini.c (mono_type_blittable): OBJECT is not blittable.
19488         (mono_method_blittable): Methods which have marshalling descriptors
19489         are not blittable either. Fixes #47842.
19490
19491 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19492
19493         * driver.c mini.c: Use an environment variable instead of a global 
19494         variable. Also fix the build.
19495
19496         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19497         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19498         reporting this. 
19499
19500         * driver.c mini.c: Added --with-valgrind option to turn off some
19501         code which prevents mono from running under valgrind.
19502
19503         * mini.c (mono_emit_call_args): Fixed warning.
19504
19505         * mini.c (mono_emulate_opcode): Fixed warning.
19506
19507 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19508
19509         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19510         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19511         regalloc.c, regalloc.h: specify available registers in arch-specific
19512         code and support floats in the regallocator (patch by Laurent Morichetti 
19513         <l_m@pacbell.net>)
19514
19515 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19516
19517         * mini.c: mono_thread_current() can be called only after
19518         mono_runtime_init(): rearrange code to not call it early on.
19519
19520 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19521
19522         * mini.c: allocate jump tables in the code mempools.
19523
19524 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19525
19526         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19527         freed.
19528
19529 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19530
19531         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19532         12 to 16.  This fixes bug #47453.
19533
19534
19535 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19536
19537         * mini-ppc.c: fixed indexed load and unsigned compares.
19538
19539 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19540
19541         * mini.c: reenabled installation of handler for
19542           thread abort signal.
19543
19544 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19545
19546         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19547         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19548         until it's fixed and actually useful.
19549
19550 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19551
19552         * inssel-long32.brg: couple more opcodes implemented.
19553
19554 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19555         
19556         * mini-sparc.c: Even more opcodes implemeted.
19557
19558 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19559
19560         * mini-sparc.c: More opcodes implemented.
19561
19562 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19563
19564         * mini-sparc.c: More opcodes implemented.
19565
19566 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19567
19568         * inssel-sparc.brg: Add some needed rules.  Direct
19569         copy from PPC.
19570         * Makefile.am: Use inssel-sparc.brg
19571         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19572         an assert happy for now.
19573
19574 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19575
19576         * mini-sparc.c: Fixed compile errors.
19577         * exceptions-sparc.c: Same.  We now produce a mono binary 
19578         on sparc-linux.  Yea.
19579
19580 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19581
19582         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19583         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19584         They compile, but do not work.
19585
19586 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19587
19588         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19589         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19590         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19591         (ct@gentoo.org).
19592
19593 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19594
19595         * mini.c: more opcodes implemented and better support for generics.
19596
19597 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19598
19599         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19600         * mini.c, mini.h: first cut at generics support: some new instructions 
19601         added and changed the behaviour of some of the existing ones.
19602
19603 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19604
19605         * mini.c: Removed definition of metadata_shared mutex here.
19606
19607 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19608
19609         * mini-x86.c: make vararg calls work for instance methods.
19610
19611 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19612
19613         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19614         returns the arguments in a separte list, now.
19615
19616 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19617
19618         * aot.c, mini.c: updates for array type representation changes.
19619
19620 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19621
19622         * mini.c: register function to perform jit shutdown.
19623
19624 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19625
19626         * mini.c: use a faster allocator if possible.
19627
19628 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19629
19630         * aot.c: some cleanups and portability changes.
19631
19632 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19633
19634         * mini.c: use faster allocation for CEE_BOX if possible.
19635
19636 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19637
19638         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19639         Moved inlined mempcy code to its own function so that is can be
19640         reused. Added an inline memset function as well (optimized initobj).
19641         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19642
19643 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19644
19645         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19646
19647 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19648
19649         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19650         arch code can setup the cpu for CLR execution, if needed.
19651         We use it on x86 to set the precision of FP operations.
19652
19653 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19654
19655         * mini.c: disable some optimizations if we can guess they'll cost too
19656         much for a given method.
19657
19658 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19659
19660         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19661         
19662 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19663         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19664         info collection support.
19665
19666 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19667
19668         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19669         is now implemented in the profiling API. Get rid of a couple of
19670         unnecessary global variables.
19671
19672 2003-06-15  Nick Drochak <ndrochak@gol.com>
19673
19674         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19675         * cpu-g4.md: add op_bigmul and op_bigmul_un
19676         * cpu_pentium.md: add op_bigmul_un
19677         * inssel-long32.brg: add rule for unsigned bigmul
19678         * mini-ops.h: define OP_BIGMUL_UN
19679         * mini-x86.c: THE BUG: handle (un)signed properly
19680         * mini.c: choose unsigned opcode if needed.
19681         This set of patches fixes bug #44291
19682
19683 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19684
19685         * mini.c (optimize_branches): improved to handle all kinds of
19686         conditional branches.
19687
19688 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19689
19690         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19691         don't raise exceptions.
19692
19693 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19694
19695         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19696         to arch-specific files.
19697
19698 2003-06-09  Martin Baulig  <martin@ximian.com>
19699
19700         * Makefile.am (libs): Added $(LIBGC_LIBS).
19701
19702 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19703
19704         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19705         and OP_ATAN (fixes bug#44293).
19706
19707 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19708
19709         * Makefile.am, mini-x86.c: rename cpu description array to
19710         pentium_desc, since some compilers define the 'pentium' preprocessor
19711         symbol.
19712
19713 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19714
19715         * mini.c (mini_select_instructions): add explicit branch if the
19716         following block is not the false target of a conditional branch -
19717         we need this with any optimization that reorder or remove bblocks
19718
19719         * mini.c (optimize_branches): bug fixes
19720
19721 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19722
19723         * mini.c (mono_method_to_ir): inline static readonly fields
19724
19725         * ssa.c (fold_tree): start cfold support for long (very simple
19726         cases only)
19727
19728         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19729
19730 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19731
19732         * inssel.brg: fixed memcpy (bug #44219).
19733
19734 2003-06-05  Dick Porter  <dick@ximian.com>
19735
19736         * driver.c: Set the glib log levels to not abort if g_message
19737         recurses.
19738
19739         g_set_prgname() has to happen before mini_init() so that the
19740         process handle gets the info.
19741         
19742 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19743
19744         * driver.c: add intrins to the default optimizations to get wider
19745         exposure.
19746
19747 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19748
19749         * mini.h: some large basic blocks will overflow a 16-bit
19750         integers for symbolic registers.
19751
19752 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19753
19754         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19755         (mono_arch_output_basic_block): fix bug 43499 
19756
19757 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19758
19759         * mini.c: kill duplicated definition of mono_debug_format.
19760
19761 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19762
19763         * mini-x86.c, arrays.cs: fixed register allocation bug.
19764
19765 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19766
19767         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19768
19769         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19770
19771 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19772
19773         * mini.c:
19774         (print_method_from_ip): also print source location information if
19775         available.
19776
19777 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19778
19779         * mini.c (mono_find_block_region): bug fix in region code
19780         (mini_method_compile): enable removing unreachable code again, but
19781         only in methods without exception clauses.
19782
19783 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19784
19785         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19786         Implemented arglist opcode and handling of TypedReference type.
19787         Fixed x86 call convention when a structure is returned.
19788         Minimal support for calling static vararg methods.
19789
19790 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19791
19792         * mini.c (mini_method_compile):  always remove unreachable code,
19793         because the code in them may be inconsistent  (access to dead
19794         variables for example).
19795
19796 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19797
19798         * driver.c, debug-mini.c: warning fixes.
19799
19800 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19801
19802         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19803
19804 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19805
19806         * mini.c: thread-static fields are registered in mono_class_vtable(),
19807         so ensure the function is called before checking for them.
19808
19809 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19810
19811         * mini.c (optimize_branches): fix for bug 43586
19812
19813         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19814         overflow (fixes Bug #43639)
19815
19816 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19817
19818         * mini.c, objects.cs: allow the use of stobj for primitive types.
19819
19820 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19821
19822         * mini.c: be less strict about argument checking until we support
19823         running the verifier.
19824
19825 2003-05-27  Nick Drochak <ndrochak@gol.com>
19826
19827         * basic-long.cs: tests for (ulong)int * (ulong)int also
19828         * mini.c: use the same trick for (ulong)int * (ulong)int
19829
19830 2003-05-27  Nick Drochak <ndrochak@gol.com>
19831
19832         * basic-long.cs: add regression test for (long)int * (long)int
19833         * cpu-pentium.md: add op_bigmul specification
19834         * inssel-long32.brg: add OP_BIGMUL rule
19835         * mini-ops.h: add OP_BIGMUL
19836         * mini-x86.c: register allocator: handle case where src1 needs to be
19837         in EAX.
19838         * mini.c: substitute special BIGMUL opcode in the tree for 
19839         (long)int * (long)int
19840
19841 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19842
19843         * jit-icalls.c: call the type ctor on field access if needed.
19844
19845 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19846
19847         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19848         to a method (including results of ldelema, bug#43207).
19849
19850 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19851
19852         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19853         colors to show exception handler blocks.
19854
19855         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19856         (fix for pinvoke7.cs).
19857
19858 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19859
19860         * mini.h, mini.c: ensure correct initialization order for types that
19861         require it. Prepare for lazy compilation of jit icall wrappers.
19862         Provide a name for opcode emulation to reduce unneeded mallocing.
19863
19864 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19865
19866         * mini-x86.c: better register restoring code and profiling
19867         support for tail calls.
19868
19869 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19870
19871         * mini.h, driver.c: prepare for leaf methods optimization.
19872
19873 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19874
19875         * mini.c: get targets of branches before converting a method.
19876
19877 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19878
19879         * mini.c (optimize_branches): added some experimental code (disbaled) 
19880
19881 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19882
19883         * mini.c (optimize_branches): fix branch to branch optimization 
19884
19885         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19886
19887         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19888
19889         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19890
19891         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19892         if needed.
19893
19894 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19895
19896         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19897         enable use of interface variables again.
19898
19899         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19900         I1 to registers because there is no simply way to sign extend 8bit
19901         quantities in caller saved registers on x86.
19902
19903         * inssel-float.brg: set costs of some rules to 2 so
19904         that monobure always select the arch. specific ones if supplied,
19905         regardless of the order we pass the files to monoburg.
19906
19907 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19908
19909         * mini.c, mini-x86.c: since the magic trampoline for jumps
19910         can't patch the code directly, we do it as soon as the
19911         method gets compiled.
19912
19913 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19914
19915         * mini-x86.c, mini.h: introduce a new patching method
19916         to support CEE_JMP and tail calls.
19917         * mini.c: obey tail.call. Don't precompile methods target
19918         of CEE_JMP.
19919         * tramp-x86.c: new trampoline code to handle methods
19920         reached through a jump.
19921
19922 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19923
19924         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19925         bit values to registers
19926
19927 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19928
19929         * mini.c (mono_compile_get_interface_var): share interface
19930         variables if possible.
19931
19932 2003-05-16  Martin Baulig  <martin@ximian.com>
19933
19934         * debug-mini.c (mono_init_debugger): New function to initialize
19935         the debugger.  This is not in the debugger since it needs to
19936         access some of mini's internals.
19937
19938 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19939
19940         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19941
19942 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19943
19944         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19945         for value type handling.
19946
19947 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19948
19949         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19950         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19951
19952 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19953
19954         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19955           the constructor through a proxy.
19956
19957 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19958
19959         * jit-icalls.c, inssel.brg: fixes to array element address
19960         calculations.
19961
19962 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19963
19964         * mini-x86.c (is_regsize_var): allocate pointer to registers
19965
19966 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19967
19968         * driver.c: fixed typo, added intrins to the set of optimizations
19969         tested with regressions.
19970
19971 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19972
19973         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19974         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19975         test case.
19976
19977 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19978
19979         * inssel.brg: remove some common pop instructions without side effects
19980
19981 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19982
19983         * inssel-x86.brg: fixed thinko in int to double conversions.
19984
19985 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19986
19987         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19988
19989 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19990
19991         * inssel-long32.brg: two more missing instructions.
19992
19993 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19994
19995         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19996         if not already set.
19997
19998 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20001         correctly.
20002
20003         * basic-float.cs: Added tests for negative zero.
20004
20005 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20006
20007         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20008         a couple of missing operations for long casts, with test cases.
20009
20010 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20011
20012         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20013
20014 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20015
20016         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20017         code size estimation.
20018
20019 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20020
20021         * mini.c (mono_jit_create_remoting_trampoline): make it work with
20022         abstract methods (fix bug 42542)
20023
20024         * aot.c: add ability to handle array types
20025         
20026 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
20027
20028         * mini.c: Call the _specific versions of the object allocation
20029         functions if possible.
20030
20031 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20032
20033         * driver.c: call setlocale ().
20034
20035 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20036
20037         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
20038         windows build.
20039
20040 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20041
20042         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
20043
20044         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
20045         wrappers (fix bug 42122)
20046
20047 2003-05-04  Martin Baulig  <martin@ximian.com>
20048
20049         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
20050
20051         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
20052         s/mini_set_defaults/mono_set_defaults/g.
20053
20054 2003-05-04  Martin Baulig  <martin@ximian.com>
20055
20056         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
20057
20058 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20059
20060         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
20061         (reported by Don Roberts).
20062
20063 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20064
20065         * mini.c: temporarily work around two bugs for this release.
20066
20067 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20068
20069         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
20070         that contains -export-dynamic and it makes using the ld script
20071         useless.
20072         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
20073
20074 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20075
20076         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
20077         specific cpu.
20078
20079 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20080
20081         * mini.c: make sure leave calls all the needed finally blocks,
20082         even when the target jumps out of multiple exception clauses.
20083
20084 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20085
20086         * ldscript, Makefile.am: add linker script to reduce the number of
20087         exported symbols (should also fix the issues with libwine defining
20088         some of the same symbols in io-layer).
20089
20090 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * driver.c (mini_main): Avoid assertion when no file name is given on 
20093         the command line.
20094
20095 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
20096
20097         * driver.c: added --version/-V command line option.
20098         Added the inline optimization in the regression tests.
20099
20100 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20101
20102         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
20103         to the type in the method signature (fixes bug#42134).
20104
20105 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
20106
20107         * mini.c: when inlining, check this is not null only when needed (bug #42135).
20108
20109 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
20110
20111         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
20112
20113 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20114
20115         * driver.c: fixed bug #42100.
20116
20117 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20118
20119         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
20120
20121 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20122
20123         * mini.c: moved most of the code required to do inlining to its own
20124         function so it can be reused. Inline also ctors if appropriate.
20125
20126 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * Makefile.am: Link with -export-dynamic so shared libs loaded by
20129         the runtime can call mono API functions.
20130
20131 2003-04-27  Martin Baulig  <martin@ximian.com>
20132
20133         * debug-mini.c (mono_debug_init_method): Added
20134         `guint32 breakpoint_id' argument; if the method has a breakpoint,
20135         send a notification to the debugger.
20136
20137         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
20138         running in the Mono Debugger, just pass the breakpoint number to
20139         mono_debug_init_method().
20140
20141         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
20142
20143 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
20144
20145         * mini.c: allow some more unsafe compares.
20146
20147 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20148
20149         * mini-x86.c, Makefile.am: make distcheck works (partially from
20150         a patch by Richard Lee <r.h.lee@attbi.com>).
20151         * regset.c, regset.h: removed, they are unused.
20152
20153 2003-04-25  Dick Porter  <dick@ximian.com>
20154
20155         * driver.c: Usage reports the name as 'mono' not 'mini'
20156         * exceptions-x86.c: Build and run on freebsd
20157
20158 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20159
20160         * Makefile.am: install the program with the 'mono' name and
20161         the library as libmono instead of mini and libmini.
20162
20163 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20164
20165         * driver.c: provide the APIs for the embedding interface of the old jit.
20166
20167 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
20168
20169         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
20170
20171 2003-04-23  Martin Baulig  <martin@ximian.com>
20172
20173         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
20174
20175         * driver.c: Added `--debug' command line argument to enable
20176         debugging support.
20177
20178 2003-04-23  Martin Baulig  <martin@ximian.com>
20179
20180         * debug.[ch]: Removed.  The code is now in
20181         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
20182
20183         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
20184         last six months.
20185
20186 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20187
20188         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
20189
20190 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20191
20192         * mini.c:
20193         (mini_cleanup): moved mono_runtime_cleanup call after the call to
20194         mono_domain_finalize.
20195         (mini_method_compile): use mono_method_profile* if the the option is
20196         enabled.
20197
20198 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20199
20200         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20201         methods with their wrapper.
20202
20203         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20204         methods with their wrapper.
20205
20206         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
20207         their wrapper.
20208
20209         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
20210         wrapper.
20211
20212         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
20213         methods.
20214
20215 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
20216
20217         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
20218
20219 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
20220
20221         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
20222         of the mempool. This is slightly faster and uses less memory
20223
20224 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20225
20226         * mini.c: avoid O(n) allocation for variables.
20227
20228 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20229
20230         * mini.c: handle items on the stack after inlining methods.
20231
20232 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20233
20234         * mini.c: make the method->opcode optimization dependent
20235         on MONO_OPT_INSTRINS and do it lazily.
20236
20237 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20238
20239         * driver.c: print overall results at the end of regression run.
20240
20241 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20242
20243         * inssel.brg: don't overwrite symbolic registers.
20244
20245 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20246
20247         * inssel-x86.brg: fix conversion from long to float.
20248
20249 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
20250
20251         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
20252
20253 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20254
20255         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
20256
20257         * driver.c: Added --print-vtable option as in the old JIT.
20258
20259 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20260
20261         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
20262
20263 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20264
20265         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
20266
20267 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * mini.c regalloc.c regalloc.h: Fix memory leak.
20270
20271 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
20272
20273         * aot.c (mono_aot_get_method): register all used strings
20274
20275 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20276
20277         * mini.c: always intern strings references with ldstr at compile time.
20278
20279 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20280
20281         * Makefile.am: add BUILT_SOURCES.
20282
20283 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20284
20285         * driver.c: give a better error message when the assembly to execute
20286         doesn't have an entry point.
20287
20288 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20289
20290         * Makefile.am: added hack for automake
20291
20292         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20293         correct sematics.
20294
20295         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20296
20297 22003-04-07  Martin Baulig  <martin@ximian.com>
20298
20299         * Makefile.am: Added Makefile.am.
20300
20301         * debugger-main.c: Removed, this is now in the debugger where it
20302         belongs.
20303
20304         * mini.pc.in: Call this package `mini' for the moment.
20305
20306
20307
20308
20309
20310
20311
20312
20313
20314
20315
20316
20317
20318
20319