bcc8b9a7f3fee900aa6d5ef5c381505759f40582
[mono.git] / mono / mini / ChangeLog
1 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4         to the latest LLVM code.
5
6 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
7
8         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
9
10 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
11
12         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
13         x86/amd64.
14
15         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
16         no longer saving offsets, so just save the patch types along with the other
17         info.
18         * aot-runtime.c (load_patch_info): Update after the changes to 
19         encode_patch_list ().
20         (decode_got_entry): Removed, merged into load_patch_info ().
21         (is_shared_got_patch): Removed, call the same function from
22         aot-compiler.c.
23
24         * mini.h: Bump aot file format version.
25         
26         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
27         half-finished no-dlsym code.
28
29         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
30         option.
31
32         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
33         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
34
35 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
36
37         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
38         buffer length to work with AOT code.
39
40         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
41         ldfld/stfld opcodes.
42
43         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
44         as it is not used.
45
46         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
47
48         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
49
50         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
51         LLVM API.
52
53         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
54         if needed. Don't decompose long operations when using llvm.
55
56 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
57
58         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
59         PAGESIZE constant.
60
61         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
62
63 2009-05-03  Martin Baulig  <martin@ximian.com>
64
65         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
66         mono_debugger_insert_method_breakpoint() since the class init
67         handler we're inserting at the top of the method already gives us
68         a notification.
69
70 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
71
72         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
73         to mono_arch_decompose_long_opts () for x86 and arm.
74
75 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
76
77         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
78         TARGET_AMD64 here.
79
80 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
81
82         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
83         JIT code.
84
85 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
86
87         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
88         number of trampolines used in full-aot mode.
89
90         * aot-compiler.c: Add an ntrampolines option to set the number of 
91         trampolines emitted in full-aot mode.
92
93 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
94
95         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
96         a volatile load. Get rid of get_tempname (), llvm assigns names
97         automatically.
98
99         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
100         builder function.
101
102         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
103         a value.
104
105         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
106         level 1.
107
108         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
109         to the same register as a fixed sreg2. Fixes #497271.
110
111         * iltests.il.in: Add a new test.
112
113 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
114
115         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
116         stack, since pushes complicate exception handling.
117
118         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
119         the stack if they are passed using moves.
120
121         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
122
123         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
124         when using llvm.
125
126         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
127         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
128         of FMOVE if it is an R4.
129
130 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
131
132         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
133
134         * mini.h (LLVMCallInfo): New structure to store calling convention 
135         information for the LLVM back end similar to the CallInfo structures in 
136         the back-ends.
137
138         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
139         call information in a format usable by LLVM.
140         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
141
142         * method-to-ir.c (mono_emit_call_args): Emit calls using 
143         mono_llvm_emit_call () when compiling using LLVM.
144
145         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
146         comments to all functions. Fix memory leaks. Add a public init/cleanup
147         function.
148
149         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
150
151         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
152         mono_array_new_va () jit icall.
153         
154 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
155
156         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
157         multiple machine description files to be specified.
158         * mini-ops.h: fixes for cross-compilation.
159
160 2009-04-22  Miguel de Icaza  <miguel@novell.com>
161
162         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
163         some porting work.
164
165 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
166
167         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
168         to prevent asserts in various passes. Fixes #497220.
169
170 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
171
172         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
173         a racy assert.
174
175         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
176         table to avoid duplicates.
177
178         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
179         
180         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
181         option is used.
182
183 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
184
185         * mini.c (mini_method_verify): Fail fulltrust code if the exception
186         is for method or field access.
187
188 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
189
190         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
191         a Value to stdout.
192
193         * mini-llvm.c (mono_llvm_emit_method): Use it.
194         
195         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
196         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
197         on volatile values.
198
199         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
200         synchronized methods.
201
202         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
203
204         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
205
206         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
207         OP_LOADI8_MEM.
208
209         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
210         allowing some options to be set dynamically.
211
212 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
213
214         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
215         unconditional branch.
216
217         * mini.h (MonoTrampolineType): Add new trampoline type 
218         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
219         compiled code.
220
221         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
222         function.
223
224         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
225         creation function.
226
227         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
228         is enabled. Instead, use the llvm vcall trampoline.
229         
230         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
231
232         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
233         
234         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
235         functions.
236
237         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
238         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
239
240         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
241         OP_IA64_CSET opcode.
242
243         * mini.c: Fix a warning.
244
245         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
246         THROW to the appropriate llvm type.
247
248 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
249
250         * mini.c (mini_method_compile): Add statistics for methods JITted
251         with/without LLVM.
252
253 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
254
255         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
256         OP_IA64_CMP_<cond>_IMM opcodes.
257
258 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
259
260         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
261         corlib exceptions.
262
263         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
264         correctly.
265
266         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
267         GENERICINST.
268
269 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
270
271         * mini-exceptions.c : add thread id to EXCEPTION trace message.
272
273 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
274
275         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
276         support.
277
278         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
279         rgctx invoke trampolines for x86.
280
281         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
282         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
283         (mono_arch_get_vcall_slot): Simplify this.
284
285 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
286
287         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
288         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
289
290 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
291
292         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
293         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
294
295         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
296
297         * liveness.c (visit_bb): Remove a needless assert.
298
299 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
302         full aot support to the arch specific code.
303
304         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
305
306         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
307
308         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
309         
310         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
311         collect information about the delegate invoke impl trampolines.
312
313         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
314         to save trampolines during full-aot mode.
315
316         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
317         creation function which returns a trampoline which sets the rgctx
318         argument.
319         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
320         wrapper if possible.
321         (mono_delegate_trampoline): Ditto.
322
323         * mini.c (mono_jit_runtime_invoke): Ditto.
324
325         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
326         
327         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
328
329         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
330         
331 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
332
333         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
334         just setting the opcode to OP_NOP.
335
336 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
337
338         * mini.c (mini_method_compile): Put the last change inside an 
339         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
340         
341         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
342         and extend live ranges to cover the whole method when using xdb.
343
344         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
345         do it in the trampolines.
346
347         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
348         needed.
349
350         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
351         
352         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
353         call code in full-aot mode since IMT is disabled there.
354         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
355         new JIT no longer has that restriction.
356
357         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
358
359         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
360         a more compact format.
361         (mono_aot_wrapper_name): New function to return a unique name for a
362         wrapper method, also used by the AOT runtime.
363
364         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
365         aot-compiler.c.
366
367         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
368         when a ICollection<T> etc is encountered.
369         (add_generic_instances): Process method arguments/locals too.
370         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
371         trampoline names.
372
373         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
374         
375 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
376
377         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
378
379         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
380
381         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
382         representing the result of the decomposition. Nullify instructions
383         instead of setting them to OP_NOP since nops can't have registers
384         set.
385
386 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
387
388         * aot-compiler.c (mono_compile_assembly): Split this huge function into
389         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
390         info. Strip 'mapping symbols' on ARM.
391
392         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
393         
394         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
395         this with the native genmdesc.
396
397 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
398
399         * aot-runtime.c:  Fixing the MSVC build.
400
401         Code is contributed under MIT/X11 license.
402
403 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
404
405         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
406         JITted code depends on it.
407
408 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
409
410         * aot-compiler.c: Use new MonoGenericParam accessors.
411
412 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
413
414         Reduce memory usage and improve correctness wrt MonoGenericParam
415         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
416         handing.  Avoid allocating MonoGenericParams, but use the ones in
417         the container itself.
418
419 2009-04-07  Miguel de Icaza  <miguel@novell.com>
420
421         * tasklets.c: Return exceptions in the out argument.
422
423 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
426         opcode. Use pointer types in more places instead of casting them to 
427         integers.
428
429         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
430         optimizations.
431         (mono_llvm_optimize_method): New helper function to optimize a method.
432
433         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
434         widening code so it could be called from more places.
435         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
436         code paths in the call opcodes.
437
438 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
439
440         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
441
442 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
443
444         * dwarfwriter.c: Use _ to separate class name 
445         components as gdb can't handle '.'. Represent reference variables
446         as 'class <NAME>&'.
447         
448         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
449
450         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
451         
452         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
453
454         * gc-test.cs: New file with GC stack marking tests.
455         
456         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
457         negative numbers for vfp.
458
459         * basic-float.cs: Add a test.
460         
461 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
462
463         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
464
465 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
466
467         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
468         part of tasklet/continuation support.
469
470 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
471
472         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
473         amd64 opcodes inside an ifdef.
474
475         * dwarfwriter.c: Emit inheritance information for classes, emit fields
476         of complex types.
477         
478         * dwarfwriter.c (emit_type): Emit the class info for classes.
479
480 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
481
482         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
483
484         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
485
486         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
487
488         * ssa.c (mono_ssa_compute): Fix some memory leaks.
489
490 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
491
492         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
493
494         * mini-llvm.c: Update comments.
495
496         * mini.h (COMPILE_LLVM): New macro.
497
498         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
499
500         * ssa.c (mono_ssa_compute): Ditto.
501         
502         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
503         the unwind ops from a DWARF FDE.
504
505         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
506         methods by extracting the dwarf unwind ops from the unwind info generated
507         by LLVM.
508         
509         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
510         calls.
511
512         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
513         addressing modes.
514
515 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
516
517         * Makefile.am (llvm_sources): Enable this.
518
519         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
520         failing back to the JIT if something cannot be handled.
521
522         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
523         compiling with LLVM.
524
525         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
526         compiling with LLVM.
527
528         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
529         compiling with LLVM.
530
531         * mini-ops.h: Add a few opcodes needed by LLVM.
532
533         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
534         has no unwind info.
535
536         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
537         backend.
538
539         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
540
541         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
542
543 2009-04-01  Mark Probst  <mark.probst@gmail.com>
544
545         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
546         ridiculously large methods.
547
548 2009-03-31  Martin Baulig  <martin@ximian.com>
549
550         * debug-debugger.c (debugger_remove_breakpoint): Call
551         mono_debugger_remove_class_init_callback ().
552
553 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
554
555         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
556         right before emitting code, not at the start.
557
558         * mini.c (mono_postprocess_patches): Extract this into a separate function
559         from mono_codegen ().
560
561         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
562         byref types correctly.
563
564 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
565
566         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
567         by the last change.
568
569 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
570
571         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
572         indirect calls, this avoids problems where get_vcall_slot () would get
573         confused by the native code for the instruction preceeding the call.
574         (mono_arch_get_vcall_slot): Simplify this.
575         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
576
577         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
578         register allocator now seems to depend on them instead of the data in
579         cpu-<ARCH>.md.
580
581         * mini.c (mini_method_compile): Throw the correct type of exception if
582         mono_method_get_header () fails because of a loading error.
583
584 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
585
586         * mini.c (mini_method_compile): Clear the loader error if the method
587         header cannot be decoded.
588
589         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
590         interface methods on proxies correctly.
591
592         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
593         this argument for vtype methods. Add precise liveness info for arguments.
594
595         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
596         LIVERANGE_START/END opcodes.
597
598         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
599         for arguments and values in registers.
600
601 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
602
603         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
604         return a valuetype. Fixes #487518.
605
606         * iltests.il: Add a test.
607         
608         * aot-compiler.c: Use mono_thread_create () to create helper threads.
609
610         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
611         closed over a null reference correctly.
612
613 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
614
615         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
616
617 2009-03-25  Mark Probst  <mark.probst@gmail.com>
618
619         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
620         allocated to the same registers as fixed sregs.
621
622 2009-03-24  Mark Probst  <mark.probst@gmail.com>
623
624         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
625         ATOMIC_CAS_IMM ops.
626
627         * method-to-ir.c: Handle more cases for
628         Interlocked.CompareExchange.
629
630         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
631         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
632         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
633
634 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
635
636         * aot-runtime.c (decode_method_ref): Fix a warning.
637
638         * unwind.c (mono_unwind_frame): Ditto.  
639
640 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
641
642         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
643         (mono_compile_assembly): Enable the binary writer for full-aot as well.
644
645         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
646         fix the handling of large values in the ALU_PC_G0_NC relocation.
647
648 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
649
650         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
651
652 2009-03-22  Mark Probst  <mark.probst@gmail.com>
653
654         * method-to-ir.c (mono_spill_global_vars): Support for ternary
655         ops.
656
657 2009-03-22  Mark Probst  <mark.probst@gmail.com>
658
659         * method-to-ir.c: MINI_OP3 needs a comma.
660
661         * method-to-ir.c, mini.h, mini.c: Remove
662         mono_init_op_sreg_counts ().
663
664 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
665
666         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
667         OP_JMP.
668         
669         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
670         assertion.
671
672         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
673
674         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
675         code somewhat.
676
677 2009-03-21  Mark Probst  <mark.probst@gmail.com>
678
679         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
680         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
681         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
682         operations.
683
684 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
685
686         * driver.c: Change location of gc_wrapper.h.
687
688         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
689         inside finally clauses correctly. Fixes #485721.
690
691         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
692         after the change above.
693
694         * exceptions.cs: Add a test.
695         
696 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
697
698         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
699
700         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
701         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
702         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
703
704         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
705         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
706
707 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
708
709         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
710         Simplify logic for ensure_method_is_allowed_to_call_method. 
711         Handle wrappers on callers.
712
713 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
714
715         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
716         them don't run yet.
717
718         * basic-simd.cs: Fix the names of some test methods.
719
720 2009-03-18  Geoff Norton  <gnorton@novell.com>
721
722         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
723
724 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
725
726         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
727
728 2009-03-17  Jb Evain  <jbevain@novell.com>
729
730         * driver.c: remove now uneeded call to mono_gc_base_init before
731         mono_profiler_load.
732
733 2009-03-17  Jb Evain  <jbevain@novell.com>
734
735         * dwarfwriter.c (token_handler): handle more cases.
736
737 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
738
739         * method-to-ir.c: Remove more dead code (that was required only
740         because of method_is_safe). Fix compiler warnings.
741
742 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
743
744         * method-to-ir.c: Remove unneeded/useless method_is_safe
745         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
746
747 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
748
749         * mini.c (mini_method_compile): Print the method been compiled with
750         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
751         for people not familiar with the runtime.
752
753 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
754
755         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
756         a managed object which is later put into a GList. Return its class instead.
757
758         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
759         stack slots when using sgen.
760
761 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
762
763         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
764
765 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
766
767         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
768         > so it works on the first vreg as well.
769
770 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
771
772         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
773         trigger randomly.
774
775         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
776         
777         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
778         implement GArray.
779
780 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
781
782         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
783         native->IL offset mapping.
784
785 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
786
787         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
788
789         * basic.cs: Add a test.
790
791 2009-03-11  Mark Probst  <mark.probst@gmail.com>
792
793         * mini-x86.c (mono_arch_output_basic_block): Use different
794         registers in case the ones we want to overwrite are used by the
795         other operand.  Fixes regression in #480807.
796
797 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
798
799         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
800
801         * dwarfwriter.c (emit_line_number_info): The line number info for
802         IL code was off by one. Fix that.
803
804         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
805         stack.
806
807 2009-03-09  Mark Probst  <mark.probst@gmail.com>
808
809         Contributed under the terms of the MIT/X11 license by Steven
810         Munroe <munroesj@us.ibm.com>.
811
812         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
813         Fixes #483462.
814
815 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
816
817         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
818         as well.
819
820 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
821
822         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
823         the delegate ctor handling code. Fixes #482638.
824         
825         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
826         #481458.
827
828         * iltests.il.in: Add a test.
829         
830         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
831         mini-posix.c.
832
833 2009-03-05  Mark Probst  <mark.probst@gmail.com>
834
835         * mini-trampolines.c (mono_create_jump_trampoline): If the method
836         is shared generic code, return the trampoline, even if the method
837         has already been compiled.  Fixes #479763.
838
839         * mini.c, mini.h: New function
840         mono_jit_find_compiled_method_with_jit_info() which is the same as
841         mono_jit_find_compiled_method() but also returns the jit info.
842
843 2009-03-05  Mark Probst  <mark.probst@gmail.com>
844
845         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
846         for methods which actually have one.  For all other methods, make
847         sure the this argument var is live the whole method.
848
849         * mini.c (mini_method_compile): Every shared method has a
850         this/vtable/mrgctx info.  Fixes #480807.
851
852 2009-03-05  Mark Probst  <mark.probst@gmail.com>
853
854         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
855         generic/imt thunks where some entries branch through the vtable,
856         while other entries branch directly.
857
858 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
859
860         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
861
862         * mini-windows.c: Ditto.
863         
864         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
865         ctors.
866
867 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
868
869         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
870         down an assert.
871
872 2009-03-04  Mark Probst  <mark.probst@gmail.com>
873
874         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
875         #481403.
876
877 2009-03-04  Mark Probst  <mark.probst@gmail.com>
878
879         * exceptions-x86.c: Include debug-mini.h - fixes build.
880
881 2009-03-04  Martin Baulig  <martin@ximian.com>
882
883         * debug-mini.c: Clean up the exception API and add documentation.
884         (mono_debugger_handle_exception): New public method; this is
885         called when throwing an exception or encountering an unhandled one.
886         (mono_debugger_call_exception_handler): Formerly known as
887         mono_debugger_handle_exception(); this is used to tell the
888         debugger that we're about to invoke an exception handler.
889
890 2009-03-04  Martin Baulig  <martin@ximian.com>
891
892         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
893         ../metadata/mono-debug-debugger.c; save and reset exception state.
894
895 2009-03-02  Martin Baulig  <martin@ximian.com>
896
897         * debug-mini.c: Moved the debugger exception handling here from
898         ../metadata/mono-debug-debugger.c.
899
900         * debug-mini.h
901         (MonoDebuggerExceptionAction): New exception typedef.
902
903         * debug-mini.c
904         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
905
906         * exceptions-amd64.c
907         (mono_amd64_throw_exception): Use the new debugger exception
908         handling code.
909
910         * mini-exceptions.c
911         (mono_handle_exception_internal): Don't call
912         mono_debugger_unhandled_exception() here.
913
914 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
915
916         * mini.c aot-compiler.c: Update after the changes to 
917         mono_marshal_get_runtime_invoke ().
918
919         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
920         Virtual generic methods might not have method->slot set, work around
921         that.
922
923         * generics.cs: Add a test.
924
925 2009-03-02  Geoff Norton  <gnorton@novell.com>
926
927         * mini.c:
928         * driver.c: Allow signal chaining of SIGFPE as well.
929
930 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
931
932         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
933         this since it now receives the method not its generic context in the
934         IMT reg.
935
936         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
937         generic/imt thunks where some entries branch through the vtable, while
938         other entries branch directly.
939
940         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
941
942         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
943         support for interface methods as well.
944
945         * mini-trampolines.c: Add support for virtual generic methods in interfaces
946         using the normal IMT thunks.
947
948         generics.cs: Add new tests.
949         
950         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
951         the generic inst to the generic imt thunks. This fixes AOT support, 
952         improves consistency with the normal IMT thunks, and makes it easier to
953         add support for interface generic virtual methods later.
954
955         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
956         
957 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
958
959         * driver.c (mono_set_signal_chaining): New public API function to enable
960         signal chaining on POSIX platforms.
961
962         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
963         (si@lindenlab.com) to implement signal chaining. The original patch was
964         contributed under the MIT X/11 license:
965         https://bugzilla.novell.com/show_bug.cgi?id=318894
966
967 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
968
969         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
970         too until it can be made to run on amd64.
971
972 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
973
974         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
975         to  get_generic_context_from_code () + get_call_info () if possible.
976
977 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
978
979         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
980         suspend-on-sigsegv functionality.
981
982         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
983         to suspend when a native SIGSEGV is received. This is useful for debugging
984         crashes which don't happen under gdb, since a live process contains more
985         information than a core file.
986
987         * mini-exceptions.c (mono_print_thread_dump): Use 
988         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
989
990         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
991
992         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
993         
994         * basic-float.cs: Disable the tests which currently fail on amd64.
995
996         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
997         value to mono_arch_patch_callsite () to fix crashes.
998         
999         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1000
1001 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1004         nop code by patching the call address to point to the nullified class init
1005         trampoline, as the former does not seem to be safe on SMP machines.
1006
1007 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1008
1009         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1010         they were wrong.
1011
1012 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1013
1014         * basic-float.cs basic-calls.cs: Fix warnings.
1015
1016 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1017
1018         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1019         correct frame pointer in the LMF.  Should fix #478394.
1020
1021 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1022
1023         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1024
1025         * image-writer.c: Make the binary writer less verbose.
1026
1027 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1030         are called from runtime invoke wrappers.
1031
1032 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * cpu-ppc.md (store_memindex): Increase the size of this.
1035
1036 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1037
1038         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1039
1040         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1041
1042         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1043         OP_LCONV_TO_R_UN.
1044
1045         Last fix for of #467201.
1046
1047
1048 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1049
1050         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1051
1052         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1053         and long_conv_to_r8_2:
1054
1055         Fixed part of #467201.
1056
1057 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1058
1059         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1060
1061         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1062         conversion to 32 bits.
1063
1064         * cpu-x86.md: Increase the size of int_conv_to_r4.
1065
1066         * basic-float.cs: Add a test for this.
1067
1068         Fixed part of #467201.
1069
1070 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1071
1072         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1073
1074         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1075         conversion to 64 bits.
1076
1077         * basic-float.cs: Add a test for this.
1078
1079         Fixed part of #467201.
1080
1081 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1082
1083         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1084
1085         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1086         This behavior is compatible with MS.
1087
1088         * iltest.il.in: Add a test for this.
1089
1090         Fixed part of #467201.
1091
1092 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1093
1094         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1095
1096         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1097         change the precision of the value.
1098
1099         * cpu-x86.md: Define len for float_conv_to_r4.
1100
1101         * basic-float.cs: Add a test for this.
1102
1103         Fixed part of #467201.
1104
1105 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1106
1107         * mini.c: Adjust locking order to the new semantics where the loader lock
1108         comes first.
1109
1110 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1111
1112         * aot-runtime.c:
1113         * mini-amd64.c:
1114         * mini-arm.c:
1115         * mini-ia64.c:
1116         * mini-mips.c:
1117         * mini-ppc.c:
1118         * mini-sparc.c:
1119         * mini-trampolines.c:
1120         * mini-x86.c:
1121         * mini.c:
1122         * tramp-alpha.c:
1123         * tramp-amd64.c:
1124         * tramp-arm.c:
1125         * tramp-hppa.c:
1126         * tramp-ia64.c:
1127         * tramp-mips.c:
1128         * tramp-ppc.c:
1129         * tramp-s390.c:
1130         * tramp-s390x.c:
1131         * tramp-sparc.c:
1132         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1133
1134 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1137         as it is incorrect.
1138
1139 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1140
1141         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1142         for cctors if needed.
1143
1144 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1145
1146         * mini-ppc.c: Fix build on Darwin.
1147
1148 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1149
1150         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1151         version instead of 3 as valgrind doesn't like version 3.
1152
1153         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1154
1155         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1156         usable for hashing methods.
1157         (emit_extra_methods): Use the new hash to avoid putting every method in the
1158         same hash bucket.
1159
1160         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1161
1162         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1163         whenever a method ref could match a method.
1164         
1165         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1166         test to fail.
1167         
1168         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1169         methods refs.
1170
1171         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1172
1173         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
1174         the encoding buffer.
1175
1176         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
1177         mono_method_get_header () on inflated methods as an optimization.
1178
1179 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1180
1181         * ssa.c (fold_ins): Fix another crash if the instruction following the
1182         switch was optimized away.
1183
1184 2009-02-16  Mark Probst  <mark.probst@gmail.com>
1185
1186         Contributed under the terms of the MIT/X11 license by Steven
1187         Munroe <munroesj@us.ibm.com>.
1188
1189         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
1190
1191 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
1194         around the mono_domain_alloc calls, it is now done by the functions
1195         themselves.
1196
1197         * aot-compiler.c (compile_method): Only add wrappers referenced by
1198         the method if compiling with full AOT.
1199         (mono_compile_assembly): Error out if --aot=full is specified on
1200         a platform where it is not supported.
1201
1202         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
1203         on ARM too.
1204
1205         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
1206         AOT support.
1207
1208         * aot-runtime.c (load_named_code): Handle 
1209         mono_arm_throw_exception_by_token.
1210
1211         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
1212
1213         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
1214         unaligned.
1215
1216         * Makefile.am (fullaotcheck): Exit if a test fails.
1217
1218         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
1219         on ARM.
1220         (mono_compile_assembly): Handle the assembler failing.
1221
1222         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
1223         accepting subsections of .bss.
1224
1225         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
1226         was optimized away.
1227
1228         * aot-compiler.c: Remove some unused includes.
1229         
1230         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
1231         now in MonoImageWriter.
1232
1233         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
1234         code sequence which matches a non-virtual call. Fixes #472654.
1235
1236 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
1239         xdebug code.
1240         
1241         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
1242         use the image/dwarf writers directly.
1243
1244         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
1245         field.
1246
1247         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
1248         MonoDwarfWriter.
1249
1250         * image-writer.h: Fix some typos.
1251
1252         * dwarfwriter.h dwarfwriter.c: New files.
1253         
1254         * aot-compiler.c: Extract the DWARF info writing functionality into a 
1255         separate module.
1256
1257         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
1258         argument to return unwind info.
1259
1260         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
1261
1262         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
1263         
1264         * aot-runtime.c (decode_method_ref): Add a case for 
1265         MONO_AOT_METHODREF_WRAPPER_NAME.
1266
1267         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
1268         for AOT.
1269
1270         * aot-compiler.c (encode_method_ref): Use the new constants.
1271
1272         * aot-runtime.c (decode_method_ref): Ditto.
1273
1274         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
1275         be compiled, not the icall itself.
1276
1277 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
1280         using decode_method_ref ().
1281
1282         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
1283         convert it to an in32. Fixes #475859.
1284
1285         * arrays.cs: Add a test.
1286
1287 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
1290         OP_LCONV_TO_U2.
1291
1292         * basic-long.cs: Add a test.
1293
1294 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1295
1296         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
1297         remove the frame pointer in leaf methods which don't receive any
1298         arguments, don't throw exceptions and don't do dynamic stack
1299         allocations.
1300
1301 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
1304         the fail_tramp changes. Hopefully fixes #475132.
1305
1306 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1307
1308         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
1309         instead of mono_metadata_signature_dup_full.
1310
1311 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
1314         for processing jump tables. Fixes #473787.
1315
1316 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1317
1318         * mini-generic-sharing.c: mini_method_get_context() just calls
1319         mono_method_get_context_general() now.
1320
1321         * mini.c, mini.h: Moved get_object_generic_inst(),
1322         construct_object_context_for_method() and
1323         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
1324
1325 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
1328         basic block fell through to its successor bblock without a branch. Fixes
1329         #474718.
1330
1331         * iltests.il.in: Add a test.
1332         
1333         * aot-compiler.c (encode_method_ref): Encode methods of array types.
1334         (can_encode_patch): We can now handle arrays of generic parameters and
1335         array methods.
1336
1337         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
1338
1339         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
1340         the AOT file to avoid some #ifdefs in aot-runtime.c
1341
1342         * mini.h: Bump AOT file format version.
1343
1344 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1345
1346         * Makefile.am (fullaotcheck): Make this run the tests.
1347
1348         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
1349
1350 2009-02-10  Mark Probst  <mark.probst@gmail.com>
1351
1352         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
1353         individually.  Fixes #473482.
1354
1355 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1356
1357         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
1358
1359 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
1360
1361         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
1362         (mono_compile_assembly): Hush compile warnings about
1363         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
1364         code path.
1365
1366 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
1369
1370         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
1371
1372         * aot-compiler.c: Fix arm support.
1373
1374         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
1375         img_writer_emit_unset_mode () function.
1376
1377         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
1378         (mono_unwind_get_dwarf_pc_reg): Ditto.
1379
1380         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
1381         Move almost all platform specific code to a set of arch_ functions, 
1382         and document them to ease porting.
1383         
1384         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
1385
1386         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
1387
1388         * aot-compiler.c: Extract the image writing functionality into a separate
1389         module to reduce the size of this file.
1390
1391 2009-02-09  Geoff Norton  <gnorton@novell.com>
1392
1393         * mini-s390.c: Fix the signature of emit_sig_cookie.
1394
1395 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
1398
1399         * aot-runtime.c (is_shared_got_patch): Ditto.
1400
1401         * aot-runtime.c (load_named_code): Cope with the fact that 
1402         decode_got_entry () won't decode the patch fully if its corresponding got
1403         entry is already filled.
1404         
1405         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
1406         Initialize *ji.
1407         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1408
1409         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
1410         as the moving pointer instead of 'buf' for consistency with the rest of the
1411         codebase.
1412         (mono_arch_create_monitor_exit_trampoline): Ditto.
1413
1414         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
1415         generic_class_init trampolines.
1416         (add_generic_class): Extract some code from add_generic_instances () into a
1417         separate function so it can be called from other places too.
1418         (compile_method): Call add_generic_class () for the classes of inflated methods
1419         referenced by the method.
1420         (can_encode_patch): Allow references to generic parameters.
1421
1422         * aot-runtime.c: Add support the patches required by the new trampolines.
1423         
1424         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
1425         support.
1426
1427         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
1428         full-aot support.
1429
1430         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
1431         this from get_throw_pending_exception, make the signature full aot compatible.
1432
1433         * Makefile.am (fullaotcheck): New target to run full-aot tests.
1434
1435         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
1436
1437         * exceptions.cs: Add a test.
1438
1439 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1442         use the DWARF_DATA_ALIGN constant instead.
1443
1444         * exception-<ARCH>.c: Update after the above change.
1445
1446         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1447         dwarf unwinder.
1448
1449         * mini-arm.c: Enable the dwarf unwinder.
1450
1451         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1452         instead of mono_class_setup_vtable ().
1453
1454 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1457         dwarf unwinder.
1458
1459         * mini-x86.h: Enable the dwarf unwinder.
1460
1461 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1462
1463         Fix mcs/tests/test-7.cs
1464         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1465         2009-02-03.
1466
1467 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1468
1469         * mini.c (print_jit_stats): Remove some unused statistics.
1470
1471 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1474
1475 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1476
1477         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1478         the method we get from mono_object_get_virtual_method() because
1479         that function does it properly, now.
1480
1481 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1484         opcodes. Fixes #472775.
1485
1486 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1487
1488         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1489         fact that mono_find_jit_info() sometimes returns the context
1490         corresponding to the jit info in new_ctx.  Fixes #472600.
1491
1492 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
1495         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
1496         klass->enum_basetype directly.
1497
1498         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
1499         enum subtypes.
1500
1501         * unwind.c: Avoid 0 sized arrays.
1502
1503 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1506         size on systems with 64k pages. Fixes #471389.
1507
1508 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1509
1510         Contributed under the terms of the MIT/X11 license by Steven
1511         Munroe <munroesj@us.ibm.com>.
1512
1513         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1514         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1515         necessary.
1516
1517 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1518
1519         Contributed under the terms of the MIT/X11 license by Steven
1520         Munroe <munroesj@us.ibm.com>.
1521
1522         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1523         comparison fix.
1524
1525         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1526         The trampoline can be longer on PPC64.
1527
1528 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1529
1530         Contributed under the terms of the MIT/X11 license by Steven
1531         Munroe <munroesj@us.ibm.com>.
1532
1533         * mini-ppc.c: Compiler warning fixes and trivial code
1534         simplifications.
1535
1536 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1537
1538         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1539         ins->dreg which could be a hardware register, not a vreg.
1540
1541         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1542         
1543         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1544         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1545
1546         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1547         
1548         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1549         ->dreg, that is not the vreg we are looking for.
1550
1551         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1552
1553         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1554         LIVERANGE_END.
1555
1556         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1557         strange crashes.
1558
1559 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1562
1563         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1564         the line diff is 0.
1565
1566         * aot-compiler.c: Add xdebug support on x86.
1567
1568         * unwind.c: Add x86 support.
1569         
1570         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1571         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1572
1573         * mini.c (mini_method_compile): Ditto.
1574         
1575         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1576         the variable index.
1577
1578         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1579         which mimic .push_section/.pop_section in GAS.
1580         
1581         * aot-compiler.c: Emit precise live range information for variables.
1582
1583         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1584
1585         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1586         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1587         them.
1588
1589         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1590         the live ranges of variables.
1591
1592         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1593         of the variable in terms of native offsets.
1594
1595 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1596
1597         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1598         
1599 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1600
1601         Contributed under the terms of the MIT/X11 license by Steven
1602         Munroe <munroesj@us.ibm.com>.
1603
1604         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1605         order (offset then base reg) for ppc_load_multiple_regs.
1606         (emit_save_saved_regs) Correct operand order for
1607         ppc_store_multiple_regs.
1608         (mono_arch_get_call_filter): Correct operand order for
1609         ppc_load_multiple_regs.
1610
1611         * mini-ppc.c (emit_memcpy): Fix operand order for
1612         ppc_load_reg_update and ppc_store_reg_update.
1613         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1614         (mono_arch_emit_epilog): Correct operand order for
1615         ppc_load_multiple_regs.
1616
1617         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1618         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1619
1620 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1621
1622         * cpu-ppc64.md: Fixed storer4_memindex length.
1623
1624 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1625
1626         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1627         line number info.
1628         
1629         * aot-compiler.c (emit_line_number_info): Optimize this.
1630
1631 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1634         
1635         * aot-compiler.c: Add debug info for methods without debug info by
1636         emitting an IL file and having the line number info referencing that file.
1637
1638         * aot-compiler.c: Optimize the size of the generated line number info.
1639
1640         * aot-compiler.c: Emit line number info in xdebug mode.
1641
1642         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1643         million arguments.
1644
1645 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1648
1649         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1650         is used.
1651
1652 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1653
1654         * basic-calls.cs: Test for the weird crash found on arm.
1655         
1656 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1657
1658         * cpu-arm.md: Increase the size of storer8_membase_reg and
1659         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1660
1661         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1662         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1663         reg to LR otherwise we'll be loading/storing from just the offset.
1664
1665 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1666
1667         Question: if we are storing gint32's inside the "*native_offset",
1668         should we change the signature to "gint32 *native_offset" to
1669         ensure that we do not have type definition problems?
1670         
1671         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1672         an int * as this is what the other function expects, causes
1673         problems with Freescale's compiler that defined int32_t to be a
1674         long and makes int incompatible 
1675
1676 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1677
1678         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1679         filename conflict with bjam.
1680
1681 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1682
1683         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1684         as it might use decomposed ops.
1685
1686 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1689
1690         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1691         is defined.
1692
1693         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1694
1695         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1696         offsets.
1697
1698         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1699         way registers are stored in MonoContext on arm.
1700
1701         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1702         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1703
1704         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1705
1706         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1707
1708         * mini.c (mini_init): Register mono_isfinite.
1709
1710         * jit-icalls.c (mono_isfinite): New jit icall.
1711
1712         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1713         
1714         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1715         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1716         the parent frame.
1717
1718 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1719
1720         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1721         separate frame and stack pointers, so we must use FP to find the register
1722         spill area.
1723         The FP reg is retrieved from the MonoContext::regs array.
1724
1725 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1726
1727         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1728         as FPA requires it.
1729
1730 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1731
1732         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1733         return R4 and R8 when not running under softfloat.
1734
1735         Fixes basic-calls.exe
1736
1737 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * mini-arm.c: Implement some overflow opcodes.
1740
1741 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1742
1743         * ssa.c: handle another alloca.h
1744
1745         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1746         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1747         MONO_ARCH_USE_SIGACTION. 
1748
1749         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1750         capability defines.
1751
1752         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1753
1754         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1755         PPC targets as sigaction does not exist on all platforms, define
1756         this on a per-platform basis.
1757
1758         Instead of erroring out if the platform is not defined, include
1759         mini-ppc-os.h, and expect that the OS specific setting provides
1760         the required information.   
1761
1762 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * aot-compiler.c: Fix --enable-minimal=aot.
1765
1766 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1769         previous change.
1770
1771 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * exceptions-arm.c: Fix warnings.
1774
1775         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1776         ARM.
1777
1778         * mini-x86.c: Fix --enable-minimal=jit build.
1779
1780         * mini.c: Really fix --enable-minimal=jit build.
1781         
1782         * mini.c (construct_object_context_for_method): Move this outside
1783         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1784
1785         "Backported" of r124984 from 2.0 branch.
1786         
1787         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1788
1789         "Backport" of r124977 + r124978 from 2.0 branch.
1790         
1791         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1792         to avoid calling mono_exception_from_token () from the throw trampoline.
1793         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1794         for throwing corlib exceptions, this fixes full-aot support for corlib
1795         exceptions.
1796
1797         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1798
1799 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1800
1801         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1802         part of the changes to split the code in mini into operating
1803         system specific files.
1804
1805         This patch was done by copying mini.c to the respective files to
1806         preserve SVN history.
1807
1808 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1811
1812 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1815         remoting-invoke-with-check wrappers of shared methods.
1816
1817         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1818
1819 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1820
1821         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1822         optimization if the top of stack is the last instruction in the
1823         bblock.  Otherwise it might have been used after its definition.
1824         Fixes #469742.
1825
1826 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1829         method as well when get_vcall_slot () fails to match a code sequence.
1830
1831         * mini-arm.c: Fix the android build, which doesn't have
1832         __aeabi_read_tp.
1833
1834 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1837         the s390x build.
1838
1839 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1840
1841         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1842
1843 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1846         and put its id into jinfo->used_regs. This is only used on amd64,
1847         which is currently the only platform generating unwind info.
1848
1849         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1850         the dwarf unwinder. This is required to correctly handle async exceptions
1851         like thread abort and stack overflows, which can happen while a method
1852         is in the middle of its prolog or epilog.
1853         
1854         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1855         the unwind info belonging to an AOTed method.
1856
1857         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1858         into cfg->unwind_ops.
1859         
1860         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1861
1862         * mini.c (mini_init): Call mono_unwind_init ().
1863         (mini_cleanup): Call mono_unwind_cleanup ().
1864
1865         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1866         unwind info to be shared between methods.
1867
1868         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1869         saved in the LMF.
1870
1871         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1872         get_throw_pending_exception () to avoid initialization races.
1873
1874         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1875         mono_arch_exceptions_init () function.
1876
1877         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1878
1879 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1880
1881         * mini.c (mono_get_domain_intrinsic): New helper function.
1882         (mono_get_thread_intrinsic): Ditto.
1883
1884         * mini-arm.c mini-ia64.c: Use the new helper functions.
1885         
1886         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1887         the last constrained_call change, since it is needed in the non-AOT
1888         case as well.
1889
1890         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1891         
1892         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1893         mono_get_lmf_addr () on arm eabi linux.
1894
1895 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1896
1897         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1898         code sequence which matches a non-virtual call.
1899
1900 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1901
1902         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1903         stack pointer (r1).
1904
1905 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1908         runtime-invoke wrappers, since they are also shared based on signature.
1909
1910 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1911
1912         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1913         info from the (correct) context.
1914
1915 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1918         
1919         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1920         using dwarf unwinding info. Not yet used.
1921
1922         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1923
1924 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1925
1926         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1927         descriptors.
1928
1929         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1930         special case and handle mono_arch_delegate_invoke_impl() returning
1931         function descriptors.
1932
1933         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1934         trampolines return function descriptors, too.
1935
1936 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1937
1938         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1939         out_of_line optimization.
1940
1941 2009-01-21  Martin Baulig  <martin@ximian.com>
1942
1943         * mini.h
1944         (MonoCompile): Added `disable_deadce_vars' to disable removing
1945         unused variables.
1946
1947         * mini.c
1948         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1949         inside the debugger.
1950
1951         * liveness.c (mono_analyze_liveness): Don't remove any unused
1952         variables if `cfg->disable_deadce_vars' is set.
1953
1954 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1955
1956         * method-to-ir.c: Only apply exception constructor optimization if
1957         the the method actually belongs to an exception class.  Fixes
1958         #467456.
1959
1960 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1963         change inside a #ifdef __mono_ppc64__.
1964
1965         * aot-compiler.c (compile_method): Remove the previous limitation.
1966
1967         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1968         on type variables in AOTed code.
1969         
1970         * aot-compiler.c (compile_method): Skip generic methods having type 
1971         constraints on their generic parameters.
1972
1973         * aot-compiler.c (compile_method): Check for methods which cannot be
1974         encoded inside RGCTX_FETCH patches as well.
1975
1976         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1977         build.
1978
1979 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1980
1981         * method-to-ir.c: Force the vtable variable in shared generic code
1982         for the case that they might show up on a stack trace where they
1983         are needed.
1984
1985         * mini-exceptions.c: Save and use generic sharing info as well as
1986         IP in stack traces to resolve shared generic instantiations.
1987
1988 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1991         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1992
1993 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1994
1995         * method-to-ir.c: Do generic sharing for array constructors.
1996
1997 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1998
1999         * mini-exceptions.c (mono_print_thread_dump): Add information
2000         about the thread state using wapi_current_thread_desc.
2001
2002 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2003
2004         * basic-simd.cs: Tests for the new constructors. 
2005
2006 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2007
2008         * mini-ops.h: Added OP_EXPAND_*
2009
2010         * cpu-x86.md: Same.
2011
2012         * mini-x86.c (mono_arch_output_basic_block): Same.
2013         
2014         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2015
2016 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2017
2018         * iltests.il.in: Add a test for #467385.
2019
2020 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2021
2022         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2023         thread been cleaned up is not the same currently in execution.
2024
2025         Fixes appdomain-unload crashes on windows, osx and linux variants
2026         without the __thread keyword.
2027
2028 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2029
2030         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2031         (koush@koushikdutta.com). Implement this for android.
2032
2033         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2034         begins with a digit.
2035
2036         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2037         mono_marshal_get_write_barrier ().
2038
2039 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2040
2041         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2042         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2043         that pass them on a register pair.
2044
2045         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2046         test was crashing due to that.
2047
2048 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2049
2050         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2051         trampoline code. Include ucontext.h only if available.
2052
2053 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2054
2055         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2056         and doesn't check whether it's sharable, like it was before
2057         removing the shared generics hash.  This brings IronPython
2058         performance back to what it was before that change.
2059
2060 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2061
2062         * method-to-ir.c: Handle delegate invocation optimization earlier,
2063         otherwise it would be handled (much more slowly) by the
2064         final/sealed optimization.
2065
2066 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2069         domain is not set. Fixes #465864.
2070
2071 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2072
2073         * method-to-ir.c: Don't stop sharing of generic methods with catch
2074         clauses - we already handle those.
2075
2076 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2077
2078         * mini.c, mini.h: lookup_generic_method() is now
2079         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2080         making the shared_generics_hash obsolete.
2081
2082 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2083
2084         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2085         use the red zone.  Make room on the stack first and then use it,
2086         not the other way around.
2087
2088 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2089
2090         * mini.c (mini_init): Call mono_xdebug_init ().
2091
2092         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2093
2094 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2097
2098         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2099         trampolines.
2100
2101         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2102         debug+unwind info for trampolines.
2103
2104         * mini.c (mono_create_unwind_op): New helper function.
2105
2106         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2107
2108 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2109
2110         * aot-compiler.c: Fix the build.
2111
2112 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2113
2114         * Makefile.am: Update dtrace-prelink.sh location.
2115
2116 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2119         optimization. Fixes #464520.
2120
2121 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2122
2123         * mini-amd64.c : Adding code to save/restore non-volatile registers
2124            on Winx64.
2125
2126         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2127           registers on Winx64.
2128
2129         Contributed under MIT/X11 license.
2130
2131 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2132
2133         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2134         __GNUC_MINOR__ which can break when the major version changes.
2135
2136 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2137
2138         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2139
2140 2009-01-07  Geoff Norton  <gnorton@novell.com>
2141
2142         * helpers.c:  Allow mono -v -v -v to work on darwin.
2143
2144 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2145
2146         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2147           pattern. 
2148
2149         Contributed under MIT/X11 license.
2150
2151 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2152
2153         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2154         instead of directly accessing type->data.klass. Fixes #462016.
2155         (mono_allocate_stack_slots_full): Ditto.
2156
2157         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2158         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2159
2160         * aot-compiler.c (emit_plt): Fix ARM build.
2161
2162 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2165         
2166         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2167         change.
2168
2169         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2170         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2171         #463357.
2172
2173         * iltests.il.in: Add a regression test.
2174
2175 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2176
2177         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
2178
2179 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2180
2181         * basic-simd.cs: Add a regression test for #462457.
2182
2183 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2184
2185         * mini-ops.h: Add a definition of XPHI.
2186
2187         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
2188
2189         * ssa.c (op_phi_to_move): Handle XPHI.
2190
2191         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
2192
2193         Fixes #462457
2194
2195 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2196
2197         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
2198
2199 2008-12-31  Geoff Norton  <gnorton@novell.com>
2200
2201         * mini-ppc.c: The prolog size allocated can be too small for darwin
2202         ppc32 under certain circumstances.  Also fix a small logic bug.
2203
2204 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
2205
2206         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
2207         while loading AOT methods.
2208
2209         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
2210         since only the former is nulled out after a successful cast. This prevents
2211         crashes with rethrown exceptions when using --debug=casts.
2212
2213 2008-12-24  Mark Probst  <mark.probst@gmail.com>
2214
2215         * mini.h: New macro for checking whether a method is final,
2216         i.e. whether the method or its class is marked final.
2217
2218         * method-to-ir.c: Use the new macro for all final-checks
2219         consistently.  Fixes the crash in the System.ServiceModel tests.
2220
2221 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2222
2223         * mini-exceptions.c (get_exception_catch_class): Corrected another
2224         overly strict assertion.
2225
2226 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2227
2228         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
2229         Clobbering it is not allowed because the caller might use it as
2230         the vtable register in the interface call.
2231
2232 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2233
2234         * mini-exceptions.c (get_exception_catch_class): Corrected an
2235         overly strict assertion.
2236
2237 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
2238         
2239         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
2240
2241         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
2242
2243         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
2244
2245         * cpu-mips.md: correct lengths for certain long_ opcodes.
2246
2247         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
2248
2249         * 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().
2250         
2251 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2252
2253         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
2254         
2255 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2256         
2257         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
2258         
2259 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2260
2261         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
2262         next basic block.
2263         
2264 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
2265
2266         * 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
2267
2268         * 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)
2269         
2270 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
2271         
2272         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
2273         
2274 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
2277         gshared code. Fixes #458947.
2278
2279         * generics.cs: Add a test.
2280
2281 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2282         
2283         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2284         
2285         * mini-mips.c: first pass n32 code generation.
2286
2287         * mini-mips.h: datatypes and defines for n32 support.
2288
2289         * exceptions-mips.c: first pass n32 code generation.
2290         
2291         * tramp-mips.c: first pass n32 code generation.
2292         
2293         * cpu-mips.md: add long_ opcodes.
2294         
2295 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2296
2297         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2298
2299         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2300         
2301         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2302         
2303         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2304
2305         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2306
2307         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2308
2309         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2310
2311         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2312
2313         * helpers.c: for mips/n32, don't pass -mips32 to objdump
2314
2315 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
2316
2317         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
2318
2319 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
2320
2321         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
2322
2323 2008-12-12  Mark Probst  <mark.probst@gmail.com>
2324
2325         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
2326         descriptors for helper functions directly in front of the code.
2327
2328 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2329
2330         * method-to-ir.c: Removed an unnecessary assertion.
2331
2332 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * method-to-ir.c: Merge SGEN changes from the old JIT.
2335
2336 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * driver.c (compile_all_methods_thread_main): Handle failure of
2339         mono_get_method ().
2340
2341 2008-12-10  Mark Probst  <mark.probst@gmail.com>
2342
2343         * mini-ppc.c: Merged with mini-ppc64.c.
2344
2345         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
2346
2347         * Makefile.am: Use the same sources for PPC and PPC64.
2348
2349         * mini-ppc64.c: Removed.
2350
2351 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2352
2353         * branch-opts.c (remove_block_if_useless): Extract fall through detection
2354         code to mono_bb_is_fall_through.
2355         
2356         * branch-opts.c (mono_remove_critical_edges): Same.
2357
2358 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2359
2360         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
2361         expect that an OP_BR_REG will be there.
2362
2363 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2364
2365         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
2366         for the many branch ops. The original check miss OP_BR_REG.
2367
2368         Fixes #457574.
2369         
2370 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2371
2372         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
2373
2374 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
2377         while holding the aot lock.
2378
2379 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2380
2381         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
2382         
2383 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2384
2385         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
2386           to release all runtime callable wrappers held by the runtime.
2387
2388         Contributed under MIT/X11 license.
2389
2390 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2391
2392         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
2393           for Winx64.
2394
2395         Contributed under MIT/X11 license.
2396
2397 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2398
2399         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
2400         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
2401
2402 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2403
2404         * cpu-mips.md: fix ckfinite length
2405
2406         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
2407         (mono_arch_lowering_pass): cleanup, rearrange for clarity
2408         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
2409         
2410 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
2411
2412         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
2413         
2414 2008-12-08  Geoff Norton  <gnorton@novell.com>
2415
2416         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
2417         size by 8 bytes as well.
2418
2419 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * basic-simd.cs: Fix method names for Vector16b.
2422         
2423 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2424
2425         * basic-simd.cs: Fix method names for Vector16sb.
2426
2427 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2428
2429         * basic-simd.cs: Fix method names for Vector8us.
2430         
2431 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2432
2433         * basic-simd.cs: Fix method names for Vector8s.
2434         
2435 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2436
2437         * basic-simd.cs: Fix method names for Vector4ui.
2438
2439 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2440
2441         * basic-simd.cs: Fix method names for Vector2l.
2442
2443 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2444
2445         * basic-simd.cs: Fix method names for Vector2d.
2446
2447 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2448
2449         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2450         that are extension methods.
2451
2452 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2453
2454         * basic-simd.cs: Fix method names for Vector4f.
2455
2456 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2459         as such. Fixes #456669.
2460
2461 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2462
2463         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2464         
2465 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2466
2467         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2468         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2469         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2470         (mips_adjust_stackframe): handle FP spills
2471                 
2472         * mini-ops.h: add mips_mtc1_s2
2473         
2474         * cpu-mips.md: add mips_mtc1_s2
2475         
2476 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * unwind.c: New file, move the unwind info encoding functions here from
2479         aot-compiler.c, so they could be used at runtime too.
2480
2481 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2482
2483         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2484         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2485         
2486 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2487
2488         * mini-mips.c: cleanup warnings
2489         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2490         (mips_adjust_stackframe): handle case of taking the address of stack locals
2491         
2492 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * aot-compiler.c: Implement a few functions missing from the asm writer.
2495         (emit_method_code): Only write symbols for methods when using the bin
2496         writer, since the assembler can't deal with the characters in our method
2497         names.
2498
2499         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
2500
2501         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
2502         call.
2503
2504         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
2505         a bit to also restore %rax.
2506
2507 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2508
2509         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2510
2511 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2512
2513         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2514         arguments.
2515
2516 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2517
2518         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2519
2520         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2521         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2522
2523         * exceptions-ppc64.c: Removed.
2524
2525         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2526
2527 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2528
2529         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2530         tramp-ppc64.c.
2531
2532         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2533
2534         * tramp-ppc64.c: Removed.
2535
2536 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2539         the TYPESPEC table.
2540
2541 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2542
2543         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2544
2545         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2546         mini-ppc.h instead of mini-ppc64.h.
2547
2548         * mini-ppc64.h: Removed.
2549
2550 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2551
2552         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2553         
2554         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2555         
2556 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2557
2558         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2559         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2560         code easier.
2561
2562 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2563
2564         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2565
2566 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2567
2568         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2569
2570 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2571
2572         * basic-simd.cs: Tests for operator == and != on Vector4f.
2573
2574 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2575
2576         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2577
2578         * simd-intrinsics.c: Kill useless enum.
2579
2580 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2581
2582         * cpu-mips.md: add long_conv_to_ovf_i4_2
2583         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2584
2585 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2586
2587         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2588         
2589         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2590
2591 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2592
2593         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2594         
2595 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2596
2597         * basic-simd.cs: Add tests for new methods.
2598
2599 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2600
2601         * simd-intrinsics.c: Add support for operator == and !=
2602         on Vector4(u)i.
2603
2604         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2605
2606 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2607
2608         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2609
2610 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2613
2614         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2615         MONO_PATCH_INFO_ICALL_ADDR.
2616
2617         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2618
2619         * aot-compiler.c: Resurrect full-aot support.
2620
2621 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2622
2623         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2624         
2625 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2626
2627         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2628         
2629 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2630
2631         * basic-simd.cs: Fix tests to work under ppc.
2632         Remove tests for methods that will be removed.
2633
2634 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2635
2636         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2637         generic type (via a typedef or typeref) correctly.
2638
2639 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2642         diagnose an assertion failure.
2643
2644 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2645
2646         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2647         Fix trampoline size.
2648
2649         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2650         conversion opcodes are implemented natively instead via emulation.
2651
2652 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2653
2654         * cpu-mips.md: remove mips_xori
2655
2656         * mini-ops.h:  remove mips_xori
2657
2658         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2659
2660         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2661         
2662         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2663         
2664 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2665
2666         * cpu-mips.md: fix instruction lengths.
2667
2668         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2669
2670         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2671
2672         * mini-ops.h: fix slti / sltiu op profiles.
2673         
2674 2008-12-02  Martin Baulig  <martin@ximian.com>
2675
2676         * method-to-ir.c (mono_method_to_ir): Disable debugging
2677         information for the init locals block to make the debugger stop
2678         after all locals have been initalized.
2679
2680 2008-12-02  Martin Baulig  <martin@ximian.com>
2681
2682         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2683         running inside the debugger.
2684
2685 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2686
2687         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2688         is enabled.
2689
2690         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2691         alu->alu imm optimization which only shows if deadce is disabled.
2692
2693         * aot-compiler.c: Rename the function names for the binary and asm writers
2694         so they can coexist in the same process. Rework the xdebug code to use the
2695         asm writer. This avoids the need to call into the runtime to dump the
2696         debugging info. Add more debugging info for types.
2697
2698         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2699
2700         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2701         cpu description tables, they can't occur in cpu-<ARCH>.md.
2702
2703         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2704         the stack in CEE_LDFLDA. Fixes #450542.
2705
2706         * generics.cs: Add a new test.
2707
2708 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2709
2710         * mini-ops.h: updated MIPS opcodes
2711         * mini-mips.c: decompose long opts
2712         * mini-mips.h: decompose long opts
2713         
2714 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2715
2716         * cpu-mips.md: fix length on int_rem_un
2717         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2718         
2719 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2720
2721         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2722
2723         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2724
2725 2008-11-29  Martin Baulig  <martin@ximian.com>
2726
2727         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2728         mono_debug_using_mono_debugger() in addition to the
2729         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2730
2731 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2732
2733         * mini-ops.h: updated more MIPS opcodes
2734         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2735         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2736         
2737 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2738
2739         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2740
2741 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2742
2743         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2744         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2745         * mini-ops.h: correct selected mips opcode entries
2746         
2747 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2748
2749         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2750         make them work.
2751
2752 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2753
2754         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2755
2756 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2757
2758         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2759         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2760         * mini-mips.h: disable IMT
2761         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2762         
2763 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2764
2765         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2766
2767 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2768
2769         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2770
2771 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2774         consistency.
2775
2776 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2777
2778         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2779         for Set/GetVector aligned versions.
2780
2781 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2782
2783         * basic-simd.cs: Add tests for Get/SetVector.
2784
2785 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2786
2787         * mini.c: Removed g_slist_append_mempool().  Now in
2788         metadata/mempool.c.
2789
2790 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2791
2792         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2793         size properly and make the bounds check optional.
2794
2795         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2796         for SetVector and IsAligned.
2797
2798 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * mini.c: Remove unused mono_normalize_opcodes () function.
2801
2802 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2803
2804         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2805         using the new atomic add ops now.
2806
2807         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2808         add.
2809
2810 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2811
2812         * mini-ppc64.c: Several fixes.
2813
2814 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2815
2816         * cpu-mips.md: added jump_table
2817         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2818
2819 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2820
2821         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2822
2823 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2824
2825         * mini-ops.h: corrected a handful of MIPS opcodes.
2826
2827 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2828
2829         * aot-compiler.c: MIPS to use ELF writer
2830
2831 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2832
2833         * mini-codegen.c: remove MIPS specific assert.
2834
2835 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2836
2837         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2838         fixes.  PPC64 now passes most of the runtime regressions.
2839
2840 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2841
2842         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2843         volatile intervals a bit.
2844
2845 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2846
2847         * basic-long.cs: New test case.
2848
2849 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2850
2851         * mini.c (mini_method_compile): Disable globalra for large methods for 
2852         now.
2853
2854         * regalloc2.c (order_moves): Add fp support.
2855
2856         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2857         source bblock ends with an OP_BR_REG.
2858
2859         * ratests.cs: Add a new test.
2860
2861 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2862
2863         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2864         sharing.  PPC64 now passes generics.exe.
2865
2866 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2867
2868         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2869
2870 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2873         memory when mono_jit_info_table_find () can't find the method in the
2874         LMF case.
2875
2876         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2877         AOTed code too.
2878         
2879         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2880         writer too.
2881
2882 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2883
2884         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2885         Several fixes.  PPC64 now runs exceptions.exe and
2886         devirtualization.exe.
2887
2888 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2889
2890         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2891         arrays.exe and basic-math.exe.
2892
2893 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2894
2895         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2896         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2897
2898 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2899
2900         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2901
2902 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2903
2904         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2905
2906         * ir-emit.h: Move macros from method-to-ir.c to here.
2907
2908 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2909
2910         * mini-ops.h: Correct the long simd ops to use LREG.
2911
2912 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2913
2914         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2915         
2916         * mini-ops.h: Correct the dreg type of a few long opcodes.
2917
2918         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2919         Add netbsd support.
2920
2921 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2922
2923         * mini-ppc.c: remove negative stack references in epilog
2924         for platforms that don't support the red zone.
2925
2926 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2927
2928         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2929         point regs.  Now PPC64 passes basic-calls.exe.
2930
2931 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2932
2933         * basic-simd.cs: Add tests for accessors of Vector2l.
2934
2935 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2936
2937         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2938
2939         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2940         
2941         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2942
2943 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2944
2945         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2946         PPC64 passes basic-long.exe.
2947
2948 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2949
2950         * decompose.c: Decompose carry and overflow add on PPC64 like on
2951         other 64 bit archs.  Don't decompose sub at all on PPC64.
2952
2953         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2954         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2955         basic-long.exe.
2956
2957 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * basic-simd.cs: Add tests for accessors of Vector2d.
2960
2961 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2962
2963         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2964
2965         * cpu-x86.md: Same.
2966
2967         * mini-x86.c (mono_arch_output_basic_block): Same.
2968         
2969         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2970
2971 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2972
2973         * basic-simd.cs: Add tests for accessors of Vector4f.
2974
2975 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2976
2977         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2978
2979         * cpu-x86.md: Same.
2980
2981         * mini-x86.c (mono_arch_output_basic_block): Same.
2982         
2983         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2984
2985 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2986
2987         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2988
2989 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2990
2991         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2992
2993         * cpu-x86.md: Same.
2994
2995         * mini-x86.c (mono_arch_output_basic_block): Same.
2996         
2997         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2998
2999 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3000
3001         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3002
3003 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3004
3005         * simd-intrinsics.c: Enable setters for Vector16sb.
3006
3007 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3008
3009         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3010
3011         * cpu-x86.md: Same.
3012
3013         * mini-x86.c (mono_arch_output_basic_block): Same.
3014         
3015         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3016
3017 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3018
3019         * simd-intrinsics.c: Implement setter for Vector8us.
3020
3021 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3022
3023         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3024         for dead variables.
3025
3026 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3027
3028         * mini-ppc.c: remove references to the red zone in the prolog
3029         (for systems that don't support it).
3030
3031 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3032
3033         * cpu-ppc64.md: Fixed a few instruction lengths.
3034
3035         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3036         now.
3037
3038 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3039
3040         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3041         basic.exe now.
3042
3043 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3046
3047 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3048
3049         * mini-ops.h: Added OP_INSERT_I2.
3050
3051         * cpu-x86.md: Same.
3052
3053         * mini-x86.c (mono_arch_output_basic_block): Same.
3054         
3055         * simd-intrinsics.c: Implement setter for Vector8s.
3056
3057         * simd-methods.h: Add the names of get setters of Vector8s.
3058
3059 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3060
3061         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3062         
3063         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3064         parameters.
3065
3066         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3067
3068 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3069
3070         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3071         for PPC64.  An empty program runs now.
3072
3073 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3074
3075         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3076
3077         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3078         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3079         info for JITted code is emitted into a shared library, loadable into gdb.
3080
3081 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3082
3083         * Makefile.am: Changes to build PPC64.
3084
3085         * mini-arch.h: Include mini-ppc64.h on PPC64.
3086
3087 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3088
3089         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3090         in PPC code up to r119147.
3091
3092 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3093
3094         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3095         cpu-ppc64.md: Changes for PPC64.
3096
3097         Based on code submitted by andreas.faerber@web.de at
3098         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3099         X11/MIT license.
3100
3101 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3102
3103         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3104         cpu-ppc64.md: Copied from the corresponding PPC files from
3105         r118846.
3106
3107 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3108
3109         * mini-ops.h: Added OP_ROUND.
3110
3111         * cpu-x86.md: Added round.
3112
3113         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3114
3115         * basic-math.cs: Added test_0_round to test rounding.
3116
3117         Contributed under MIT/X11 license.
3118
3119 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3120
3121         * aot-compiler.c : Fix the Winx64 build.
3122
3123         Contributed under MIT/X11 license.
3124
3125 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3126
3127         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3128         in OP_EXTRACT_R8 to avoid possible stack corruption.
3129
3130 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3131
3132         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3133
3134         * cpu-x86.md: Added extract_r8.
3135
3136         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3137         
3138         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3139         a couple of OP_EXTRACT_I4.
3140
3141         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3142
3143         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3144
3145 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3146
3147         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3148         and not 4.1. 
3149
3150 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3153         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3154
3155         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3156         are not needed any more.
3157
3158         * mini.h: Remove the unused INS_LIST macros.
3159
3160         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3161         longer needed.
3162
3163         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3164         ir-emit.h.
3165
3166         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3167         mono_alloc_ireg () instead.
3168
3169         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3170         macros.
3171
3172         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3173         on amd64.
3174
3175         * aot-runtime.c (load_aot_module): Disable AOT when running under
3176         CAS.
3177
3178         * mini-amd64.h: Change the monitor fastpath defines to check for
3179         !PLATFORM_WIN32 so they work on *bsd too.
3180
3181         * mini.h mini.c mini-hhpa.c: Remove more unused code.
3182
3183         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
3184
3185         * mini.h (MonoCompile): Remove new_ir flag.
3186
3187         * regalloc.h regalloc.c: Remove unused code.
3188
3189         * cpu-*.md: Remove more unused opcodes.
3190
3191         * simple-cee-ops.h simple-mini-ops.h: Removed.
3192
3193         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
3194         
3195 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3196
3197         * aliasing.h: Removed.
3198
3199         * *.c: Remove references to aliasing.h and inssel.h.
3200
3201         * mini.c: Remove additional unused functions.
3202
3203         * mini-ops.h cpu-*.md: Remove unused opcodes.
3204
3205 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3206
3207         Remove the old JIT code.
3208
3209         * inssel*.brg: Removed.
3210
3211         * ssa.c abcremoval.c aliasing.c: Removed.
3212
3213         * ssa2.c: Renamed to ssa.c.
3214
3215         * abcremoval2.c: Renamed to abcremoval.c.
3216
3217         * *.c: Removed all !cfg->new_ir code.
3218
3219         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
3220         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
3221
3222         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
3223         
3224 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3225
3226         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
3227         to simplify the code and cut back on the number of global symbols in the AOT
3228         file.
3229         
3230         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
3231
3232 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
3233
3234         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
3235         with the got/got_info tables.
3236
3237         * mini.h: Bump AOT file format version.
3238         
3239         * unwind.h: New file, contains definitions for stack unwinding.
3240
3241         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
3242         to cfg->unwind_ops.
3243         
3244         * aot-compiler.c: Generalize the emitting of unwind information to use the
3245         information in cfg->unwind_ops.
3246
3247         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
3248
3249         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
3250         AOT method frames. Enable writing symbols for methods by default.
3251
3252 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
3253
3254         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
3255         and make it work with vectors of element sizes 1, 2 and 4.
3256
3257         * simd-intrinsics.c: Enable getter for all vectors with element size
3258         1, 2 or 4.
3259
3260         * simd-methods.h: Add the names of other getters.
3261
3262         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
3263
3264         * cpu-x86.md: Same.
3265
3266         * mini-x86.c: Same.
3267
3268 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
3269
3270         * mini-ppc.h: portability fix.
3271
3272 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3273
3274         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
3275         buggy and will overwrite it.
3276
3277 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3278
3279         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
3280         Use it to emit local symbols for all methods so AOTed methods show up with
3281         their full name in gdb/valgrind output.
3282
3283 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
3284
3285         * mini-ppc.c: portability fixes.
3286
3287 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3288
3289         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
3290         entries out of the if (!generic_shared...) code so it is always done.
3291         (mono_class_init_trampoline): Do the patching when running under valgrind
3292         too, newer versions of valgrind have no problems with it.
3293
3294 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
3297         further sections.
3298
3299 2008-11-13  Mark Probst  <mark.probst@gmail.com>
3300
3301         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
3302         filters.
3303
3304 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3305
3306         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
3307
3308 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3309
3310         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
3311
3312         * cpu-x86.md: Same.
3313
3314         * mini-x86.c: Same.
3315
3316         * simd-intrinsics.c: Same.
3317
3318 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3319
3320         * simd-intrinsics.c: Enable constructor intrinsics for all types.
3321
3322 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3323
3324         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
3325         to work with more Vector types.
3326
3327 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3328
3329         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
3330         store the elemens directly instead of using and intermediate.
3331
3332 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3333
3334         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
3335
3336         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
3337         to preserve %eax for aot plt trampolines.
3338
3339         * aot-compiler.c (compile_method): Don't skip synchronized methods.
3340         (encode_method_ref): Flag synchronized methods so they won't go through
3341         the AOT trampoline.
3342
3343         * aot-compiler.c: Additional work to support AOTing synchronized methods/
3344         wrappers.
3345
3346         * cpu-ia64.md (jmp): Increase max length.
3347
3348 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3349
3350         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
3351         open generic classes.
3352
3353         * aot-compiler.c: Enable the ELF writer on ELF platforms.
3354
3355         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
3356         box+brtrue optimization since it causes test failures on x86.
3357
3358 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3359
3360         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
3361
3362         * cpu-x86.md: Same.
3363
3364         * mini-x86.c: Same.
3365
3366         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
3367         for simd ctor values. 
3368
3369         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
3370         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
3371
3372 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3373
3374         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
3375         LogicalRightShift.
3376
3377         * simd-instrincs.c: Same.
3378
3379         * basic-simd.cs: Same.
3380
3381 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3382
3383         * ratests.cs: Add more tests.
3384
3385         * regalloc2.c (add_spill_code): Handle more corner cases.
3386
3387 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
3390         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
3391         both the source an destination of an instruction.
3392
3393 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3394
3395         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
3396         wapihandles.c: more portability changes.
3397
3398 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
3399
3400         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
3401         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
3402         safe to execute in a signal handler and the kernel provides better
3403         the info in /proc/self/smaps. Avoid the assert on sigaction during
3404         cleanup.
3405
3406 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3407
3408         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
3409         do the bblock linking hack if it is actually needed.
3410
3411         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
3412         up linking.
3413
3414         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
3415         crash problem is fixed.
3416
3417         * branch-opts.c (mono_remove_critical_edges): Link up newly added
3418         bblocks.
3419
3420         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
3421         for catch clauses.
3422         (mini_method_compile): Set the starting value of next_vreg to 
3423         MAX_IREGS + MAX_FREGS when using globalra.
3424
3425         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
3426         filter clauses with BB_EXCEPTION_HANDLER.
3427
3428         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
3429
3430 2008-11-10  Mark Probst  <mark.probst@gmail.com>
3431
3432         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
3433         space for stdcall.  Fixes regressions on Win32.
3434
3435 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
3436
3437         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
3438         bblocks.
3439         (linear_scan): Remove an assert which doesn't seem to be needed.
3440
3441         * local-propagation.c (mono_local_deadce): Avoid a call to
3442         MONO_DELETE_INS which would screw up the instruction linking.
3443
3444         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3445
3446         * regalloc2.c: Upgrade to work the current JIT code.
3447
3448 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3451         case.
3452
3453         * aot-runtime.c: Remove some dead code.
3454
3455         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3456         consistency.
3457         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3458
3459         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3460         trampolines using sscanf since atoi doesn't work on large unsigned values.
3461
3462         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3463         Initialize code_size.
3464
3465 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3466
3467         * method-to-ir.c (mini_emit_inst_for_method): Make
3468         Interlocked.CompareExchange work for Int arguments on 32 bit
3469         archs, as well.
3470
3471 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3472
3473         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3474
3475 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3476
3477         * main.c Fix MSVC build.
3478
3479         Contributed under MIT/X11 license.
3480
3481 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3482
3483         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3484         alignment larger than 8 bytes are aligned correctly, too.
3485
3486         * mini.c: Honor the min_align field of MonoClass when laying out
3487         the stack.
3488
3489 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3490
3491         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3492
3493         * aot-compiler.c (emit_plt): Fix a warning.
3494         
3495         * aot-compiler.c: Implement ARM support in the binary writer.
3496
3497 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3498
3499         * basic-simd.cs: Add test for getter with byref arg.
3500         Fix the naming of a few tests.
3501         Add missing checks to a test.
3502
3503 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3504
3505         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3506
3507         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3508         most of the full-aot support for monitor enter/exit trampolines.
3509
3510         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3511         enter/exit trampoline creation functions.
3512
3513         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3514         make dist.
3515
3516 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3517
3518         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3519         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3520         implement the needed functionality without adding crap to the runtime.
3521
3522 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3525         non-x86 builds.
3526
3527         * mini.c (mono_build_date): New global version holding the build date in
3528         string format.
3529         
3530         * Makefile.am (buildver.c): Generate a file containing the build date.
3531
3532         * main.c: Set the build date from the generated file.
3533
3534         * mini.c (mono_get_runtime_build_info): New helper function returning build
3535         information in a string format.
3536         
3537         * driver.c (mono_main): Print the build date in --version.
3538
3539         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3540         file when the bind-to-runtime-version option is used.
3541
3542 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3543
3544         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3545
3546 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3547
3548         * simd-methods.h: Rename prefetch methods.
3549
3550         * simd-intrinsics.c: Same.      
3551
3552 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3553
3554         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3555         sizes.
3556
3557 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3558
3559         * aot-compiler.c: Use the bundled elf header files instead of depending on
3560         the system one.
3561         
3562         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3563         mempool.
3564
3565         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3566         on every call.
3567
3568 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3569
3570         * cpu-x86.md: Add store nta ops.
3571
3572         * mini-ops.h: Same.
3573
3574         * mini-x86.c: Same.
3575
3576         * mini.h: Add an enum for simd prefetch modes.
3577
3578         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3579         of store. Use the changed code to support store nta.
3580
3581         * simd-intrinsics.c: Add prefetch ops for all vector types.
3582
3583 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3584
3585         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3586         threads.
3587         
3588         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3589         names.
3590
3591         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3592         trampolines.
3593
3594 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3595
3596         * mini-x86.c: Fixed commit.
3597
3598 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3599
3600         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3601
3602 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3603
3604         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3605         and MONITOR_EXIT, for the ASM fastpaths.
3606
3607         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3608         available.
3609
3610         * mini.c, patch-info.h: Signature and patch infos for
3611         Monitor.Enter/Exit trampolines.
3612
3613         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3614
3615         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3616         Monitor.Enter/Exit ASM fastpath for Linux.
3617
3618 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3619
3620         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3621
3622         * objects.cs: Add a new test.
3623         
3624         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3625
3626         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3627         if MONO_LOG_LEVEL is set.
3628
3629         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3630
3631         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3632
3633         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3634         
3635         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3636         of file offsets. Align the sections belonging to the data segment to 
3637         PAGESIZE.
3638
3639 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3642         elf.h. Port it to amd64.
3643
3644 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3645
3646         * driver.c: Enable SIMD by default.
3647
3648 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3649
3650         * cpu-x86.md: Add prefetch op.
3651
3652         * mini-ops.h: Same.
3653
3654         * mini-x86.c: Same.
3655
3656         * mini.h: Add an enum for simd prefetch modes.
3657
3658         * simd-methods.h: Add prefetch function names.
3659
3660         * simd-intrinsics.c: Add prefetch ops for all vector types.
3661
3662 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3663
3664         * aot-compiler.c (emit_bytes): Speed this up a little.
3665
3666 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3667
3668         * aot-compiler.c: Add JIT time etc. statistics.
3669         
3670         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3671
3672         * mini.h (MonoCompile): Add 'got_offset' field.
3673
3674         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3675         method_got_offsets array.
3676
3677         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3678         wrappers.
3679
3680         * aot-compiler.c (compile_method): Add generic method instances referenced
3681         by the method to the list of methods to be compiled, this is required so if
3682         A<T> references B<T>, and another assembly references A<int>, then it will
3683         also get a copy of B<int>.
3684
3685         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3686         when checking for monitor enter/exit.
3687
3688 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3689
3690         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3691         for Monitor.Enter and Monitor.Exit if enabled.
3692
3693         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3694         Solaris.
3695
3696 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3699         of an OP_MOVE. Fixes #440046.
3700
3701         * basic-long.cs: Add a new test.
3702
3703 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3704
3705         * mini.h: Add synchronization note for the managed counter-part.
3706
3707         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3708         returns the simd caps of the current cpu.
3709
3710 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3711
3712         * basic-simd.cs: Remove Console.WriteLine.
3713
3714 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3715
3716         * basic-simd.cs: New tests for Vector2ul.
3717
3718 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3719
3720         * simd-intrinsics.c: Add new vector type Vector2ul.
3721
3722 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3723
3724         * basic-simd.cs: New tests for Vector2l.
3725
3726 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3727
3728         * cpu-x86.md: Add long version of most packed int ops.
3729
3730         * mini-ops.h: Same.
3731
3732         * mini-x86.h: Same.
3733
3734         * simd-intrinsics.c: Add new vector type Vector2l.
3735
3736 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3737
3738         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3739
3740         * simd-methods.h: Remove SN_op_BitwiseXor.
3741
3742 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3743
3744         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3745         alignment.
3746
3747 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3748
3749         * basic-simd.cs: Test for Vector2d.
3750
3751         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3752         value.
3753
3754 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3755
3756         * cpu-x86.md: Add double version of all packed float ops.
3757
3758         * mini-ops.h: Same.
3759
3760         * mini-x86.h: Same.
3761
3762         * simd-intrinsics.c: Add new vector type Vector2d.
3763
3764         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3765
3766         * simd-methods.h: Add Duplicate.
3767
3768 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3769
3770         * basic-simd.cs: Test for packing with signed saturation.
3771
3772 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3775         found in the TYPESPEC table.
3776
3777 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3778
3779         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3780         too.
3781
3782         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3783
3784         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3785         instead of the RVA, since the RVA can be changed by tools like the cil 
3786         stripper.
3787
3788         * method-to-ir.c (mono_method_to_ir2): Ditto.
3789
3790         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3791         (deserialize_variable): Ditto.
3792
3793 2008-10-25  Martin Baulig  <martin@ximian.com>
3794
3795         * debug-mini.c (write_variable): Use
3796         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3797
3798 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3799
3800         * cpu-x86.md: Add unsigned variants of packd and packw.
3801
3802         * mini-ops.h: Same.
3803
3804         * mini-x86.h: Emit the right instruction for packd and packw.
3805         Add unsigned variants of packd and packw.
3806
3807         * simd-intrinsics.c: Packd and packw were used in place of their
3808         unsigned variants. Change that.
3809         Add intrinsics for (Signed)PackWithSignedSaturation.
3810
3811         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3812
3813 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3814
3815         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3816
3817 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3818
3819         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3820
3821         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3822
3823         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3824         sse instructions.
3825
3826         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3827
3828 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3829
3830         * method-to-ir.c, mini.c: Special casing for the synchronized
3831         wrapper for the ldtoken+GetTypeFromHandle case.
3832
3833 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3834
3835         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3836
3837         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3838         created/split bblocks.
3839
3840 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3841
3842         * mini-ops.h: Add packed signed mul high.
3843         
3844         * cpu-x86.md: Same.
3845
3846         * mini-x86.c (mono_arch_output_basic_block): Same.
3847
3848         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3849
3850         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3851
3852 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3853
3854         * basic-simd.cs: Tests for Vector16sb.
3855
3856 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3857
3858         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3859
3860 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3861
3862         * mini-ops.h: Add packed signed min, max and compare greater.
3863         
3864         * cpu-x86.md: Same.
3865
3866         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3867         saturation.
3868
3869         * simd-methods.h: Add CompareGreaterThan.
3870
3871         * simd-methods.h: Remove CompareEquals.
3872
3873         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3874
3875         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3876
3877         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3878         CompareEqual.
3879
3880 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3881
3882         * basic-simd.cs: Fix tests due to change in the API.
3883
3884 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3887
3888 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3889
3890         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3891
3892         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3893         inst_offset as this has invalid values for LDADDR.
3894
3895 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3896
3897         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3898
3899         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3900
3901 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3902
3903         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3904         for accessing field->data.
3905
3906 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3907
3908         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3909
3910 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3911
3912         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3913
3914         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3915
3916 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3919         from the cfg mempool.
3920
3921 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3922
3923         * basic-simd.cs: Tests for new methods in Vector8us.
3924
3925 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3926
3927         * mini-ops.h: Add multiply and store high.
3928         
3929         * cpu-x86.md: Same.
3930
3931         * mini-x86.c (mono_arch_output_basic_block): Same.
3932
3933         * simd-methods.h: Same.
3934
3935         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3936         and CompareEqual.
3937
3938 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3939
3940         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3941         mono_class_setup_vtable ().
3942
3943         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3944         mono_class_get_vtable_entry () for accessing klass->vtable.
3945
3946         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3947
3948         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3949         found.
3950
3951         * method-to-ir.c (mono_save_token_info): Don't save references made from
3952         wrappers.
3953
3954         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3955         of generic instances.
3956
3957         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3958
3959 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3960
3961         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3962         OP_JMP depends on the method signature.  Calculate it properly.
3963
3964 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3965         
3966         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3967         called directly.
3968
3969         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3970         instances.
3971         (emit_extra_methods): Add another table mapping method indexes to 
3972         offsets in the extra_method_info table.
3973
3974         * mini.h: Bump AOT file format version.
3975         
3976         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3977         and mono_aot_get_method_from_token () into one function.
3978
3979 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3980
3981         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3982         separate counter.
3983
3984 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3985
3986         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3987         methods.
3988
3989         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3990         disable_aot.
3991
3992         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3993
3994         * mini.h: Bump aot file format version.
3995
3996         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3997         AOT file can contain native code for methods which are not in the METHOD
3998         table. Generate code for non-sharable generic instances of generic methods
3999         found in the METHODSPEC table.
4000         
4001         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4002         encoding generic type handles.
4003
4004         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4005         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4006
4007         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4008         macros + MONO_ADD_INS.
4009
4010         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4011         context as well.
4012
4013         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4014
4015         * mini.h: Bump aot file format version.
4016
4017         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4018
4019 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4020
4021         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4022         platforms, with definable stack alignment value.  Set to 16 now
4023         for all platforms.
4024
4025         * mini.c, mini.h, driver.c: Command line option for disabling
4026         stack alignment.
4027
4028 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4029
4030         * basic-simd.cs: Tests for new methods in Vector4ui.
4031
4032 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4033
4034         * mini-ops.h: Add packed int shuffle.
4035         
4036         * cpu-x86.md: Same.
4037
4038         * mini-x86.c (mono_arch_output_basic_block): Same.
4039
4040         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4041         extract mask, max, min, shuffle.
4042
4043         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4044
4045 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4046
4047         * basic-simd.cs: Tests for new methods in Vector8us.
4048
4049 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4050
4051         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4052         RuntimeTypeHandle, not a TypedReference.
4053
4054 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4055
4056         * simd-intrinsics.c: remove relocations.
4057
4058 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4061         optimizations from the x86 backend.
4062
4063 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4064
4065         * simd-methods.h, simd-intrinsics.c: debloat method names and
4066         prepare for no relocations.
4067
4068 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4069
4070         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4071         
4072         * cpu-x86.md: Same.
4073
4074         * mini-x86.c (mono_arch_output_basic_block): Same.
4075
4076         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4077         extract mask, max, min and sum of absolute differences.
4078
4079         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4080         method name.
4081
4082 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4083
4084         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4085         Renamed one test for consistency.
4086
4087 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4088
4089         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4090         fix to the code that deal with other blocks.
4091
4092 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4093
4094         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4095
4096 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4097
4098         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4099         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4100         able to process the source reg.
4101
4102 2008-10-16  Martin Baulig  <martin@ximian.com>
4103
4104         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4105
4106         * inssel.brg: Add `OP_HARD_NOP'.
4107
4108         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4109
4110         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4111         `OP_HARD_NOP' instruction when running inside the debugger.
4112
4113         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4114         `OP_HARD_NOP' instruction when running inside the debugger.
4115
4116 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4117
4118         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4119         now works. The issue with the regalloc tripping up no longer
4120         happens.
4121
4122         * simd-intrinsics.c (load_simd_vreg): Same.
4123
4124 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4125         
4126         * basic-simd.cs: Tests for new Vector8ui methods.
4127
4128 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4129
4130         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4131         only for type. This fixes crashes where MonoInst::klass is checked
4132         for ops of type != VTYPE or OBJ.
4133
4134         * simd-intrinsics.c (load_simd_vreg): Same.
4135
4136 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4137
4138         * mini-ops.h: Add ops for packed shuffle/max/avg and
4139         extract mask.
4140         
4141         * cpu-x86.md: Same.
4142
4143         * mini-x86.c (mono_arch_output_basic_block): Same.
4144
4145         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4146         extract mask.
4147
4148         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4149         to emit extract mask op.
4150
4151         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4152         to emit word shuffles.
4153
4154 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4155
4156         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4157         the largest alignment needed by a variable, but at least
4158         sizeof(gpointer).
4159
4160 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4161
4162         * basic-simd.cs: Tests for the fixes in the last commit.
4163
4164 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4165
4166         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4167         no longer handles STACK_PTR input.
4168
4169         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4170
4171         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4172         get_simd_vreg   but handles STACK_PTR input.
4173
4174         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
4175         as the input can be an arbitrary pointer.
4176
4177         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
4178         LDADDR local optimization directly otherwise use a store op.
4179
4180 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4181
4182         * basic-simd.cs: Tests for dup low and dup high.
4183
4184 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4185
4186         * mini-ops.h: Add dup low and dup high ops.
4187         
4188         * cpu-x86.md: Same.
4189
4190         * mini-x86.c (mono_arch_output_basic_block): Same.
4191
4192         * simd-intrinsics.c (vector4f_intrinsics): Same.
4193
4194 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4195
4196         * basic-simd.cs: Tests for recently added functionality.
4197
4198 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4199
4200         * mini-ops.h: Add remaining sse1 fp ops.
4201         
4202         * cpu-x86.md: Add remaining sse1 fp ops.
4203
4204         * mini-x86.c (mono_arch_output_basic_block): Same.
4205
4206         * mini.h: Add enum for simd FP compare conditions.
4207
4208         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
4209
4210         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
4211         so the backed can generate the appropriate op.
4212
4213 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4214         This patch squeese one more byte from the SimdIntrinsc struct.
4215
4216         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
4217         a a shift amount intead of simply or'ing it.
4218
4219         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
4220
4221         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
4222         byte so we can have an aditional flags field without increasing struct size.
4223
4224         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
4225         against the simd_supported_versions bitmask.
4226
4227         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
4228
4229 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
4230
4231         * mini.c: remove rawbuffer code (the only use here is unsafe because
4232         it takes locks during signal handling and the kernel now provides much
4233         better info in proc/pid/smaps these days).
4234
4235 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
4238         OP_X86_PUSH_OBJ. Fixes #434620.
4239
4240         * objects.cs: Add a test.
4241         
4242 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
4243
4244         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
4245         that the packuswb/packusdw don't work with unsigned numbers for what
4246         would be negative numbers in signed format.
4247
4248         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
4249         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
4250
4251         * mini-ops.h: Add doubleword forms of many ops and packing ones.
4252
4253         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
4254
4255         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
4256
4257         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
4258
4259         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
4260         add more ops.
4261
4262         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
4263         version as the enum in mini.h.
4264
4265         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
4266         for sse3 ops, check the simd_version field if present. This way the code
4267         works with all versions of sse.
4268
4269 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4270
4271         * simd-intrinsics.c: Fixed intrinsic name typo.
4272
4273         * mini.h: Added missing simd exported function.
4274
4275         * basic-simd.cs: Added tests for Vector4ui.
4276         Fixed broken test for Vector16b.
4277
4278 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4279
4280         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
4281         the max length to 64.
4282
4283 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4284
4285         * method-to-ir.c: Only do the fast virtual generic method call for
4286         non-wrapper methods.
4287
4288         * mini.h, mini-trampolines.c: The new generic virtual remoting
4289         trampoline handles virtual method calls via the vtable (as done by
4290         the fast virtual generic method calls) to remoting proxies.
4291
4292         * mini.c (mono_jit_create_remoting_trampoline): For generic
4293         methods reate a generic virtual remoting trampoline.
4294
4295         * mini-amd64.h: Enable fast virtual generic method calls again.
4296
4297 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4298
4299         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
4300         restore registers when doing tail calls.
4301
4302 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4303
4304         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
4305         Vector4ui.
4306
4307 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4308
4309         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
4310
4311 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4312
4313         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
4314
4315 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4316
4317         * basic-simd.cs: Retrofit for API changes.
4318
4319 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4320
4321         * mini-ppc.c: Handle integer stack arguments for tail calls.
4322
4323 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4324
4325         * optflags-def.h: Removed sse3 optimization.
4326
4327         * driver.c: Same.
4328
4329         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
4330         sse3.
4331
4332         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
4333
4334         * mini.h: Added enumeration with simd versions.
4335
4336         * simd-intrinsics.c (emit_intrinsics): Use the new static var
4337         for detecting SSE3.
4338
4339         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
4340
4341         * mini.c (mini_init): Call mono_simd_intrinsics_init.
4342
4343 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4344
4345         * basic-simd.cs: Added tests for Vector8u and Vector16u.
4346
4347         * basic-simd.cs: Fixed test naming.
4348
4349 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4350
4351         * mini-ops.h: Added ops for packed and saturated math, shifts
4352         and packing/unpacking.
4353
4354         * cpu-x86.md: Added descriptors for the above ops.
4355
4356         * mini-x86.c: Added code to emmit the above ops.
4357
4358         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
4359
4360 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4361
4362         * aot-compiler.c (compile_method): Enable AOT for generic code.
4363
4364         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
4365
4366 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
4367
4368         * mini.c: add a workaround for a common screwup that ends up blamed
4369         to mono (other processes blocking signal delivery).
4370
4371 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4372
4373         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
4374         in the LDFLD/STFLD opcodes. Fixes #432673.
4375
4376         * iltests.il.in: Add a new test.
4377
4378 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
4379
4380         * mini-arm.c: attach the thread in unmanaged->managed transitions
4381         using delegates (bug #433148).
4382
4383 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4384
4385        * basic-simd.cs: Use new ShuffleSel constants.
4386
4387 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
4390
4391         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
4392         only disable simd intrinsics if no sse2 is detected.
4393
4394         * optflags-def.h: Added sse3.
4395
4396         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
4397         is disabled.
4398
4399 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4400
4401         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
4402         when adding delegate-invoke wrappers.
4403
4404 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4405
4406         * Makefile.am: Reenable the simd tests.
4407
4408 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4409
4410         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
4411           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
4412           other vreg is allocated to that hreg.
4413
4414         Contributed under MIT/X11 license.
4415
4416 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
4419         yet checked in.
4420
4421 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4422
4423         * basic-simd.cs: New test suite for SIMD intrinsics.
4424
4425         * Makefile.am: Added new tests.
4426
4427 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4428
4429         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
4430
4431         * mini-ops.h: Same.
4432
4433         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
4434
4435         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
4436         using SSE2 aware opcodes.
4437
4438         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
4439         is enabled, this code path is only reachable if conversion ops are emmited after
4440         mono_method_to_ir.
4441
4442         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4443
4444         This optimization saves 6 bytes per conversion against the old version.
4445
4446 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * aot-compiler.c (compile_method): Don't skip methods referencing 
4449         generic methods without a corresponding entry in token_info_hash, since
4450         encode_method_ref () can handle all generic methods now.
4451
4452         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4453         generic context is set.
4454         
4455         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4456         generic sharing of LDTOKEN.
4457
4458 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4459
4460         * mini-amd64.h: Temporarily disabled fast virtual generic method
4461         calls because it breaks the System.Runtime.Remoting tests.
4462
4463 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4464
4465         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4466
4467         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4468         so inlining actually works.
4469         (check_inline_caller_method_name_limit): Ditto.
4470
4471 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4472
4473         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4474         64 bit safety (from Olaf Hering and Andreas Farber).
4475
4476 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4477         
4478         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4479         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4480         unused virtual call support code.
4481
4482         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4483         
4484         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4485         which can't use aot trampolines.
4486         (decode_patch): Don't create aot trampolines for methods which can't use
4487         them.
4488
4489         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4490         use aot trampolines.
4491
4492         * mini.h: Bump AOT image format version.
4493         
4494 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
4495
4496         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
4497         to save_token_info () since cmethod is inflated for constrained calls.
4498
4499         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
4500
4501 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
4502
4503         * Makefile.am: Add build rules for ppc64.
4504         This avoids the build failing at pedump with unresolved symbols
4505         due to lack of arch_sources. Instead it will now fail earlier
4506         due to lack of cpu-ppc64.md.
4507
4508         Contributed under MIT/X11 license.
4509
4510 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4511
4512         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4513         tail calls.
4514
4515         * iltests.il.in: Add test case for tail call with many arguments.
4516
4517 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4518
4519         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4520         to the fast virtual generic method code until the aot case is fixed.
4521
4522 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4523
4524         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4525
4526 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4527
4528         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4529         thunks.
4530
4531 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4532         
4533         * simd-intrinsics.c: Forgot to add this one.
4534
4535         * mini-codegen.c: Fix macro in case SIMD is not supported.
4536
4537 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4538         
4539         This patch land initial JIT support for simd intrinsics.
4540
4541         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4542
4543         * Makefile.am: Added simd-intrinsics.c
4544
4545         * simd-intrinsics.c: New file with simd instrinsic related
4546         code.
4547
4548         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4549
4550         * cpu-x86.md: Add simd related instructions.
4551
4552         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4553
4554         * driver.c: Added two new --regression variants.
4555
4556         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4557
4558         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4559
4560         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4561         extract some complicated logic to helper functions.
4562
4563         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4564
4565         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4566
4567         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4568         the specialized simplification pass.
4569
4570         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4571
4572         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4573
4574         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4575         table.
4576
4577         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4578         if MONO_ARCH_NEED_SIMD_BANK is defined.
4579
4580         * mini-ops.h: Added the new simd ops.
4581
4582         * mini-x86.c: Added mono_arch_xregname.
4583
4584         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4585
4586         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4587
4588         * mini-x86.h: Define simd related MONO_ARCH macros.
4589
4590         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4591
4592         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4593
4594         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4595         MONO_CLASS_IS_SIMD to deal with simd related IR.
4596
4597         * mini.h (MonoInst): Added spill_var to the backend union.
4598
4599         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4600
4601         * mini.h: Added forward declarations of the new simd fuctions.
4602
4603         * optflags-def.h: Added new optimization names SIMD.
4604
4605         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4606
4607         * regalloc.h: Added support for working with 3 register banks.
4608
4609         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4610
4611         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4612
4613 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4614
4615         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4616
4617 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4618
4619         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4620         instead of one on 64 bit systems.
4621
4622         * method-to-ir.c: Remove unused includes.
4623
4624 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4625
4626         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4627         cfg->used_int_regs, since the two are different on arm.
4628
4629 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4630
4631         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4632         mono_method_get_vtable_index() to get the vtable index.
4633
4634 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4635
4636         * method-to-ir.c (mono_method_to_ir2): Don't create native
4637         wrappers for array methods, because they're never called (and if
4638         they were called they wouldn't work).
4639
4640 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4641
4642         * method-to-ir.c (mono_method_to_ir2): Array methods are
4643         special-cased and must not be invoked indirectly via the (M)RGCTX
4644         when generic sharing is turned on.  Fixes #431413.
4645
4646 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4647
4648         * method-to-ir.c: When generic sharing is active, call
4649         non-interface virtual generic methods via the standard trampoline.
4650
4651         * mini-trampolines.c: Handle virtual generic shared methods.
4652
4653         * mini.h, mini-x86.c, mini-x86.h: New argument for
4654         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4655         method thunks and which is the trampoline to call if the lookup
4656         fails.  Enable the virtual generic method thunk for x86.
4657
4658         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4659         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4660         argument but assert that it's NULL, because these archs don't yet
4661         implement the virtual generic method thunk.  Changes in the IMT
4662         thunk data structures.
4663
4664 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * aot-compiler.c (emit_globals): Avoid invalid characters in
4667         the static linking symbol.
4668
4669         * objects.cs: Add a test for the range check optimization. Fix warnings.
4670
4671         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4672         optimization from the current JIT.
4673
4674         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4675         later in decompose_array_access_opts () to allow more optimizations.
4676
4677         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4678         mono_decompose_soft_float () for consistency.
4679
4680         * mini-ops.h: Fix arguments of OP_STRLEN.
4681
4682         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4683         into a separate function.
4684         (reset_cast_details): Ditto.
4685         (handle_unbox): Save cast details. Fixes #431254.
4686
4687         * method-to-ir.c: Remove some obsolete FIXMEs.
4688
4689 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4690
4691         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4692
4693 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4694
4695         * mini-codegen.c: More work on macros to make them
4696         ready for multiple regbanks.
4697
4698 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4701
4702         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4703
4704 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4705
4706         * mini-codegen.c (mono_spillvar_offset): Proper support for
4707         multiple regbanks.
4708
4709 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4710
4711         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4712         the stack overflow changes.
4713
4714 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4715
4716         * mini-codegen.c: Make all bank macros depend on reg_bank.
4717
4718         * mini-codegen.c (mono_local_regalloc): Make free mask
4719         initialization regbank aware.
4720
4721 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4722
4723         * mini-codegen.c (mono_local_regalloc): Extract callee
4724         mask selection to a function and make it regbank aware.
4725
4726 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4727
4728         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4729         code to deal with many regbanks.
4730
4731 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * mini-codegen.c: More fp->regbank changes.
4734
4735 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4738         of a hardcoded constant.
4739
4740 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4741
4742         * method-to-ir.c (type_from_stack_type): Fix typo.
4743
4744 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4745
4746         * mini-ia64.c (emit_move_return_value): Convert float return values to
4747         double.
4748
4749         * objects.cs: Add a new test.
4750         
4751         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4752         VARARG methods to fix an assert later.
4753
4754         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4755         end so it at least compiles.
4756
4757 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4758
4759         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4760
4761 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4762
4763         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4764         optimization to a new function (emit_optimized_ldloca_ir) and enable
4765         it for both ldloca and ldloca_s.
4766
4767 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4770         gshared CASTCLASS code.
4771
4772         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4773         amd64, where the libc stack unwinder encounters stack frames referring to
4774         native code in unmapped memory.
4775
4776         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4777         sharing.
4778
4779         * generics.cs: Add new test.
4780
4781 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4784         add a check that one of the ARM_FPU_ constants is defined.
4785
4786         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4787         
4788         * mini-exceptions.c: Fix build on non-altstack platforms.
4789
4790         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4791         sharing of vtypes.
4792
4793         * ir-emit.h: Add a comment to NEW_PCONST.
4794
4795         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4796
4797         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4798
4799         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4800         after the changes to MonoJitDomainInfo.
4801
4802 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4803
4804         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4805
4806 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4807
4808         * mini-ppc.c: Compiler warning fixes.
4809
4810 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4811
4812         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4813         for pinvokes.
4814
4815 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4816
4817         * exceptions-ppc.c, mini-ppc.h: Compile
4818         mono_arch_handle_altstack_exception() on Darwin, too.
4819
4820 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4821
4822         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4823         work on archs which don't have generic sharing implemented, only
4824         without the vtable_arg.
4825
4826 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4827
4828         * mini.c: Added comment explaining why delegate ctor icall
4829         wrappers are compiled.
4830
4831 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4832
4833         * mini.c: Don't produce trampolines to delegate ctor icall
4834         wrappers but compile them upfront.
4835
4836 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4837
4838         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4839         runtime-set function when going back to managed code. Currently this
4840         is used to set back the protection on the soft ovf pages and/or to
4841         throw the stack overflow exception that happened in unmanaged code.
4842
4843 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4844
4845         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4846         runtime-set function when going back to managed code. Currently this
4847         is used to set back the protection on the soft ovf pages and/or to
4848         throw the stack overflow exception that happened in unmanaged code.
4849
4850 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4851
4852         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4853         the support code for restoring stack protection after stack overflows
4854         that happen in unmanaged code. Don't set the exec permission on the
4855         soft overflow area.
4856
4857 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4858
4859         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4860         delegate->method_ptr is set. Fixes #428054.
4861
4862 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4863
4864         * tests.cs: Rename to ratests.cs.
4865
4866         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4867         emit_get_rgctx_... functions.
4868
4869 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4870
4871         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4872
4873 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4874
4875         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4876         before asserting that method is sharable.
4877
4878 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4879
4880         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4881         whether method needs a static RGCTX wrapper used instead of
4882         complex conditions.
4883
4884         * generic-sharing.c, mini.h: A few functions moved to
4885         metadata/generic-sharing.c.
4886
4887 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4888
4889         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4890         Generic code sharing for value types, which essentially means
4891         treating value type methods like static methods.  The RGCTX is
4892         passed in the same way.
4893
4894 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4895
4896         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4897         opcode when creating multi-dimensional arrays of open types.
4898
4899         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4900         open generic types.
4901
4902         * generics.cs: Add a test.
4903
4904         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4905
4906 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4907
4908         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4909
4910         * mini.c (mini_method_compile): Set it when running under the debugger. 
4911
4912         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4913         vreg optimization if the flag is set.
4914
4915         * driver.c (mono_main): Add --attach= option to pass options to
4916         the attach agent.
4917
4918         * mini.c (sigquit_signal_handler): Start the attach agent.
4919
4920         * ssapre.c: Disable this to save space since it is not yet ported to
4921         linear IR.
4922
4923         * regalloc2.c: Disable this to save space.
4924
4925         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4926
4927 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4928
4929         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4930         the -v option useful again.
4931
4932 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4935         --break-at-bb.
4936
4937         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4938         arrays of arrays. Fixes #428406.
4939
4940         * method-to-ir.c (mini_emit_castclass): Ditto.
4941
4942         * objects.cs: Add new test.
4943         
4944 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4945
4946         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4947         was wrong at it choked against target_type_is_incompatible for byref types.
4948
4949 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4950
4951         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4952         places.
4953
4954 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4955
4956         * mini-exceptions.c: update a few more exceptions-related counters.
4957
4958 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4959
4960         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4961         new functions to allocate from persistent mempools.
4962
4963 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4964
4965         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4966         multiple register banks in the future.
4967
4968         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4969
4970 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4971
4972         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4973
4974         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4975
4976         * mini.h: Export type_to_eval_stack_type.
4977
4978         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4979         is only ins->klass of byref types.
4980
4981 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4982
4983         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4984         (mini_emit_memcpy2): Ditto.
4985
4986         * mini-amd64.c: Fix a warning.
4987
4988 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4989
4990         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4991         linking.
4992
4993 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4994
4995         * method-to-ir.c: Extract stloc micro-optimization to a
4996         function and apply it to all cases.
4997
4998 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4999
5000         * method-to-ir.c: Don't fail generic code sharing in cases we
5001         already support.
5002
5003 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5004
5005         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5006
5007 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5008
5009         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5010         implementation.
5011
5012 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5013
5014         * trace.c: make tracing more useful and correct, with per-thread
5015         id and indent info.
5016
5017 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5018
5019         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5020         doing a method call and the argument is an R4.
5021
5022 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5025         generic methods.
5026
5027 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5028
5029         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5030
5031 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5032
5033         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5034         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5035
5036 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * driver.c: Add a --agent argument (not supported yet) to load managed
5039         agent assemblies before loading the main assembly, similarly to how the
5040         Java VM handles agents.
5041
5042 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5043
5044         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5045         function to do stack layout of local variables.
5046
5047 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5048
5049         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5050         calculation.
5051
5052 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5053
5054         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5055         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5056         JIT if DISABLE_JIT is defined.
5057
5058         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5059         defined.
5060
5061 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5062
5063         * iltests.il.in: Disable the fconv test on PPC (the result is
5064         undefined according to ECMA).
5065
5066 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5067
5068         * iltests.il.in: Enable tail call tests for PPC.
5069
5070         * mini.h: Add variable for storing incoming valuetype argument
5071         addresses for tail calls.
5072
5073         * mini-ppc.c: Implement valuetype arguments and return values for
5074         tailcalls on Linux.
5075
5076 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5077
5078         * mini-ppc.c: Partially implement tail calls (struct arguments and
5079         return values not supported).
5080
5081         * method-to-ir.c: Enable tail calls on PPC.
5082
5083 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5084
5085         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5086         runtime-invoke wrappers to work around the problem of them getting
5087         assigned to a random class.
5088
5089         * aot-runtime.c (mono_aot_get_method): Ditto.
5090         
5091 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5094         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5095
5096 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5097
5098         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5099         until they're implemented properly.
5100
5101         * exceptions-ppc.c: Use arch-independent exception-handling code
5102         instead of custom one.
5103
5104         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5105         for Linear IR.
5106
5107         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5108
5109         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5110         applies when __powerpc__ is defined.
5111
5112 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5113
5114         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5115         methods to their code to avoid computing the full name of wrappers and
5116         doing a lookup in a string hash table.
5117
5118 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5119
5120         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5121         we identify bblocks before method_to_ir () is ran.
5122
5123         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5124         Also avoid optimizing branches pointing to themselves.
5125
5126         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5127
5128 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5129
5130         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5131
5132 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5133
5134         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5135         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5136         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5137         'buf'.
5138
5139         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5140         jumped to the same entry in plt_jump_table.
5141
5142 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5143
5144         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5145         dynamic images.
5146
5147 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5148
5149         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5150         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5151         #421807.
5152
5153 2008-08-29  Geoff Norton  <gnorton@novell.com>
5154
5155         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5156         segment, and doesn't properly handle .space as .text.  Fixes
5157         AOT Mach/ARM
5158
5159 2008-08-29  Geoff Norton  <gnorton@novell.com>
5160
5161         * mini.c: Disable the mach exception handler when running on 
5162         ARM
5163
5164 2008-08-29  Geoff Norton  <gnorton@novell.com>
5165
5166         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5167         globals on Darwin/ARM
5168
5169 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5170
5171         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5172         since too many things depend on it. Instead, call 
5173         mono_runtime_set_no_exec ().
5174         
5175         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
5176         the new JIT.
5177
5178         * aot-compiler.c: Add an 'asm-only' AOT option.
5179
5180         * mini.c: Avoid initializing the runtime when doing AOT compilation.
5181                 
5182         * aot-compiler.c (compile_method): Disable gshared support for now as it
5183         doesn't yet work.
5184
5185 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5186
5187         * mini-amd64.h : Fix a compiler warning.
5188
5189         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
5190           Changed to use a callback function to retrieve the unwind info.
5191           This avoids problems observed when code blocks were removed by
5192           unloading an app domain.
5193
5194         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
5195           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
5196           to work properly.
5197
5198         Contributed under MIT/X11 license.
5199
5200 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5201
5202         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
5203           case to keep the stack aligned to 8.
5204
5205         Contributed under MIT/X11 license.
5206
5207 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
5208
5209         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
5210         avoid repeated linear searches.
5211
5212 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5213
5214         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
5215         methods it can't handle.
5216         
5217         * aot-compiler.c (add_method): Avoid adding a method twice.
5218         (add_wrappers): Add runtime invoke wrappers for all methods.
5219
5220         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
5221         function to create an aot-compatible version of this trampoline.
5222
5223         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
5224
5225 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
5228
5229         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
5230         with a generic sharing failure.
5231
5232         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
5233
5234         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
5235         CEE_RETHROW. Fixes #419634.
5236
5237         * mini.c (mono_method_to_ir): Ditto.
5238
5239         * exceptions.cs: Add a new test.
5240         
5241         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
5242         to mono_type_stack_size_internal () since some callers might not pass in
5243         an rgctx.
5244
5245         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
5246         instrument_prolog. Fixes #419878.
5247
5248         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
5249         doubles in soft float mode volatile.
5250
5251 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
5254
5255         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
5256         to handle soft float correctly.
5257
5258         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
5259         the fast path.
5260
5261         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
5262
5263         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
5264         to sp, since the generics catch code requires it.
5265
5266         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
5267         copying.
5268
5269         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
5270         mono_arch_emit_imt_argument ().
5271
5272         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
5273
5274         * mini-arm.c tramp-arm.c: Generic sharing updates.
5275
5276 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5277
5278         * mini-arm.c: Fix the arm build.
5279
5280         * generic-sharing.c (mini_type_get_underlying_type): New helper function
5281         handling enums, generic instances and generic sharing.
5282         (mini_type_stack_size_full): Ditto.
5283
5284         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
5285         
5286         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
5287
5288         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
5289
5290         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
5291         trampolines.
5292
5293         * mini-arm.c: Various small generic sharing changes.
5294
5295         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
5296         this for x86.
5297         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
5298         custom code.
5299
5300         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
5301         helper function to return a generic class init trampoline.
5302
5303         * method-to-ir.c mini.c: Use it.
5304         
5305         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
5306         arch-specfic function to return a generic class init trampoline.
5307
5308         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
5309         the GENERIC_CLASS_INIT custom code.
5310
5311         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
5312         a fatal error, not a sharing failure.
5313
5314         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
5315         needed.
5316
5317         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
5318         trampoline argument from MONO_ARCH_VTABLE_REG.
5319
5320         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5321         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5322         argument, and pass the vtable in VTABLE_REG.
5323
5324         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5325         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5326         argument, and pass the vtable in VTABLE_REG.
5327         (mono_arch_create_trampoline_code_full): Remove some special casing for
5328         the rgctx fetch trampoline.
5329
5330         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
5331         Fixes #419273.
5332
5333         * iltests.il: Add a test for it.
5334
5335 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5336
5337         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
5338
5339         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
5340         no longer needed.
5341
5342         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
5343         use mono_jit_info_table_find () to avoid recursion.
5344         (mono_delegate_trampoline): Add a sync wrapper here.
5345
5346         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
5347         here.
5348
5349         * mini.c (mono_method_to_ir): Ditto.
5350         
5351         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
5352         add_sync_wrapper argument. Don't add a sync wrapper here.
5353         (mono_create_jump_trampoline): Don't add a sync wrapper here.
5354
5355         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
5356         
5357 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5358
5359         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
5360           of nonvolatile registers back from MonoContext to CONTEXT.
5361
5362         Contributed under MIT/X11 license.
5363
5364 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5365
5366         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
5367           arguments on Winx64 there are only 4 argument registers.  For this
5368           logic to work the last argument must be pulled from the stack.  
5369
5370         Contributed under MIT/X11 license.
5371
5372 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5373
5374         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5375
5376         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
5377         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
5378         encode/decode_method_ref ().
5379
5380         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
5381
5382         * aot-runtime.c (decode_patch): Ditto.  
5383
5384         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
5385         MONO_PATCH_INFO_METHOD.
5386
5387         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
5388         MonoGenericJitInfo.
5389
5390         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
5391         MonoGenericJitInfo.
5392
5393         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
5394
5395         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
5396         one from the caller.
5397
5398         * aot-runtime.c (decode_generic_inst): New function to decode and
5399         return a interned generic inst.
5400         (decode_klass_ref): Use it.
5401         (decode_method_ref): Ditto.
5402
5403         * aot-compiler.c (emit_exception_debug_info): Save 
5404         jinfo->has_generic_jit_info too.
5405
5406 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
5409
5410         * iltests.il.in: Add a test for fconv_to_i.
5411
5412         * liveness.c: Disable the liveness2 pass for now to save space.
5413
5414         * regalloc2.c: Include mempool-internals.h to fix warnings.
5415
5416         * aot-compiler.c (encode_method_ref): Encode the context of generic
5417         instance methods.
5418
5419         * aot-runtime.c (decode_method_ref): Inflate generic methods using
5420         the context saved in the aot file.
5421
5422         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5423
5424         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5425
5426         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
5427         volatile so they won't be optimized away.
5428
5429 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
5430
5431         * ssa.c:
5432         * ssa2.c:
5433         * mini.c:
5434         * regalloc2.c:
5435         * dominators.c: Remove duplicated functions that now are in
5436         mempool-internals.h.
5437
5438 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5439
5440         * aot-compiler.c: Fix warnings.
5441
5442         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5443
5444         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5445
5446         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5447         as the patch type.
5448
5449         * mini.c (mono_resolve_patch_target): Ditto.
5450         
5451         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5452         (encode_klass_ref): Add support for encoding VARs/MVARs.
5453
5454         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5455
5456         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5457         the handling of the got entries into a separate 'decode_got_entry' function.
5458         Add support for RGCTX_FETCH.
5459
5460         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5461         clobbered by the trampoline code.
5462
5463         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5464         not clobbered by the indirect calling code.
5465
5466 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5469         to fix the build.
5470
5471 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5472
5473         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5474         signature using the compilation mempool otherwise we would leak it.
5475
5476 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5477
5478         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5479         mono_emit_abs_call ().
5480
5481         * patch-info.h: Add GENERIC_CLASS_INIT.
5482
5483         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5484
5485         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
5486         as their target as a near call.
5487
5488         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5489         ABS handling code.
5490         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5491
5492         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
5493         call to a runtime function described by a patch.
5494
5495         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
5496         mono_emit_abs_call, this has the advantage that the ABS handling code in
5497         mono_codegen () can handle them both, and can handle other stuff in the
5498         future without additional code.
5499
5500         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
5501         entry.
5502         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
5503         abs addresses.
5504
5505         * mini.h: Add missing bblock related prototypes.
5506
5507         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5508         reverse_inst_list_len fields.
5509
5510         * mini.c: Refactor this file a bit by moving branch optimizations to 
5511         branch-opts.c.
5512
5513         * method-to-ir.c: Merge generic sharing changes missed earlier.
5514
5515         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5516
5517         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5518         shared patches. Process METHODCONST as a shared patch.
5519
5520         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5521         as it crashes on the 2.0 mscorlib.
5522
5523         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5524         to cause crashes.
5525         
5526         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5527         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5528         by IMT.
5529
5530         * aot-compiler.c: Reorganize the got handling code to be a bit more
5531         understandable.
5532
5533 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5536         mono_patch_info_equals/hash, and use it to massively simplify
5537         get_plt_index ().
5538
5539         * mini.c (mono_patch_info_hash): Simplify this and add support for
5540         more patch types.
5541
5542         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5543
5544         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5545         handling code, since an offset is not enough to identify a trampoline.
5546
5547         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5548
5549 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5550
5551         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5552
5553         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5554
5555         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5556
5557         * decompose.c: PPC decompositions for various ops.
5558
5559         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5560
5561 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5562
5563         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5564         call the generic trampoline code using a call, instead of a jump, to
5565         remove some special casing from the generic trampoline code.
5566
5567         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5568         (mono_codegen): Ditto.
5569
5570         * aot-compiler.c aot-runtime.c: Ditto.
5571
5572         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5573
5574         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5575         helper function to find the offset corresponding to a lazy fetch trampoline.
5576
5577         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5578         when doing generic sharing.
5579
5580         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5581         places.
5582         
5583         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5584         mini-trampolines.c to be with the other trampoline creation functions.
5585
5586         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5587         as it is equal to method->signature in most cases, add a 
5588         mono_emit_method_call_full variant which takes a signature and an imt
5589         argument as well.
5590
5591 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5592
5593         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5594         to this function, since it could be computed easily from the method 
5595         argument.
5596         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5597         more.
5598
5599         * method-to-ir.c mini.c: Remove references to 
5600         compile_generic_method_wo_context.
5601
5602         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5603         generic method calls.
5604         
5605         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5606         dimensional non-szarrays.
5607
5608         * mini.c (mini_init): Register mono_array_new_1.
5609
5610         * jit-icalls.c (mono_array_new_1): New jit icall.
5611
5612         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5613         pointing to the method.
5614
5615         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5616         method addresses belonging to METHOD_JUMP patches in the 
5617         jump_target_got_slot_hash.
5618         (mono_aot_load_method): Ditto.
5619
5620         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5621         METHOD_JUMP patches.
5622
5623         * mini.c (mini_create_jit_domain_info): New helper function which 
5624         initializes/frees domain->runtime_info.
5625         (mini_free_jit_domain_info): Ditto.
5626         (mini_init): Install the domain hook functions with the runtime.
5627
5628         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5629         information maintained by the JIT.
5630
5631         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5632         insertion into jump_table_hash into mono_codegen (), also implement proper
5633         locking.
5634
5635         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5636         tail calls, it is already done by the aot code.
5637         
5638         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5639         mechanism on amd64.
5640
5641         * iltests.il.in: Make the jmp test a bit more complex.
5642
5643         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5644         generic instances which doesn't have a token.
5645
5646         * aot-runtime.c (decode_method_ref): Ditto.
5647         
5648         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5649         can handle this case now.
5650         (handle_box): Ditto.
5651
5652 2008-08-15  Geoff Norton  <gnorton@novell.com>
5653
5654         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5655         debugging check.
5656
5657 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5658
5659         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5660         calling generic methods.
5661
5662         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5663
5664         * aot-runtime.c (decode_patch_info): Ditto.
5665
5666         * mini.c (mono_resolve_patch_target): Ditto.
5667         
5668         * patch-info.h: Add METHOD_RGCTX.
5669
5670         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5671
5672 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5675         arguments in registers.
5676
5677         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5678         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5679
5680         * mini.c (mini_method_compile): Abort aot compilation for generic
5681         methods if generic sharing is disabled.
5682         
5683         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5684         an mrgctx.
5685
5686         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5687         requiring an mrgctx.
5688
5689         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5690         store instructions when converting a vcall to a normal call.
5691
5692         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5693         mono_arch_find_jit_info.
5694
5695 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5696
5697         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5698         avoid calling mono_method_full_name () for every method even if the
5699         env var is not set.
5700         (check_inline_caller_method_name_limit): Ditto.
5701
5702 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5703
5704         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5705         assemblies in one run.
5706
5707         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5708         skipped methods if it is not 0.
5709
5710         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5711
5712 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5713
5714         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5715           MONO_ARCH_HAVE_UNWIND_TABLE.
5716
5717         Contributed under MIT/X11 license.
5718
5719 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5720
5721         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5722           from default optimizaton list on Winx64.
5723
5724         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5725
5726         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5727           the LMF from the MonoJitTlsData structure.
5728
5729         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5730
5731         Contributed under MIT/X11 license.
5732
5733 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5734
5735         * mini.c (sigsegv_signal_handler): Fix the build.
5736
5737         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5738         assembly->aot_module.
5739
5740         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5741         hash table. This simplifies and speeds up a lot of code, and fixes support
5742         for .netmodules.
5743
5744         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5745         with the runtime.
5746
5747         * mini-exceptions.c: Ditto.
5748         
5749         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5750         'native_offset' argument, since these are computed in the 
5751         mono_find_jit_info () function.
5752
5753         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5754         is used by exceptions-ppc.c.
5755
5756         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5757         mono_arch_find_jit_info ().
5758         
5759         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5760         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5761         generic code in mini-exceptions.c.
5762
5763 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5764
5765         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5766
5767         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5768         
5769         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5770         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5771         called while holding the loader lock. Fixes #415608.
5772         (mono_aot_get_method_from_token_inner): Ditto.
5773
5774 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5775
5776         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5777         to reduce differences between this and the generic implementation in
5778         mini-exceptions.c.
5779         (ves_icall_get_frame_info): Ditto.
5780
5781         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5782
5783         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5784         longer neccesarry.
5785
5786         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5787         mono_arch_get_call_filter () and make it non-static, for consistency with the
5788         other architectures.
5789
5790 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5791
5792         * mini.c:
5793         * local-propagation.c:
5794         * mini-x86.c: Correct the name of arch defines.
5795
5796 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5797
5798         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5799         NO_EMULATE_LONG_SHIFT_OPS define.
5800
5801 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5802
5803         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5804         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5805
5806         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5807         MACH fixes. Merged from the 2.0 branch.
5808
5809         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5810
5811         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5812         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5813
5814         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5815
5816         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5817         mono_marshal_get_native_wrapper () signature changes.
5818
5819 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5820
5821         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5822         conversion bug under arm.
5823
5824 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5825
5826         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5827
5828         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5829         with overflow checking.
5830
5831 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5832
5833         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5834         to the genmdesc.pl file
5835
5836 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5837
5838         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5839         arg_array in the soft-float versions of the LOAD/STORE macros.
5840
5841         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5842         implementation.
5843
5844         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5845
5846 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5849         a float HFA. Fixes #413621.
5850
5851 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5852
5853         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5854         frame_size to args_size. Fixes build.
5855
5856 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5857
5858         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5859         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5860
5861         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5862         the stack are not unaligned. Fixes #413247.
5863         
5864 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5865
5866         * mini.c: update jitted methods performance counters.
5867
5868 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5869
5870         * mini-exceptions.c: increase the exceptions thrown performance
5871         counter in mono_handle_exception ().
5872
5873 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5874
5875         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5876         can work with netmodules.
5877
5878 2008-07-28  Geoff Norton  <gnorton@novell.com>
5879
5880         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5881         regression tests.
5882
5883 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5884
5885         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5886         correct place.
5887
5888 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5889
5890         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5891           The float param registers and other param registers must be the 
5892           same index on Windows x64.
5893
5894         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5895           ArgValuetypeAddrInIReg argument case.  Setting the argument
5896           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5897
5898         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5899           variable computed above as the copy length for arguments of storage
5900           type ArgValuetypeAddrInIReg.
5901
5902         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5903           ArgValuetypeAddrInIReg argument case.  This case will rely on
5904           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5905
5906         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5907           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5908           jump and tail call instructoins as they do not follow the typical call behavior.
5909
5910         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5911           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5912           local variable and pass the local variable by reference to the called method.
5913
5914         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5915           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5916           of a struct is passed in a register it must be saved with the other
5917           volatile argument on the stack.
5918
5919         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5920           frame pointer the stack adjustment value must be saved to the unwind 
5921           info structure.
5922
5923         Contributed under MIT/X11 license.
5924
5925 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5926
5927         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5928         which got lost in the merge.
5929
5930 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5931
5932         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5933         build.
5934
5935         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5936         
5937         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5938         icalls, since they won't be patched.
5939
5940         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5941         different code sequence when running under valgrind to prevent some valgrind
5942         errors.
5943
5944         * iltests.il.in: Add new regression test.
5945
5946         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5947         end with a throw.
5948
5949         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5950         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5951
5952         * iltests.il.in: Add new test.
5953
5954         * aot-compiler.c: Fix some warnings.
5955
5956         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5957         Fixes #412494.
5958
5959 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5960
5961         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5962         (mini_usage_jitdeveloper): Add a missing --wapi option.
5963
5964 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5965
5966         * mini-codegen.c: Simplify the is_fp macros.
5967         (free_up_ireg): Remove, use free_up_reg instead.
5968         (free_up_reg): Fix the fp case.
5969
5970 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5971
5972         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5973         lowered earlier.
5974
5975         * exceptions-x86.c: Merge some changes which seemed to have got lost
5976         in the linear-ir merge.
5977
5978         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5979
5980         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5981         long vreg volatile even if the variable was already created.
5982
5983         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5984         volatile variables.
5985
5986 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5987
5988         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5989
5990         * mini.c (mono_jit_compile_method_inner): Add support for 
5991         MONO_EXCEPTION_BAD_IMAGE.
5992
5993         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5994         mini_method_get_context () returns NULL. Fixes #356531.
5995
5996         * mini.c (mono_method_to_ir): Ditto.
5997         
5998         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5999         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6000
6001 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6002
6003         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6004         in the LDFTN implementation.
6005
6006 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6007
6008         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6009         code, patch calls to icalls, too, even if they're not in the
6010         shared generic code hash.  Fixes #411962.
6011
6012 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6013
6014         * cpu-x86.md: Increase the length of the fcall opcodes.
6015
6016         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6017         calls returning floats.
6018
6019         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6020         on NEWARR.
6021         
6022         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6023         missed earlier.
6024
6025         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6026         into the domain->method_code_hash.
6027
6028         * aot-compiler.c: Fix win32 build.
6029
6030         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6031         
6032         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6033         gshared NEWARR implementation.
6034
6035         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6036
6037         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6038         can be used outside of method_to_ir.
6039
6040         * mini.h (MonoCompile): Add arg_types field.
6041
6042         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6043         
6044         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6045         the values of the local arg_array and param_types array.
6046
6047 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6050         got accesses might only get generated later when NEWOBJ is decomposed.
6051         
6052         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6053         looking up the native code of the target method when a delegate is called
6054         for the first time.
6055
6056         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6057         optimization.
6058
6059         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6060
6061         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6062         AOT work on platforms without a working dlsym implementation.
6063
6064         * mini.h: Bump AOT image format version.
6065         
6066 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6067
6068         * mini-exceptions.c: Free a MonoType with
6069         mono_metadata_free_type() instead of g_free().
6070
6071         * aot-runtime.c: Free a MonoType.
6072
6073 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6074
6075         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6076         optimization.
6077
6078         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6079         fp stack on x86.
6080
6081 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6082         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6083         profiler hook.
6084
6085 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6086
6087         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6088         NEWOBJ calls on valuetypes.
6089
6090         * iltests.il.in: Add new test.
6091
6092         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6093
6094 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6095
6096         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6097         is no longer needed.
6098
6099         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6100         non register sized integer arguments.
6101         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6102         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6103         emit_memcpy2 ().
6104
6105         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6106         CEE_MONO_RETOBJ.
6107         
6108         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6109         two a binop with different sized arguments is emitted.
6110
6111         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6112         instruction in the ins==NULL case.
6113
6114 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6115
6116         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6117
6118         * mini-x86.c: Fix osx build.
6119
6120         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6121         opcodes as well.
6122
6123         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6124         instruction for non int sized variables.
6125
6126         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6127         implementation.
6128
6129 2008-07-23  Robert Jordan  <robertj@gmx.net>
6130
6131         * method-to-ir.c: Fix MSVC build.
6132
6133 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6136         a non int sized type, widen it to an int since newer versions of gcc seem to
6137         generate code which needs this.
6138
6139         * ssa2.c abcremoval2.c: Fix warnings.
6140
6141         * *: Merge the Linear IR branch.
6142
6143         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6144         the ChangeLog file there describes all the changes done over the years. 
6145         Further documentation can be found at www.mono-project.com/Linear_IL.
6146
6147 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6148
6149         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6150           The float param registers and other param registers must be the 
6151           same index on Windows x64.
6152
6153         Contributed under MIT/X11 license.
6154
6155 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6156
6157         * mini.c: Make the previous fix GC safe.
6158
6159 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6160
6161         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6162
6163 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6164
6165         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6166           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6167           ArgValuetypeAddrInIReg instead.
6168
6169         Contributed under MIT/X11 license.
6170
6171 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6172
6173         * mini-codegen.c (get_register_spilling): Fix a warning.
6174
6175 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
6176
6177         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
6178         for types which the initialization fails. Raises the provided exception
6179         at the right stop after cleanup.
6180
6181 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * aot-compiler.c: Free most of the memory allocated during compilation.
6184
6185         * mini.c (mini_parse_debug_options): Fix a leak.
6186         
6187         * mini.c (mini_method_compile): Don't add the method to the jit info tables
6188         during aot compilation.
6189
6190 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
6191
6192         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
6193         it has too much register pressure.
6194
6195 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6196
6197         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
6198
6199 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6200
6201         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6202         on x86.
6203
6204         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6205         on amd64 similar to the way it is done on arm.
6206
6207         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6208
6209         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
6210         consistency, normalize error messages, avoid loading aot-only modules in
6211         normal mode.
6212
6213         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
6214         for consistency.
6215
6216         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
6217
6218 2008-07-11  Martin Baulig  <martin@ximian.com>
6219
6220         * debug-debugger.h
6221         (MonoDebuggerInfo): Add `interruption_request'.
6222
6223 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * aot-compiler.c (emit_plt): Remove some dead code.
6226
6227         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
6228
6229         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
6230         return the plt info offset belonging to a given plt entry.
6231
6232         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
6233         mono_aot_get_plt_info_offset.
6234         
6235         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
6236         similar to the amd64 code by makeing jumps through a separate jump table 
6237         instead of embedding the jump addresses into the code.
6238
6239 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
6240
6241         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
6242         method.
6243
6244 2008-07-10  Martin Baulig  <martin@ximian.com>
6245
6246         * mini.c (mini_method_compile): Disable generics sharing when
6247         running in the debugger.
6248
6249 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6250
6251         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
6252
6253         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
6254         the local register allocator from running out of registers on x86 when 
6255         using aot.
6256
6257 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
6258
6259         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
6260         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
6261         C4146.
6262
6263         Contributed under MIT/X11 license.
6264
6265 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6266
6267         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
6268         speed up the assembler.
6269
6270 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6271
6272         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
6273         support.
6274
6275         * mini.c: Move the soft float handling macros a bit earlier, add 
6276         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
6277         place.
6278
6279         * mini.h: Add prototype for mono_arch_fixup_jinfo.
6280
6281         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
6282         read-only to help catch code allocation requests.
6283         
6284         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
6285         and turn it off when using --aot-only or when compiling with --aot=full.
6286
6287         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
6288         jump table for switches from the normal domain mempool, not the code
6289         manager.
6290
6291         * mini-trampolines.c (get_unbox_trampoline): New function to return an
6292         unbox trampoline which handles aot-only mode too.
6293
6294         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
6295         an AOTed unbox trampoline.
6296
6297         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
6298
6299 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6300
6301         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
6302         ""
6303
6304         Contributed under MIT/X11 license.
6305
6306 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6307
6308         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
6309           the unwind information for the method at the end of the allocated block.
6310           
6311         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
6312           MonoCompileArch to hold the unwind info for SEH on Winx64
6313         
6314         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
6315           frame pointer info for the method being compiled.
6316           
6317         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
6318           the call to mono_exception_from_token.
6319           
6320         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
6321           storing the method prolog information in a format that the Winx64 SEH can understand.  This
6322           information is stored a the end of the method block because it is all 32-bit offset based.
6323
6324         Contributed under MIT/X11 license.
6325
6326 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6327
6328         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
6329
6330         * wapihandles.c: Fix warnings.
6331
6332         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
6333         mode.
6334
6335         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
6336         mono_jit_compile_method in aot-only mode since that calls the type 
6337         initializer.
6338         
6339         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
6340         get_delegate_invoke_impl in aot-only mode.
6341
6342         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
6343
6344 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
6347
6348         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
6349         is on by default.
6350
6351         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
6352
6353         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
6354         init trampoline from the AOT file as well.
6355
6356         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
6357         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
6358         code.
6359
6360         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
6361         mono_init.
6362
6363         * exceptions-amd64.c: Add _full variants for the remaining exception code
6364         creation functions as well, allow emission of relocatable code, remove
6365         caching since that is now done by the caller.
6366
6367         * mini-exceptions.c: Add _full variants for the remaining exception code
6368         creation functions as well, add aot-only support.
6369
6370         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
6371         if we can determine a proper token for them.
6372         (add_wrappers): Add a few more wrappers.
6373         (emit_method_code): Remove some dead code.
6374         (emit_trampolines): Emit exception code too.
6375
6376         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
6377
6378         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
6379         mono_array_new_va which avoids varargs.
6380
6381         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
6382
6383         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
6384         mono_arch_create_specific_trampoline () in all places.
6385
6386         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
6387         a bit so it can be used for other things as well.
6388         
6389         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
6390         on demand as well.
6391
6392         * exceptions-amd64.c: Rename the caching from the exception code creation
6393         functions, it is done by the caller instead.
6394         
6395         * exceptions-amd64.c: Change the signature of the exception code creation 
6396         functions to allow the creation of relocatable code later.
6397
6398         * mini-exceptions.c: Add a set of functions to query the various 
6399         runtime-generated exception functions.
6400
6401         * mini.c mini-exceptions.c: Use the newly added functions instead of the
6402         mono_arch_.. () functions.
6403         
6404 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6405
6406         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
6407
6408         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
6409
6410         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
6411         (mini_get_vtable_trampoline): Ditto.
6412
6413         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
6414         code in the AOT case by returning the code size and a list of relocations to
6415         the caller.
6416
6417         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
6418
6419 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6420
6421         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
6422           clean the stack.
6423
6424         Contributed under MIT/X11 license.
6425
6426 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6427
6428         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
6429         so the buffer size can be computed correctly. Fixes #404735.
6430
6431         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
6432         normally as cfg->debug_info is already freed.
6433
6434 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * mini-amd64.c: For calls returning vtypes in registers, don't store
6437         the return address on the stack, instead allocate a separate local for
6438         it. Fixes #404729.
6439
6440 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6441
6442         * mini-trampolines.c, mini.h: Add an argument to
6443         mono_create_jit_trampoline_in_domain() for turning off the adding
6444         of the sync wrapper.
6445
6446         * mini.c: Use the JIT trampoline without sync instead of
6447         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6448         be patched.
6449
6450 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6451
6452         * driver.c: Turn on GSHARED optimization by default.
6453
6454 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6455
6456         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6457         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6458
6459         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6460         create a variant of the generic trampoline code callable from AOTed trampolines.
6461
6462         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6463         trampoline code callable from AOTed trampolines.
6464
6465         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6466
6467 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6468
6469         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6470         pass-through manner.
6471
6472         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6473         and don't fail sharing for them anymore.
6474
6475         * mini-exceptions.c: Handle exceptions in shared generic methods.
6476
6477         * generic-sharing.c: When checking the context of a generic
6478         method, also check its class's context.  Don't treat wrappers as
6479         sharable.
6480
6481         * mini-trampolines.c: Some code factored out to
6482         metadata/generic-sharing.c.  Handle the MRGCTX case.
6483
6484         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6485         we must deal with the method being of another instantiation of the
6486         class.  Add static rgctx invoke wrappers to generic methods.
6487
6488 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6489
6490         * mini.c: Provide all jit infos of generic shared methods with a
6491         generic jit info.
6492
6493         * mini-exceptions.c: Handle the new situation that a generic info
6494         might be available, but not info about the this/vtable/mrgctx
6495         variable.
6496
6497 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6498
6499         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
6500         generic methods.
6501
6502 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
6503
6504         * dominators.c (check_dominance_frontier): Fix a warning.
6505
6506         * mini.h: Add some missing prototypes.
6507
6508         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6509
6510         * driver.c (mono_jit_init_version): Correct the comments since the first
6511         argument should be the name of the root domain, not a filename.
6512
6513         * aot-runtime.c (make_writable): Error out if this is called while running
6514         with --aot-only.
6515         (load_aot_module): Ditto.
6516
6517         * aot-compiler.c: Really fix the computation of method indexes.
6518
6519         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6520         optimizations as this is no longer called frequently.
6521
6522         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6523         method and the invoke impl code and pass it to the delegate trampoline instead of
6524         just the delegate class.
6525
6526 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * aot-compiler.c: Fixup the computation of method indexes.
6529         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6530         the method builder infrastructure.
6531
6532         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6533         has no header.
6534
6535         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6536         mode, load the method right away instead of creating a trampoline.
6537
6538         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6539
6540         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6541         some checks a bit.
6542
6543 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6544
6545         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6546         (mono_aot_load_method): Use method_index instead of method->token.
6547
6548         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6549         can handle icalls etc. properly.
6550
6551         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6552
6553         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6554
6555         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6556         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6557         JIT_ICALL_ADDR patch type.
6558
6559         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6560
6561         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6562         request flag.
6563         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6564
6565         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6566
6567 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6568
6569         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6570         domain->jit_code_hash.
6571
6572 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6573
6574         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6575
6576 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6577
6578         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6579         get_this_arg_from_call, let it compute it when needed.
6580
6581         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6582         gsctx from code only when needed.
6583
6584         * mini-trampolines.c (get_generic_context): Rename this to 
6585         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6586         it can be called by the arch backends.
6587
6588         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6589
6590 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6591
6592         * driver.c (mono_main): Add experimental --aot-only command line option.
6593
6594         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6595         set.
6596
6597 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
6598
6599         * driver.c (DllMain): Remove mono_module_handle.
6600
6601         Contributed under MIT/X11 license.
6602
6603 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6604
6605         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6606         for emitting methods which are not in the source assembly. Detect and report
6607         failure of assembling+linking.
6608         
6609         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6610
6611         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6612
6613 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6614
6615         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6616
6617 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6618
6619         * mini.h: Remove some obsolete prototypes.
6620
6621         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6622
6623 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6624
6625         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6626         supported by Visual Studio, so use alloca().
6627
6628 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6629
6630         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6631         Fixes #402585.
6632
6633 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6634
6635         * mini.c: Fail sharing of a generic method if it contains an open
6636         catch clause (because we don't pass MRGCTXs yet).
6637
6638 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6639
6640         * mini.c: When compiling a method with generic sharing, insert the
6641         method instantiated with an all-Object generic context into the
6642         jit info table, instead of the context of the first instantiation
6643         of the method we happen to compile.
6644
6645 2008-06-18  Martin Baulig  <martin@ximian.com>
6646
6647         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6648         `major_version' and `minor_version'.
6649
6650 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6651
6652         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6653         mono_method_is_generic_sharable_impl() takes an additional
6654         argument specifying whether to treat type variables as reference
6655         types.
6656
6657 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6658
6659         * mini.h: Removed obsolete prototypes.
6660
6661 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6662
6663         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6664         already handle them.
6665
6666 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6667
6668         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6669         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6670         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6671         tramp-x86.c: Added a MonoGenericContext* argument to
6672         mono_arch_get_unbox_trampoline() so that it can call other
6673         functions which require it.
6674
6675 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6676
6677         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6678         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6679         mono_arch_get_this_arg_from_call() takes a
6680         MonoGenericSharingContext* as well.
6681
6682 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6683
6684         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6685         implement generic sharing of unbox.
6686
6687 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6688
6689         * mini.c: Don't compute the vtable to determine whether a field is
6690         special static, because it might not work for open types.
6691
6692 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6693
6694         * mini.c: Removed the unused token_type and token_source arguments
6695         from get_runtime_generic_context_ptr().
6696
6697 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6698
6699         * mini.c (ADD_BINOP): fix the build
6700
6701 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6702
6703         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6704         a widening op.
6705
6706 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6707
6708         * mini.h: Removed class relations enum that's not used anymore.
6709
6710 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6711
6712         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6713
6714         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6715         the lazy fetch trampoline access code.
6716
6717 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6718
6719         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6720
6721 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6722
6723         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6724
6725         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6726
6727         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6728
6729 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6730
6731         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6732         intrinsics.
6733
6734         * mini-ops.h: Add MIN/MAX_UN opcodes.
6735
6736         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6737         intrinsics.
6738
6739         * basic-math.cs: Add more min/max tests.
6740
6741         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6742
6743 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6744
6745         * mini.c: Small fix in the prologue of emit_castclass.
6746
6747 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6748
6749         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6750
6751         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6752         do not work even for unsigned types. Fixes #400014.
6753
6754         * basic-math.cs: Add regression tests for unsigned Min/Max.
6755
6756 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6757
6758         * mini.c: Added additional context_used argument to several
6759         functions, which will be needed for sharing generic methods.  Use
6760         GET_RGCTX macro wherever appropriate.  Declare only one
6761         context_used in mono_method_to_ir().
6762
6763 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6764
6765         * mini.c, generic-sharing.c: Removed generic class relations.
6766
6767         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6768         functions due to MRGCTX changes.
6769
6770 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6771
6772         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6773         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6774         with calculated IMT.
6775
6776         * mini.c: Generic sharing of calls via generic interfaces.
6777
6778         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6779         generic method with non-constant MonoGenericContext*.  Instead,
6780         the context is taken out of the method itself.
6781
6782 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6783
6784         * mini.c: Generic sharing of ldvirtftn.
6785
6786 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6787
6788         * mini.c: Generic sharing of ldftn.
6789
6790 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6791
6792         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6793
6794 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6795
6796         * mini.c: Generic sharing of the special case of ldtoken followed
6797         by a call to GetTypeFromHandle.
6798
6799 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6800
6801         * mini.c: Generic sharing of box for nullable types.
6802
6803 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6804
6805         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6806         are passed on the stack. Fixes #324807.
6807
6808 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6809
6810         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6811         for the ArgValuetypeAddrInIReg case.
6812
6813         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6814         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6815
6816         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6817         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6818         local variable and pass the local variable by reference to the called method.
6819           
6820         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6821         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6822
6823         Contributed under MIT/X11 license.
6824
6825 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6826
6827         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6828
6829         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6830         everything.
6831
6832 2008-06-10  Martin Baulig  <martin@ximian.com>
6833
6834         * debug-mini.c
6835         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6836
6837 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
6838
6839         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6840         possible error when no arguments are passed.
6841
6842         Contributed under MIT/X11 license.
6843
6844 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6845
6846         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6847         where the file name is NULL.
6848
6849 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6850
6851         * mini.c: Fix s390 build.
6852
6853 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6854
6855         * trace.c (mono_trace_parse_options): Fix warnings.
6856
6857         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6858
6859 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6860
6861         * mini.c (remove_block_if_useless): Avoid printing the method name.
6862         
6863         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6864         MONO_INST_NEW.
6865
6866         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6867         LMF. Not yet used.
6868
6869         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6870         translated code after it has been patched.
6871
6872 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6873
6874         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6875         avoid problems during code patching on SMP systems.
6876         (emit_call): Avoid adding a patch info which is already added by 
6877         emit_call_body.
6878         (mono_arch_emit_exceptions): Ditto.
6879
6880 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6881
6882         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6883         MONO_TYPE_ISSTRUCT already checks for it.
6884
6885 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6886
6887         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6888           structs with floats on Winx64 the float registers are not used.  
6889           The integer registers are always used..
6890         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6891           only one register will be used and only if the size of the struct 
6892           is 1,2,4, or 8 bytes.
6893
6894         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6895           to work for Winx64.
6896
6897         Contributed under MIT/X11 license.
6898
6899 2008-06-05  Martin Baulig  <martin@ximian.com>
6900
6901         * debug-debugger.c (debugger_lookup_class): Also call
6902         mono_class_setup_methods() here; we're only called from RTI.
6903
6904 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
6905
6906         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6907         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6908         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6909         Post-process object files and add dtrace-generated object, if necessary.
6910
6911         Contributed under MIT/X11 license.
6912
6913 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6914
6915         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6916         element class.
6917
6918         * mini.c: Generic sharing for unbox.any and castclass.
6919
6920 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6921
6922         * mini.c: Ignore tailcall prefix in shared generic code and when
6923         doing calls which require a vtable/rgctx argument.
6924
6925 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6926
6927         * mini.c: Don't free the JIT info.
6928
6929         * driver.c: Changes in the JIT info table testing code.
6930
6931 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6932
6933         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6934         interruption. Fix some warnings.
6935
6936         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6937         interruption_checkpoint.
6938
6939 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6940
6941         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6942         from embedding applications.
6943
6944 2008-06-02  William Holmes  <billholmes54@gmail.com>
6945
6946         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6947           reserving 32 bytes on the stack when making calls. 
6948
6949         Contributed under MIT/X11 license.
6950
6951 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6952
6953         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6954         the linear IL branch.
6955
6956         * driver.c: Print out more information for --version on arm.
6957
6958 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6959
6960         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6961         bb_exit instead, since out of line bblocks might not actually be emitted
6962         out-of-line.
6963         
6964         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6965         maximum epilog size for out of line bblocks if tracing is enabled.
6966
6967         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6968
6969 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6970
6971         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6972
6973 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6974
6975         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6976         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6977         opcodes.
6978
6979 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6982         the 'value' to store is a constant.
6983
6984         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6985
6986         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6987         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6988
6989 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6990
6991         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6992         for accessing method->generic_container.
6993
6994 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6995
6996         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6997         
6998         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6999
7000         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7001
7002         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7003         fails.
7004
7005 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7006
7007         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7008
7009         * mini.c: Handle the case when mono_class_vtable () fails.
7010
7011 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7012         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7013         the stat profiler.
7014
7015 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7016
7017         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7018         together with domain sharing.
7019
7020 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7021
7022         * mini.c: Treat callvirts to final methods like non-virtual calls
7023         when doing generic sharing, i.e. look them up in the runtime
7024         generic context.
7025
7026 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7027
7028         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7029         with computed types (for generic sharing).
7030
7031         * mini.c: Generic sharing for mkrefany and refanyval.
7032
7033 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7036         possible.
7037
7038         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7039         the generic sharing code.
7040         
7041         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7042         when needed.
7043
7044 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7047
7048 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7049
7050         * driver.c: updated copyright date
7051
7052 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7053
7054         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7055         needed.
7056
7057 2008-05-19  Martin Baulig  <martin@ximian.com>
7058
7059         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7060         pointing to the new `_mono_debug_using_mono_debugger' variable.
7061
7062         * driver.c
7063         (mono_main): Check mono_debug_using_mono_debugger() rather than
7064         the `MONO_INSIDE_MDB' environment variable to check whether we're
7065         inside the debugger.
7066
7067 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7068
7069         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7070         argument.
7071
7072 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7073
7074         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7075
7076         * mini.c: Added mini_assembly_can_skip_verification. This
7077         function checks if the assembly requested to skip verification. 
7078         Fixes part of #387274.
7079
7080 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7081
7082         * mini.c (mini_get_method): Disable the check for open generic classes when
7083         using generic sharing.
7084
7085         * generics.cs: Add a test for #387034.
7086
7087         * mini.c (mini_get_method): Check whenever the method class is an open generic
7088         type, and return NULL in that case, causing a verification error. Fixes
7089         #384123.
7090
7091 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7092
7093         * driver.c (mono_main): Revert r102623. The right
7094         thing to do is to enable the verifier under verifiable
7095         unless a --security flag was passed.
7096
7097         We need this non-trivial behavior for --verify-all otherwise
7098         mcs-compileall won't be able to use it. As it needs everything to
7099         be verified under validil.
7100
7101 2008-05-06  Martin Baulig  <martin@ximian.com>
7102
7103         Fix #383749.
7104
7105         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7106         (mono_debugger_thread_cleanup): Likewise.
7107         (mono_debugger_extended_notification): Likewise.
7108
7109 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7110
7111         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7112         against both inflated and non-inflated methods. We need to check against the
7113         generic definition for cases where the instantiated method is not visible.
7114         We need to check against the inflated types for cases where the instantiation
7115         changes any super type. This fixes #382986.
7116
7117         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7118         that check for visibiliy as generic params only appears as the type subject
7119         of tokens on call opcodes. Field manipulation and ldftn must always
7120         target an exact type.
7121
7122 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7123
7124         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7125         if no related --security flag is passed.
7126
7127 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7128
7129         * mini-arch.h: Prepare support for ppc64.
7130
7131         Contributed under MIT/X11 license.
7132
7133 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7134
7135         * aot-runtime.c: Prepare support for ppc64.
7136
7137         Contributed under MIT/X11 license.
7138
7139 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7140
7141         * mini-ops.h: Prepare support for ppc64.
7142
7143         Contributed under MIT/X11 license.
7144
7145 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7146
7147         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7148
7149         Contributed under MIT/X11 license.
7150
7151 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7152
7153         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7154         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7155         assemblies on windows.
7156
7157 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7158
7159         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7160         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7161         * main.c: Use UTF-8 encoded command line instead of Windows default code
7162         page on Windows to support Unicode.
7163         * driver.c (DllMain): New function for mixed-mode assembly support.
7164         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7165         export __stdcall functions without decoration.
7166
7167         Contributed under MIT/X11 license.
7168
7169 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7170
7171         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7172         saving it very early.
7173
7174 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7175
7176         * mini.h, mini.c: Lots of code for accessing the old RGCTX
7177         deleted.  The only way to access the new RGCTX is via the
7178         trampline.
7179
7180         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
7181         vtable instead of the RGCTX to static methods.
7182
7183         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
7184         accessing the new RGCTX.
7185
7186         * generic-sharing.c: There is no separation between self, type
7187         arguments and other types in the RGCTX anymore.
7188
7189 2008-04-25  Jonathan Chambers <joncham@gmail.com>
7190
7191         * mini-amd64.c (add_general): Remove previous stack adjustment.
7192         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
7193         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
7194         for 32 bytes of stack space reserved for all calls.
7195         
7196         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
7197         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
7198         adjustment.
7199         
7200         Code contributed under MIT/X11 license.
7201
7202 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
7203
7204         * mini.c (mini_method_verify): Only verify non-inflated methods, check
7205         against the root definition, peeling out method and type instantiations.
7206         Cache verify success results, code that fails verification is still
7207         checked multiple times.
7208
7209 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7210
7211         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
7212
7213 2008-04-23  Jonathan Chambers <joncham@gmail.com>
7214
7215         * mini-amd64.c (add_general): Always increment stack on Win64.
7216         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
7217         on Win64.
7218         
7219         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
7220         stack based argument handling on Win64.
7221         
7222         Code contributed under MIT/X11 license.
7223
7224 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
7225
7226         * Makefile.am (version.h): Add support for git-svn.
7227
7228 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7229
7230         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
7231         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
7232         avoiding allocations and libc functions which might deadlock.
7233         
7234         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
7235         'no-gdb-backtrace' option is set.
7236
7237         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
7238
7239         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
7240
7241 2008-04-21  Martin Baulig  <martin@ximian.com>
7242
7243         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
7244         and `get_lmf_addr'; `notification_address' is no longer a pointer.
7245
7246 2008-04-21  Martin Baulig  <martin@ximian.com>
7247
7248         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
7249         `thread_vtable', `event_handler_ptr' and `event_handler'.
7250
7251 2008-04-21  Martin Baulig  <martin@ximian.com>
7252
7253         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
7254         allows delayed initialization of the `executable_code_buffer' when
7255         attaching.
7256
7257 2008-04-21  Martin Baulig  <martin@ximian.com>
7258
7259         * mini.h (mono_debugger_create_notification_function): Removed.
7260         * tramp-*.c (mono_debugger_create_notification_function): Removed.
7261
7262         * mdb-debug-info64.s
7263         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7264
7265         * mdb-debug-info32.s
7266         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7267
7268         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
7269         currently only works on x86 and x86_64, so don't create it on ppc.
7270
7271 2008-04-21  Martin Baulig  <martin@ximian.com>
7272
7273         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
7274
7275         * mini.c
7276         (mini_method_compile): In the fp elimination check, check
7277         `debug_options.mdb_optimizations' in addition to
7278         mono_debug_using_mono_debugger().       
7279
7280         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
7281         disable some JIT optimizations which are only disabled when
7282         running inside the debugger.
7283         Added `--help-debug' option to describe the debugging options.
7284         (parse_debug_options): New static function to parse the `--debug'
7285         options, so we can easily add more stuff in future.
7286
7287 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
7288
7289         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
7290         the method has no body.
7291
7292 2008-04-19  Jonathan Chambers <joncham@gmail.com>
7293
7294         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
7295         assembly is not allowed in MSVC 64-bit compiler. 
7296         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
7297         as we get floating point exceptions everywhere.
7298         
7299         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
7300         correctly align arguments for call to throw_exception.
7301         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
7302         
7303         Code contributed under MIT/X11 license.
7304
7305 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
7308
7309 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
7312
7313         * mini-amd64.c (NEW_INS): Set cil_code.
7314
7315         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
7316         from mini-amd64.c so all debugger related logic is in one place.
7317
7318         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
7319         later won't have a random ip assigned to them.
7320
7321 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
7324         the arch specific function initializes code_size.
7325         (mono_create_delegate_trampoline): Ditto.
7326
7327         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
7328         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
7329         platforms.
7330
7331         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
7332         running under the debugger.
7333
7334         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
7335         debugger.
7336
7337         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
7338         debugger. Also move the disabling of optimizations here from driver.c.
7339         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
7340         debugger.
7341
7342         * mini.h (MonoCompile): Add a few new flags.
7343
7344 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
7345
7346         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
7347         so the cil_code field of created MonoInst's is properly set.
7348         (mini_select_instructions): Ditto.
7349
7350         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
7351         (MONO_INST_NEW_CALL): Ditto.
7352
7353         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
7354         in many places so the ins->cil_code field is properly initialized.
7355
7356         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
7357         place.
7358
7359 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7360
7361         * mini.c (mini_method_compile): Print a different message when compiling a 
7362         shared method.
7363         
7364         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
7365         > 1.
7366
7367 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
7370         SSE2 instructions.
7371
7372         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
7373         
7374 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7375
7376         * mini.c (handle_stack_args): Make this return void since its return value was
7377         never used. Also set cfg->unverifiable for invalid IL instead of calling
7378         G_BREAKPOINT ().
7379
7380 2008-04-10  Mark Probst  <mark.probst@gmail.com>
7381
7382         * mini.c: Make sure "this" is live in catch clauses with type
7383         variables in shared generic code.
7384
7385 2008-04-08  Mark Probst  <mark.probst@gmail.com>
7386
7387         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
7388         generic_class_is_reference_type() to ensure the proper behaviour
7389         when sharing generic code and the type in question is a type
7390         argument.
7391
7392 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
7395         race conditions when printing thread dumps. Fixes #377738.
7396
7397 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
7398         
7399         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
7400         shows up when both MonoInst arguments can cause aliasig.
7401         There is likely no way in the current JIT to trigger this problem, but
7402         it showed up in the development of generics sharing, when in a new
7403         opcode both args of an OP_GROUP can be aliases (addresses of a local).
7404         When the generics sharing code will be committed, its tests will be
7405         valid also for this bug.
7406
7407 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7408
7409         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
7410         PATCH_INFO_METHOD.
7411
7412         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
7413         NULL.
7414
7415 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
7416
7417         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
7418         use a more detailed exception message for InvalidCastException.
7419
7420         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
7421
7422         * driver.c (mono_main): Add --debug=casts option to turn on better 
7423         InvalidCastException message details.
7424
7425         * mini.c (mini_get_debug_options): New helper function to return the address of
7426         the debug_options variable.
7427
7428         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
7429         the jit_tls TLS variable.
7430
7431         * mini.c (mono_jit_tls): New TLS variable.
7432
7433         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
7434         option is used.
7435
7436 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * mini.h: Removed verifer related stuff. This code was moved to verify.c
7439
7440         * mini.c: Removed verifer related stuff, code moved to verify.c.
7441
7442         * driver.c: Using code from verify.c instead of mini.c.
7443
7444 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7445
7446         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7447         longer valid.
7448
7449 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7450
7451         * mini.c (check_for_method_verify): Enabling verification of
7452         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7453         have been fixed.
7454
7455 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7456
7457         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7458         caller saved registers as well.
7459         
7460         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7461         saved registers as well.
7462
7463 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7466
7467         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7468         code.
7469
7470 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7471
7472         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7473         to get_call_info.
7474         (get_call_info): Take a gsctx argument instead of 'cfg'.
7475
7476 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7479         mono_verify_all is set.
7480
7481         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7482
7483         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7484
7485 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7486
7487         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
7488         an exception.
7489
7490         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7491         verifier and the code generated by the compiler.
7492
7493 2008-03-25  Mark Probst  <mark.probst@gmail.com>
7494
7495         * mini.c: Generic sharing of the non-nullable case of the box
7496         instruction.
7497
7498 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
7499
7500         * inssel.brg: Fix the build.
7501
7502         * iltests.il.in: Add a test for lconv.ovf.u8.un.
7503
7504 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
7505
7506         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7507         Array:Address. Fixes #372410.
7508
7509         * iltests.il.in: New tests for readonly prefix.
7510
7511 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7512
7513         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7514         mini-trampolines.c.
7515
7516         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7517         mini-exceptions.c.
7518
7519         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7520         
7521         * mini.c (mono_decompose_op_imm): New helper function.
7522
7523         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
7524         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7525         return value.
7526
7527         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7528         mono_arch_output_basic_block. Fix warnings.
7529
7530         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7531         for now.
7532
7533 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7534
7535         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7536         since the extra frame is now detected automatically inside the loop.
7537
7538         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7539         opts which are now in mono_peephole_ins ().
7540         
7541         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7542
7543         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7544         frames and skip duplicate managed-to-native frames. Fixes #367665.
7545
7546         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7547         opts which are now in mono_peephole_ins ().
7548         (mono_arch_peephole_pass_2): Ditto.
7549
7550         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7551
7552         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7553         arch independent peephole optimizations.
7554
7555         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7556         opts which are now in mono_peephole_ins ().
7557
7558         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7559         
7560         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7561
7562         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7563         pattern.
7564
7565         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7566         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7567         opcode. 
7568
7569 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7570
7571         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7572         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7573         return value.
7574
7575         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7576         mono_arch_output_basic_block. Fix warnings.
7577
7578 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7581         conv.ovf.u.un.
7582
7583 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7586         conv.ovf.u.un.
7587
7588         * iltests.il: Add new tests.
7589
7590 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
7591
7592         * mini.c: Removed Windows version macros.
7593
7594 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7595
7596         * generic-sharing.c: Put reflection types in the extensible part
7597         of the runtime generic context.
7598
7599         * mini.c: Generic sharing of the GetTypeHandle special case of the
7600         ldtoken instruction.
7601
7602 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7603
7604         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7605
7606         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7607         
7608         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7609         consistency with the other version on the linear IR branch.
7610
7611         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7612
7613         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7614
7615         * iltests.il.in: Add new tests.
7616
7617 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7618
7619         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7620
7621         * iltests.il.in: Add new tests.
7622
7623 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7624
7625         * mini.c: Two variables with the same name were declared in
7626         nesting contexts and one wasn't initialized.  Fixed.
7627
7628 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7629
7630         * mini.c: Generic sharing of the initobj instruction.
7631
7632 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7633
7634         * mini.c: make the test to optimize ldtoken from typeof() more
7635         precise.
7636
7637 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7638
7639         * mini.c: Generic sharing of the initobj instruction for reference
7640         types.
7641
7642 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7643
7644         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7645         the mono_breakpoint_clean_code() code to perform bound checks.
7646
7647 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7648
7649         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7650         mono_arch_patch_callsite() to include the start of the managed method
7651         to be able to perform bound checks.
7652
7653 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7654
7655         * mini.c: Generic sharing for the isinst instruction.
7656
7657 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7658
7659         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7660         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7661         with the runtime generic context argument.
7662
7663         * mini.c: Share calls to several types of unsharable methods by
7664         putting the address of the method code in the runtime generic
7665         context and doing an indirect call.
7666
7667         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7668         to switches.
7669
7670 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7671
7672         * generic-sharing.c: Change due to a change in the runtime genric
7673         context API.
7674
7675 2008-03-15  Martin Baulig  <martin@ximian.com>
7676
7677         * tramp-x86.c
7678         (mono_arch_nullify_class_init_trampoline): Add call to
7679         mono_breakpoint_clean_code() to make things work when running
7680         inside the debugger.
7681
7682         * tramp-amd64.c
7683         (mono_arch_nullify_class_init_trampoline): Add call to
7684         mono_breakpoint_clean_code() to make things work when running
7685         inside the debugger.
7686
7687 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7688
7689         * inssel-long.brg (reg): Fix 64 bit build.
7690
7691 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7692
7693         * mini.c, mini.h: Share static generic code by passing it an
7694         implicit argument pointing to the runtime generic context.
7695
7696         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7697         inssel-long32-mips.brg: New opcodes for calling shared static,
7698         which need to be passed the runtime generic context.
7699
7700         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7701         argument on the stack in the prologue if needed.  New function for
7702         finding the runtime generic context argument from the registers
7703         saved by the trampoline.
7704
7705         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7706         runtime generic context argument.
7707
7708         * tramp-amd64.c: Also restore the register used for the runtime
7709         generic context argument.
7710
7711         * mini-trampoline.c: Resolve shared static calls by consulting the
7712         runtime generic context via the new argument.
7713
7714         * generic-sharing.c: Add an argument to sharability-checking
7715         functions that specifies whether type variables should be treated
7716         as sharable type arguments.
7717
7718         * inssel-x86.brg: Removed a superfluous, buggy rule.
7719
7720         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7721         to switches.
7722
7723 2008-03-14  Martin Baulig  <martin@ximian.com>
7724
7725         * debug-debugger.c (main_thread_handler): Call
7726         mono_runtime_run_main() without sending any notifications.
7727
7728         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7729
7730 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7731
7732         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7733
7734 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7735
7736         * tramp-x86.c: Fixed register restore offsets in the trampoline
7737         code for ECX and EDX.
7738
7739 2008-03-12  Geoff Norton  <gnorton@novell.com>
7740
7741         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7742         different ucontext_t implementations.
7743         * exceptions-arm.c: Use the above defines to get exceptions working on 
7744         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7745         * mini-arm.c: Implement iPhone icache support (based on a patch by
7746         Luke Howard lukeh@padl.com)
7747
7748 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7749
7750         * mini.c: Enable generic sharing of calls to non-static
7751         non-interface non-generic non-value-type methods.
7752
7753         * mini-trampolines.c: Resolve calls from shared generic code.
7754
7755 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7756
7757         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7758
7759         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7760
7761 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7762
7763         * mini.c: some fixes for the AOT compiler.
7764
7765 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7766
7767         * cpu-amd64.md: Add clob:1 to some float opcodes.
7768
7769 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7770
7771         * mini.h: Added MiniVerifierMode enumeration.
7772
7773         * mini.c: Added mini_verifier_set_mode to control
7774         the usage of the new verifier.
7775
7776         * mini.c (mono_method): Integrated the new verifier.
7777
7778         * driver.c: Extended --security option with validil and
7779         verifiable options to activate the new verifier.
7780
7781 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7782
7783         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7784         optimization to ctors taking 0 or 2 arguments too.
7785
7786         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7787         a bit.
7788
7789         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7790
7791         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7792
7793 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7794
7795         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7796         non-aot case as well.
7797
7798         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7799
7800         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7801         changes.
7802
7803         * aot-compiler.c (encode_patch): Ditto.
7804
7805         * mini.h (G_MININT32): Fix the definition of this.
7806
7807 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7808
7809         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7810
7811         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7812
7813 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7814
7815         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7816         methods returning vtypes in registers.
7817         (mono_arch_allocate_vars): Ditto.
7818
7819         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7820
7821         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7822
7823         * generics.cs: Add a test from the linear IR branch.
7824
7825         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7826
7827         * mini.c (inline_method): Cache failed inline attempts.
7828
7829 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7830
7831         * mini.c: For shared methods of generic classes put the location
7832         of "this" into the MonoGenericJitInfo.
7833
7834         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7835         register out of a MonoContext by register number.  Add the generic
7836         sharing context as an argument to mono_arch_find_this_argument().
7837
7838         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7839         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7840         for new arch function.
7841
7842         * mini-exception.c: Handle open exception clauses in shared
7843         generic code.
7844
7845         * mini-trampolines.c: Supply additional argument to
7846         mono_arch_find_this_argument().
7847
7848 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * Makefile.am (regtests): Run the bench.exe tests last.
7851
7852 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7853
7854         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7855         a bit.
7856
7857 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7858
7859         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7860         with MS.
7861
7862         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7863         
7864         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7865
7866         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7867         whose class has no cctor.
7868
7869         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7870
7871 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7872
7873         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7874         unverified.
7875
7876 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7877
7878         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7879         to be in sync with the code on the linear IR branch.
7880
7881         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7882
7883         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7884
7885 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7886
7887         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7888
7889         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7890
7891         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7892
7893         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7894
7895         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7896         
7897         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7898         body.
7899
7900 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7901
7902         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7903         OP_LOADR4_MEMBASE emission.
7904
7905         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7906         (mono_spillvar_offset_float): Ditto.
7907
7908         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7909
7910         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7911         emission.
7912
7913         * basic-long.cs: Add regression tests for them.
7914
7915         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7916         use.
7917         (mono_arch_allocate_vars): Fix representation of single-precision float
7918         argument.
7919         (mono_arch_output_basic_block): Ditto.
7920
7921         * inssel-mips.brg: Ditto, remove duplicate items.
7922
7923         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7924         arguments of tail calls as on other platforms.
7925         (mono_arch_output_basic_block): Handle tail calls.
7926
7927         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7928         register.
7929
7930         * objects.cs (test_5_pass_static_struct): Add test for it.
7931
7932         Contributed under MIT/X11 license.
7933
7934 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7935
7936         * Makefile.am: Use gmcs for compiling the regression tests.
7937
7938         * *.2.cs *.2.il: Rename to *.cs and *.il.
7939
7940 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * regalloc.h: Make the vassign array smaller.
7943
7944         * mini.c (mini_method_compile): Remove an unused field in cfg.
7945
7946         * mini-codegen.c: Add a bunch of micro optimizations.
7947
7948 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7949
7950         * regalloc.h: Remove some unused fields.
7951
7952 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7953
7954         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7955
7956         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7957
7958 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7959
7960         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7961
7962         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7963         trampoline: Fetch an entry from the runtime generic context.  If
7964         it's NULL, jump to the actual trampoline to fill the runtime
7965         generic context.  Otherwise, return it.
7966
7967         * mini.c: Call the lazy fetch trampoline to get entries out of the
7968         runtime generic context.
7969
7970         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7971         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7972         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7973
7974 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7975
7976         * mini.c: Fetch data out of the extensible part of the runtime
7977         generic context instead of calling a helper function.
7978
7979         * generic-sharing.c: Some functions moved into
7980         metadata/generic-sharing.c.  Helper function for fetching other
7981         types now checks and asserts against extensible rgctx (just for
7982         debugging purposes - the helper function isn't called anymore
7983         unless for debugging).
7984
7985 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7986
7987         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7988         for tail calls up to the point that the tests in iltests.exe run. Also add a
7989         dummy CKFINITE implementation.
7990         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7991         needed for trampoline LMF frames.
7992
7993         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7994         trampoline LMF frames.
7995
7996 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7997
7998         * mini.c (inline_method): clean any pending loader error when inlining fail.
7999         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8000
8001 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8002
8003         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8004
8005         * aot-runtime.c (decode_patch_info): Ditto.
8006
8007         * mini.c (mono_resolve_patch_target): Ditto.
8008         
8009         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8010         icall wrappers.
8011
8012         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8013         
8014         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8015         if it references an icall address.
8016
8017 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8018
8019         * cpu-s390x.md: Remove some more unused opcodes.
8020         
8021         * cpu-s390x.md: Remove some unused opcodes.
8022
8023         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8024         mono_op_imm_to_op ().
8025
8026         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8027         instead of a switch statement.
8028         
8029         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8030         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8031
8032         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8033         
8034         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8035
8036         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8037         -1.
8038
8039 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8040
8041         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8042         opened. Fixes #362607.
8043
8044         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8045
8046         * iltests.il.in: Add a test for static methods in interfaces.
8047
8048 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8049
8050         * genmdesc.c (build_table): Fix a crash on older glib versions.
8051
8052         * cpu-sparc.md: Remove some unused opcodes.
8053         
8054         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8055         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8056
8057         * cpu-amd64.md: Remove some unused opcodes.
8058
8059         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8060         like the other opcodes.
8061
8062 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8065
8066         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8067
8068         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8069         variables 'cfg' instead of 'm' for consistency.
8070
8071         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8072
8073         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8074         argument holding the vtype return address, to avoid the ambigious use of
8075         cfg->ret for this purpose.
8076
8077         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8078
8079         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8080         
8081         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8082         new mono_print_ins () function which only takes one argument.
8083
8084 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8085
8086         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8087         macro arguments.
8088
8089 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8090
8091         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8092
8093         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8094
8095         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8096         opcodes and other small changes.
8097
8098         * mini-ops.h: Add some new opcodes from the linear IR branch.
8099
8100         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8101
8102         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8103         opcodes, use the REG_MEMBASE opcodes instead.
8104         
8105         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8106         opcodes, use the REG_MEMBASE opcodes instead.
8107         
8108         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8109         linear IR branch.
8110
8111         * mini.c (mono_op_imm_to_op): New helper function.
8112
8113         * mini-ops.h: Add some opcodes from linear IR branch.
8114
8115 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8118         <tsv@solvo.ru>.
8119
8120 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8121
8122         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8123         OP_ICONV_TO_R4/R8.
8124
8125         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8126
8127 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * aot-compiler.c (emit_method_code): Add an assert.
8130
8131         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8132         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8133         methods.
8134
8135 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8136
8137         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8138         some load/store opcodes so they are consistent. 
8139         (mono_arch_emit_prolog): Simplify some code.
8140
8141         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8142
8143         * objects.cs: Add tests for large argument offsets on ARM.
8144
8145         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8146         stack offsets. Fixes #359651.
8147
8148         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8149
8150         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8151
8152         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8153
8154         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8155
8156         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8157
8158         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8159         rid of CEE_CONV_R_UN.
8160
8161         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8162
8163 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8164
8165         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8166
8167         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8168
8169         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8170
8171         * cpu-amd64.md: Remove some unused opcodes.
8172
8173         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
8174
8175         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
8176
8177         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8178         arch specific functions for its parts. Call the peephole pass after local
8179         regalloc so the prolog can compute a more accurate max_offset.
8180         
8181         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
8182         the corresponding OP_I/OP_L opcodes.
8183
8184         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
8185
8186         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
8187
8188 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8189
8190         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
8191         as they are handled in mini.c.
8192
8193         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
8194         
8195         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
8196         case since it is handled in mini.c.
8197
8198         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
8199
8200         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
8201
8202         * *.c: Use the new opcodes in the IR and back end code.
8203
8204         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
8205
8206         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
8207
8208 2008-02-06  Mark Probst  <mark.probst@gmail.com>
8209
8210         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
8211         an assert because it has a race condition.
8212
8213 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8214
8215         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
8216
8217         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
8218
8219         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
8220
8221         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
8222         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
8223
8224 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * cpu-amd64.md (move): Correct the maximum size of move.
8227
8228 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8229
8230         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
8231         the generic class init trampoline to return quickly if the class
8232         is already inited.
8233
8234 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
8235
8236         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
8237         issues where an 32 bit callsite cannot be patched by a 64 bit address.
8238
8239 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
8240
8241         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
8242         branch.
8243
8244 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * objects.cs: Add some soft-float tests.
8247
8248         * mini.c: Fix a couple more soft-float issues.
8249
8250         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
8251
8252         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
8253         avoid a REX prefix.
8254
8255 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8256
8257         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
8258         exception happens while compiling a virtual method.
8259
8260 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8261
8262         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
8263         
8264         * mini-sparc.c: Fix build.
8265
8266         * mini-sparc.c (get_call_info): Add support for generic sharing.
8267
8268         * mini-exceptions.c: Add a FIXME.
8269
8270 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
8273         altstack handling code.
8274
8275         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
8276         
8277         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
8278
8279         * mini-s390.c: Add support for generic sharing.
8280
8281         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8282         Fix CAS on s390.
8283         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8284
8285         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
8286
8287         * mini-s390x.c: Add support for generic sharing.
8288         
8289         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8290         Fix CAS on ia64.
8291         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8292
8293         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
8294         can be used since it takes a 16 bit signed immediate.
8295
8296         * inssel-s390x.brg: Fix OP_SETRET.
8297
8298         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
8299
8300         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
8301
8302         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
8303
8304         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
8305
8306         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
8307         in one place.
8308
8309         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
8310         stuff.
8311
8312         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
8313         of the unused mono_arch_patch_delegate_trampoline stuff.
8314
8315 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
8316
8317         * basic-long.cs: Move the fp related tests to basic-float.cs.
8318
8319         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
8320
8321         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
8322
8323         * basic-calls.cs: Add a test for proper float argument passing.
8324
8325         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
8326         if the context corresponds to an exception received through a signal.
8327
8328         * exceptions.cs: Add a test for nullref handling at the start of a try
8329         clause.
8330
8331         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
8332
8333         * jit-icalls.c (mono_break): New JIT icall.
8334
8335         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
8336
8337         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
8338
8339 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
8340
8341         * cpu-*.md: Get rid of unused opcodes.
8342
8343         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
8344
8345         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
8346         by all platforms.
8347
8348         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
8349         define.
8350
8351         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
8352         the arch independent trampoline code in mini-trampolines.c.
8353
8354         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
8355
8356         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
8357
8358         * mini-s390.h: Remove an unused define.
8359         
8360         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
8361         the arch independent trampoline code in mini-trampolines.c.
8362
8363         * mini-arm.c (mono_arch_emit_prolog): Fix build.
8364
8365 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
8366
8367         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
8368
8369         * mini-s390.c (mono_arch_emit_prolog): Fix build.
8370
8371         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
8372
8373         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
8374
8375         * cpu-amd64.md: Use smaller sizes for int opcodes.
8376
8377         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
8378
8379         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
8380         objects.cs.
8381
8382         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
8383         debugging.
8384
8385         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
8386         instead of though a pointer to save an indirection when accessing elements of
8387         the array.
8388
8389         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
8390         some typos.
8391         (NOT_IMPLEMENTED): New helper macro.
8392         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
8393         of a bb.
8394
8395         * *.c: Use the new helper macro.
8396
8397 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
8398
8399         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
8400
8401 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8402
8403         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
8404         stack slots.
8405
8406 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
8407
8408         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
8409         profiling is enabled.
8410         
8411         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
8412         the end.
8413         (mono_arch_emit_prolog): Add more first bblock optimizations.
8414
8415         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
8416         in order if possible.
8417         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
8418         bblock, since the arguments are still in their original registers.
8419
8420         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
8421
8422 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
8425         as well.
8426
8427         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
8428         offset 0.
8429
8430         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
8431
8432         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
8433         process async exceptions received while in unmanaged code.
8434
8435         * mini.c (mini_init): Install a callback with the runtime which will be called
8436         when a thread receives an async exception while in unmanaged code.
8437
8438         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
8439
8440         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8441
8442 2008-01-16  Wade Berrier  <wberrier@novell.com>
8443
8444         * cpu-g4.md:
8445         * cpu-arm.md:
8446         * cpu-s390x.md:
8447         fix build
8448
8449 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8450
8451         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8452         compilation with sun cc.
8453
8454         * cpu-*.md: Fix the build.
8455
8456         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8457
8458         * mini-amd64.h: Add some comments to the MonoLMF structure.
8459
8460         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8461         
8462         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8463         in the LMF structure if possible. This saves two instructions in the
8464         managed->native wrappers.
8465
8466         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8467
8468 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8469
8470         * generic-sharing.c: New type argument lookup code which uses the
8471         runtime generic context template.
8472
8473 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8474
8475         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8476
8477         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8478         (mono_arch_output_basic_block): Fix localloc implementation.
8479
8480         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8481
8482         * mini-ia64.c (peephole_pass): Fix ia64 build.
8483
8484         * mini-amd64.c (peephole_pass): Fix a warning.
8485         
8486         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
8487         at a constant offset from sp/fp.
8488
8489         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8490         instead of obtaining it from *lmf in the managed method case.
8491
8492 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8493
8494         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
8495
8496 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
8497
8498         * mini.h (MonoInstList): New type.
8499         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
8500         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
8501         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
8502         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
8503         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
8504         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
8505         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8506         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8507         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8508         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8509         MONO_INST_LIST_FOR_EACH_ENTRY,
8510         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8511         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8512         mono_inst_list_first, mono_inst_list_last,
8513         mono_inst_list_next, mono_inst_list_prev): New instruction
8514         list handling interfaces.
8515         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8516         list head 'ins_list'.
8517         (MonoInst): Replace next pointer with list head 'node'.
8518         (MonoCallInst): Make 'out_args' a MonoInstList.
8519         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8520         (MonoCompile): Delete reverse_inst_list and
8521         reverse_inst_list_len.
8522         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8523         mono_arch_lowering_pass, mono_arch_local_regalloc,
8524         mono_arch_output_basic_block, mono_arch_emit_prolog):
8525         Convert to new instruction lists.
8526         (insert_after_ins): Delete.
8527         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8528         instruction lists.
8529         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8530         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8531         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8532         mono_emulate_opcode, mono_emit_load_got_addr,
8533         inline_method, mono_method_to_ir, mono_print_bb_code,
8534         print_dfn, decompose_pass, nullify_basic_block,
8535         replace_out_block_in_code, remove_block_if_useless,
8536         merge_basic_blocks, move_basic_block_to_end,
8537         try_unsigned_compare, optimize_branches, mono_print_code,
8538         mini_select_instructions, remove_critical_edges): Likewise.
8539         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8540         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8541         mono_arch_output_basic_block, mono_arch_emit_prolog):
8542         Likewise.
8543         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8544         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8545         mono_arch_output_basic_block): Likewise.
8546         (inst_list_prepend, insert_after_ins): Delete.
8547         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8548         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8549         instruction lists.
8550         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8551         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8552         mono_arch_emit_prolog): Likewise.
8553         * cfold.c (mono_constant_fold): Likewise.
8554         * liveness.c (visit_bb, mono_analyze_liveness,
8555         optimize_initlocals): Likewise.
8556         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8557         * graph.c (mono_draw_code_cfg): Likewise.
8558         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8559         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8560         mono_ssa_cprop): Likewise.
8561         * abcremoval (get_relations_from_previous_bb, process_block):
8562         Likewise.
8563         * local-propagation (mono_cprop_invalidate_values,
8564         mono_local_cprop_bb): Likewise.
8565         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8566         peephole_pass, mono_arch_output_basic_block,
8567         mono_arch_emit_prolog): Likewise.
8568         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8569         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8570         mono_arch_emit_prolog): Likewise.
8571         (insert_after_ins): Delete.
8572         * aliasing.c (print_code_with_aliasing_information,
8573         mono_build_aliasing_information, mono_aliasing_deadce):
8574         Convert to new instruction lists.
8575         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8576         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8577         mono_arch_local_regalloc, mono_arch_output_basic_block):
8578         Likewise.
8579         (insert_after_ins): Delete.
8580         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8581         peephole_pass, mono_arch_output_basic_block): Convert to
8582         new instruction lists.
8583         * mini-codegen (InstList, inst_list_prepend,
8584         insert_after_ins): Delete.
8585         (insert_before_ins, get_register_force_spilling,
8586         get_register_spilling, free_up_ireg, free_up_reg,
8587         create_copy_ins, create_spilled_store, alloc_int_reg,
8588         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8589         to new instruction lists.
8590         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8591         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8592         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8593         (insert_after_ins): Delete.
8594         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8595         mono_arch_local_regalloc, mono_arch_output_basic_block,
8596         mono_arch_call_opcode): Convert to new instruction lists.
8597         (insert_after_ins): Delete.
8598         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8599         peephole_pass, mono_arch_output_basic_block,
8600         mono_arch_emit_prolog): Convert to new instruction lists.
8601
8602 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8603
8604         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8605
8606         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8607         Fixes #353182.
8608
8609         * Makefile.am (version.h): Make this work with non-bash shells.
8610
8611 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8612
8613         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8614
8615 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8616
8617         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8618         the InitializeArray optimization.
8619
8620 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8621
8622         * mini.c driver.c: Don't include os/gc_wrapper.h.
8623
8624 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * mini.c (print_jit_stats): Print GC statistics if available.
8627
8628 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8629
8630         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8631
8632 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8633
8634         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8635
8636 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8637
8638         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8639         
8640         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8641
8642         * driver.c (mono_main): Ditto.
8643
8644 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8645
8646         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8647
8648         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8649         in the vtable can't be encoded.
8650         (compile_method): Ditto.
8651
8652 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8655         defined.
8656
8657         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8658         lmf->rbp.
8659
8660         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8661         the top LMF entry belongs to the current method.
8662
8663         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8664
8665 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8668         
8669         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8670
8671         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8672
8673         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8674
8675         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8676
8677         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8678         implementation.
8679
8680         * basic-float.cs: Add an ulong->double cast test.
8681
8682 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8683
8684         * mini.c (mono_method_to_ir): Fix a warning.
8685
8686 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8687
8688         * mini-ops.h: Add OP_SWITCH.
8689
8690         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8691         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8692
8693 2007-12-11  Geoff Norton  <gnorton@novell.com>
8694
8695         * mini-s390x.c: Minor change to the MAX() define to allow
8696         it to compile with other gcc versions.
8697
8698 2007-12-11  Geoff Norton  <gnorton@novell.com>
8699
8700         * cpu-s390x.md:
8701         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8702
8703 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8704
8705         exceptions-arm.c (mono_arch_get_restore_context): Restore
8706         the frame pointer.
8707
8708         exceptions-arm.c (throw_exception): Save the frame pointer.
8709         This is a partial fix for #323747. Only the client side is
8710         fixed.
8711
8712 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8713
8714         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8715         was using an unrelated variable to log the class which
8716         needed the cctor to be called. This was crashing on arm.
8717
8718 2007-12-09  Robert Jordan  <robertj@gmx.net>
8719
8720         * mini-x86.c (mono_arch_emit_epilog):
8721         Consider all kinds of 64-bit types. Fixes #323114.
8722
8723 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8724
8725         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8726
8727 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8728
8729         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8730
8731 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8732
8733         * mini.c: run type ctor before allocating an object, not only
8734         when running it's constructor method (fixes at least part of bug #342507).
8735
8736 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8737         
8738         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8739         
8740         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8741         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8742         function.
8743
8744         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8745         mono_generic_class_init_trampoline () the same as it is done with the other
8746         trampolines.
8747
8748         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8749         aot-runtime.c aot-compiler.c: Implement AOT support.    
8750
8751 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8752
8753         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8754         build for archs which don't have the vtable trampoline defined
8755         yet.
8756
8757 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8758
8759         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8760
8761         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8762
8763         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8764
8765         * tramp-<ARCH>.c: Use the new helper function.
8766
8767 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8768
8769         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8770         trampoline call, which takes a vtable argument.
8771
8772         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8773         OP_TRAMPCALL_VTABLEs like other calls.
8774
8775         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8776         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8777         call.  Implemented a support function which fetches the vtable
8778         from a register set.
8779
8780         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8781         Implemented a generic class init trampoline, using the
8782         OP_TRAMPCALL_VTABLE opcode.
8783
8784         * mini.c: Implemented static field access when sharing generic
8785         code.  This implies initing the class using the new
8786         OP_TRAMPCALL_VTABLE call.
8787
8788 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8789
8790         * mini.c: Don't compile methods with sharing enabled if their
8791         classes are disabled for sharing.
8792
8793 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8794
8795         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8796         opcodes. Fixes #346563.
8797
8798         * objects.cs: Add a new test.
8799
8800         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8801
8802         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8803         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8804
8805 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8808
8809 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8810
8811         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8812         code stream.
8813
8814 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8815
8816         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8817
8818         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8819         optimization in the AOT case.
8820         
8821 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8824         
8825         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8826
8827         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8828
8829         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8830
8831         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8832         is created by the inlined delegate ctor.
8833
8834         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8835
8836         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8837
8838 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8839
8840         * cpu-x86.md: Fix the length of ckfinite.
8841
8842 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8843
8844         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8845         
8846         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8847         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8848
8849         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8850
8851         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8852         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8853
8854 2007-11-28  Martin Baulig  <martin@ximian.com>
8855
8856         * mini-x86.c
8857         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8858         after creating the trampoline.
8859
8860 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8861
8862         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8863
8864         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8865         the same version.
8866
8867         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8868         instead of the calling method to help AOT.
8869
8870         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8871
8872 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8873
8874         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8875         is defined.
8876
8877 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8878
8879         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8880         
8881         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8882         (encode_method_ref): No need to handle generic method definitions specially.
8883
8884         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8885
8886         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8887         decode_klass_info.
8888
8889         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8890         encode_klass_info.
8891         (compile_method): Enable generic sharing.
8892
8893 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8894
8895         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8896         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8897
8898         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8899         generic code.
8900
8901         * mini-trampolines.c: Fix a warning.
8902
8903         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8904         NEW_PCONST.
8905         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8906         (generic_class_is_reference_type): Remove unused function.
8907
8908         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8909         in the generic vtable trampoline case.
8910
8911         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8912         
8913         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8914         return an AOT method based on a vtable slot.
8915
8916         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8917
8918         * mini.c (mini_get_vtable_trampoline): Export this.
8919
8920 2007-11-22  Martin Baulig  <martin@ximian.com>
8921
8922         * debug-debugger.h
8923         (MonoDebuggerInfo): Move `debugger_version' up.
8924
8925 2007-11-22  Martin Baulig  <martin@ximian.com>
8926
8927         * mini-amd64.c
8928         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8929
8930         * mini-trampolines.c
8931         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8932         after compiling the method.
8933
8934 2007-11-20  Martin Baulig  <martin@ximian.com>
8935
8936         * debug-mini.c
8937         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8938         (mono_debugger_remove_breakpoint): Likewise.
8939         (mono_debugger_check_breakpoints): Likewise.
8940
8941         * debug-debugger.c: Implement the new breakpoint interface here.
8942
8943 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8944
8945         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8946         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8947
8948         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8949
8950 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8951
8952         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8953
8954         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8955         mini.c.
8956
8957         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8958         mini.c.
8959
8960         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8961         returning a vtype in a register.
8962
8963         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8964         here from the arch specific code.
8965
8966         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8967         mini.c.
8968
8969         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8970         (mono_arch_emit_prolog): Increment maximum prolog size.
8971
8972         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8973         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8974
8975         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8976         MonoGenericSharingContext.
8977
8978         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8979         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8980
8981 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8982
8983         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8984         which extract fields out of the runtime generic context.  Full
8985         sharing of the NEWARR opcode.
8986
8987 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8988
8989         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8990         --enable-minimal=ssa.
8991
8992 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8993
8994         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8995         mono_marshal_get_delegate_invoke () signature change.
8996
8997 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8998
8999         * mini.c: Removed the shared context in favor of the generic
9000         sharing context.  Allocate the MonoJitInfo structure with room for
9001         the generic sharing context if it's needed.
9002
9003         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9004         domain-internals.h now.
9005
9006         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9007
9008         * generic-sharing.c: Several changes for working without a shared
9009         context and instead operating on open types instead.
9010
9011 2007-11-12  David S. Miller  <davem@davemloft.net>
9012
9013        * inssel-sparc.brg: Fix double instruction emit.
9014
9015 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9018         Get/Set/Address methods.
9019         
9020         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9021         mono_marshal_get_delegate_invoke signature change.
9022
9023 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9024
9025         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9026         This can happens with dynamic methods. Fixes the other bug in #322722.
9027
9028 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9029
9030         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9031         BX call sequence.
9032
9033         * mini-arm.c (arm_patch): Implement patching of BX call
9034         sequence. Fixes one of the bugs in #322722.
9035
9036 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9037
9038        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9039        under Linux.  We only need to flush every 32-byte cache line.    
9040
9041 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9042
9043         * mini.c:
9044         move_basic_block_to_end: Add branches when needed, eventually creating
9045         a new BB.
9046         optimize_branches: added a parameter that tells if it's ok to create
9047         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9048         and avoid calling move_basic_block_to_end when it's not ok.
9049         Fixes bug 318677.
9050
9051 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9052
9053         * mini.c: Abort inlining call to InitializeArray if something
9054         looks wrong.  Let the icall handle it, which now has proper safety
9055         checks.
9056
9057 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9058
9059         * mini.c (mono_spill_call): add support for soft-float.
9060
9061         * mini.c (mono_method_to_ir): add support for soft-float
9062         to inlined functions that return float.
9063
9064         * mini.c (mono_method_to_ir): add support for soft-float
9065         to cee_stsfld opcode on float fields.
9066
9067 2007-11-05  Geoff Norton  <gnorton@novell.com>
9068
9069         * mini-x86.h: Fix the structure access for X86 Leopard.
9070
9071
9072 2007-11-05  Martin Baulig  <martin@ximian.com>
9073
9074         * mini-trampolines.c
9075         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9076         after compiling the method to notify the debugger.
9077
9078 2007-11-05  Martin Baulig  <martin@ximian.com>
9079
9080         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9081
9082 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9083
9084         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9085         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9086
9087 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9088
9089         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9090         native-to-managed wrappers.
9091         
9092 2007-11-01  Geoff Norton  <gnorton@novell.com>
9093
9094         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9095         members.
9096
9097 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9098
9099         * mini.c, mini-x86.c: when getting back from unmanaged code
9100         to managed via a marshaled delegate we also need to set the
9101         right domain.
9102
9103 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9104
9105         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9106         for amd64.
9107
9108 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9109
9110         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9111         let the debugger or other external agents to tell the JIT when
9112         a sw breakpoint has been inserted in the code that the JIT needs
9113         to be able to inspect.
9114
9115 2007-10-31  Martin Baulig  <martin@ximian.com>
9116
9117         * debug-debugger.h
9118         (MonoDebuggerInfo): Remove `runtime_class_init'.
9119
9120 2007-10-30  Martin Baulig  <martin@ximian.com>
9121
9122         * debug-mini.h
9123         (mono_debugger_thread_created): Added `MonoThread *' argument.
9124         (mono_debugger_extended_notification): New public method.
9125         (mono_debugger_trampoline_compiled): New public method.
9126
9127         * debug-mini.c
9128         (MonoDebuggerThreadInfo): Added `thread' and
9129         `extended_notifications' fields.
9130
9131         * debug-debugger.c
9132         (debugger_executable_code_buffer): New static variable.
9133
9134         * debug-debugger.h
9135         (MonoDebuggerInfo): Added `executable_code_buffer',
9136         `executable_code_buffer_size', `breakpoint_info_area',
9137         `breakpoint_table' and `breakpoint_table_size'.
9138
9139 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9140
9141         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9142         that IP  either is an unused value or the vtable pointer. IMT 
9143         calls use vtable + offset now. Reduced by almost half the size
9144         of IMT entries.
9145
9146 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9147
9148         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9149         defines to access param registers. Replace long usage with
9150         gsize as sizeof(long) != sizeof(void*) on Win64.
9151
9152         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9153         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9154         instead of non-existant _GetAddressOfReturnAddress.
9155
9156         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9157         param registers. Save/restore %rdi and %rsi in MonoLMF.
9158
9159         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9160         param registers. Modify (throw_exception) signature to take 
9161         %rdi and %rsi on Win64. 
9162
9163         Code is contributed under MIT/X11 license.
9164
9165 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9166
9167         * helpers.c: unlink debugging output files.
9168
9169 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9170
9171         * mini.c: Move mono_create_ftnptr () to object.c.
9172
9173 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9174
9175         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
9176         optional. This function can now be used to disassemble code generated
9177         outside the JIT such as trampolines and IMT thunks.
9178
9179         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
9180
9181         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
9182         vtable pointer from a ldr instruction.
9183
9184         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
9185         new IMT call sequence.
9186
9187         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
9188         call sequence for interface invocations.
9189
9190         * mini-arm.c (mono_arch_emit_imt_argument): added, required
9191         for imt support. This function is empty since IMT on ARM requires no
9192         special handling on the IR side.
9193
9194         * mini-arm.c (mono_arch_find_imt_method): added, required for
9195         imt support.
9196
9197         * mini-arm.c (mono_arch_find_this_argument): added, required
9198         for imt support.
9199
9200         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
9201         a ldr instruction to load a value stored in the code stream.
9202
9203         * mini-arm.c (mono_arch_build_imt_thunk):added, required
9204         for imt support.
9205
9206
9207 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9208
9209         * mini.c (mini_init): Install the jump trampoline callback.
9210
9211 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9212
9213         * mini-trampolines.c: handle synchronized methods with the common
9214         vtable trampoline (bug #335601).
9215
9216 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
9219
9220         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
9221         64 bit platforms.
9222
9223         * mini-ia64.h mini-ia64.c: Add support for IMT.
9224
9225         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
9226         prolog. Fixes #331958.
9227
9228 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
9229
9230         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
9231
9232 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9233
9234         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
9235         trampoline.
9236
9237 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9238
9239         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
9240         trampoline.
9241
9242 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
9243
9244         * mini-x86.c, mini-x86.h: x86 support for the common vtable
9245         trampoline.
9246
9247 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
9248
9249         * mini-trampolines.c: changed the magic rampoline to understand
9250         the common vtable trampoline method: the method to invoke is
9251         determined by the vtable displacement of the call.
9252
9253 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9254
9255         * mini.c, mini.h: register the common vtable trampoline if the
9256         architecture supports it.
9257
9258 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9259
9260         * cpu-amd64.md: use the correct max length for tls_get.
9261
9262 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
9263
9264         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
9265         CEE_STELEM_ANY. Fixes #333696.
9266
9267 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9268
9269         * exceptions-x86.c: provide more graceful handling of the case where
9270         we followed a bogus function pointer from managed code (bug #332866).
9271
9272 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9273
9274         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
9275         replaces the generic_shared flag and will carry more information
9276         in the future.
9277
9278         * generic-sharing.c: Added mini_type_stack_size() which allows
9279         allows open types if given a generic sharing context.
9280         mini_get_basic_type_from_generic() takes a
9281         MonoGenericSharingContext* instead of a MonoCompile* now.
9282
9283         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
9284         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
9285         mini-sparc.c, mini-x86.c: Trivial changes required by the two
9286         changes above.  Just passing arguments through to the right
9287         places.
9288
9289 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9290
9291         * mini-arm.c: unify the call emission to emit_code_seq().
9292
9293 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
9294
9295         * tramp-arm.c: reduced the trampoline size.
9296
9297 2007-10-10  Mark Probst  <mark.probst@gmail.com>
9298
9299         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
9300         variable handling out of arch-specific code.
9301
9302 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
9303
9304         * mini-arm.c: implemented fast delegate dispatch.
9305
9306 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9307
9308         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
9309         that fp elimination is turned off if the space required by locals is too
9310         big. Fixes #331958.
9311
9312 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9313
9314         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
9315         ARM to the new style trampoline.
9316
9317 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9318
9319         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
9320
9321         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
9322
9323 2007-10-09  Martin Baulig  <martin@ximian.com>
9324
9325         * debug-debugger.h
9326         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
9327         `field_info_offset_offset'.     
9328
9329 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9330
9331         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
9332         removed more internal usage of the r11 register and made it available
9333         to the register allocator.
9334
9335 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9336
9337         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
9338         when sharing generics and treat type variables as references.
9339
9340 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9341
9342         * mini-ppc.c: started removing the internal uses of register r11
9343         to eventually allow the register allocator to manage it as an
9344         additional available register.
9345
9346 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9347
9348         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
9349
9350 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9351
9352         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
9353         specific trampolines as they are not performance critical as a jump
9354         target (maybe align as before only for AOT code?). This saves about
9355         200 KB of native code on x86 for monodevelop startup.
9356
9357 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9358
9359         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
9360         monodevelop startup.
9361
9362 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
9363
9364         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
9365
9366         * mini-sparc.h mini-sparc.c: Implement IMT support.
9367
9368         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
9369         its smaller and doesn't clobber sparc_g1.
9370
9371         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
9372
9373 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9374
9375         * mini-ppc.c: optimized the size of the IMT thunks a bit.
9376
9377 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9378
9379         * mini-ppc.c: implemented fast delegate invocation.
9380
9381 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
9382
9383         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
9384
9385 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9386
9387         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
9388         code to the new style trampoline in preparation for IMT support.
9389
9390 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9391
9392         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
9393         systems already. This also reduces the specific trampiline sizes and
9394         prepares for the use of r12 as the IMT identifier register.
9395
9396 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9397
9398         * mini-mips.h: endianess fix (simplified from a patch by
9399         Thomas Kunze <thommy@tabao.de>, bug #323737).
9400
9401 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9402
9403         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
9404         to access ucontext fields and enable netbsd support
9405         (partially from Magnus Henoch <mange@freemail.hu>).
9406
9407 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9408
9409         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
9410         use the preprocessor from the CPP env var if it is set.
9411
9412 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9413
9414         * mini-trampolines.c: fixed an assertion and moved it earlier in the
9415         code, before interface_offset gets used.
9416
9417 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
9418
9419         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
9420         mono_class_setup_vtable () before accessing klass->vtable.
9421
9422 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
9423
9424         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
9425         hackish.
9426
9427 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9428
9429         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
9430         IMT slots (this saves hundreds of KB of memory in programs like
9431         IronPython and Monodevelop).
9432
9433 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9434
9435         * mini.c: print the delegate counter.
9436
9437 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
9438
9439         * mini-x86.c: make it easier to enable the debugging code for IMT
9440         slots.
9441
9442 2007-09-28  Martin Baulig  <martin@ximian.com>
9443
9444         * debug-debugger.h
9445         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9446         `mono_method_klass_offset' and `mono_method_token_offset'.
9447
9448 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9449
9450         * mini.c: First generics sharing implementation.  Can only share
9451         in very simple cases.  If sharing doesn't work it falls back to
9452         dedicated compilation.
9453
9454         * mini.h: Flag in MonoCompile to specify whether generic
9455         compilation is shared.  Flags enum for marking which generic inst
9456         of a context is used.  Prototypes for helper functions.
9457
9458         * generic-sharing.c: Helper functions for generic method sharing.
9459
9460         * optflags-def.h: Optimization flag (gshared) for enabling generic
9461         method sharing added.
9462
9463         * Makefile.am: generic-sharing.c added.
9464
9465 2007-09-19 Daniel Nauck <dna@mono-project.de>
9466
9467         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9468
9469 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9470         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9471         fixes bug 325507.
9472
9473 2007-09-19  Martin Baulig  <martin@ximian.com>
9474
9475         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9476         mono_debug_cleanup() is now part of mono_cleanup().
9477
9478 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9479
9480         * driver.c (mono_main): Fix a warning.
9481
9482 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9483
9484         * aot-compiler.c: Optimize various parts when processing large assemblies.
9485         Fixes ##325568.
9486
9487         * mini.c (mono_patch_info_hash): Improve hash function.
9488
9489 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9490
9491         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9492         
9493         Code is contributed under MIT/X11 license.
9494
9495 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9496
9497         * mini.c (mini_init): Fix a leak.
9498
9499         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
9500
9501 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9502
9503         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
9504
9505 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9506
9507         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9508
9509 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9510
9511         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9512         variance tests.
9513
9514         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9515
9516         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9517
9518         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9519
9520         * aot-runtime.c (decode_patch_info): Ditto.
9521
9522 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9523
9524         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9525         static case. Cache delegates in architecture specific code, 
9526         based on number of parameters.
9527         
9528         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9529         in architecture specific code, based on number of parameters.
9530         
9531         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9532         caching happen in architecture specific code now.
9533         
9534         Code is contributed under MIT/X11 license.
9535
9536 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9537
9538         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9539         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9540         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9541
9542         Code is contributed under MIT/X11 license.
9543
9544 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9545         * mini.c: (mono_thread_abort) Fixed bug #82416.
9546
9547 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9548
9549         * mini.: hook the new managed GC allocation feature into the JIT.
9550
9551 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9552
9553         * mini.c: implementation for the new runtime tls opcode.
9554
9555 2007-09-11  Martin Baulig  <martin@ximian.com>
9556
9557         * debug-debugger.h
9558         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9559         `mono_method_inflated_offset'.
9560
9561 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9564         async exceptions into a method.
9565
9566         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9567         purpose of testing whenever the unwinder works at every instruction.
9568
9569 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9570
9571         * mini.c: check accessibility of method used in ldftn (fixes
9572         bug #82635).
9573
9574 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9575
9576         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9577
9578         * inssel.brg: Fix a warning.
9579
9580 2007-09-03  Martin Baulig  <martin@ximian.com>
9581
9582         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9583         now takes the `main_method' as argument.
9584
9585 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9586
9587         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9588
9589 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9590
9591         * driver.c: include the cil-coff.h header on Windows.
9592         
9593         Code is contributed under MIT/X11 license.
9594
9595 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9596
9597         * mini.c, driver.c: don't include the cil-coff.h header.
9598
9599 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9600
9601         * mini.c: flag places that needs fixes fo soft-float support.
9602
9603 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9604
9605         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9606         endian systems (partially from Dean Jenkins, bug #81924).
9607
9608 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9609
9610         * mini.c (check_linkdemand): Remove embedded reference object in
9611         call to LinkDemandSecurityException.
9612         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9613         with an IntPtr instead of a reference object.
9614
9615 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9616
9617         * mini.c (handle_initobj): Handle alignment properly.
9618
9619         * inssel.brg (mini_emit_memset): Ditto. 
9620
9621         * inssel.brg (mini_emit_memcpy): Ditto. 
9622
9623         * inssel-sparc.brg: Ditto.              
9624
9625         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9626
9627 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9628
9629         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9630         exceptions raised in unmanaged code. Fixes part of #82594.
9631
9632 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9633
9634         * mini.c (mono_method_to_ir), declsec.c
9635         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9636
9637 2007-08-22  Martin Baulig  <martin@ximian.com>
9638
9639         * debug-mini.h
9640         (MonoDebuggerThreadInfo): New typedef.
9641         (mono_debugger_thread_table): New global variable.
9642         (mono_debugger_thread_created): New public function.
9643         (mono_debugger_thread_cleanup): New public function.
9644
9645         * debug-debugger.h
9646         (MonoDebuggerInfo):
9647         - removed `get_current_thread' and `lookup_assembly'.
9648         - removed `data_table'.
9649         - added `thread_table'.
9650
9651         * mini.c
9652         (mono_thread_start_cb): Call mono_debugger_thread_created().
9653         (mono_thread_attach_cb): Likewise.
9654         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9655         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9656         initial domain.
9657
9658         * driver.c (mono_main): Move mono_debug_init() up, before calling
9659         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9660
9661 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9662
9663         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9664         together when passing several arguments of type double (gives a small
9665         speedup and saves a few bytes of generated code).
9666
9667 2007-08-20  Jb Evain  <jbevain@novell.com>
9668
9669         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9670
9671 2007-08-20  Jb Evain  <jbevain@novell.com>
9672
9673         * mini.c (mono_method_to_ir): throw MethodAccessException
9674         and FieldAccessException instead of InvalidProgramException.
9675
9676 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9677
9678         * mini.c: CoreCLR security checks.
9679
9680         * mini.h: Removed MonoSecurityMode (moved to
9681         metadata/security-manager.h) and mono_security_mode global var
9682         (replaced by set/get functions in security-manager.h).
9683
9684         * driver.c: Added "core-clr-test" security mode for testing.  Used
9685         set-function for setting security mode.
9686
9687 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9688
9689         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9690         the new jit_info_table.
9691
9692         * driver.c: Test code for the new jit_info_table (enabled by the
9693         define MONO_JIT_INFO_TABLE_TEST).
9694
9695 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9696
9697         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9698         detection of call <REG> instruction sequence. Fixes build on freebsd.
9699
9700 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9701
9702         * mini-exceptions.c: Fix a warning.
9703
9704 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9705
9706         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9707         stack overflow handling code on amd64 too.
9708
9709         * mini-exceptions.c (mono_setup_altstack): Make this use 
9710         mono_thread_get_stack_bounds ().
9711
9712         * mini-x86.h: Disable sigaltstack on solaris x86.
9713
9714 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9717
9718 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9719
9720         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9721
9722 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9723
9724         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9725
9726         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9727
9728 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9729
9730         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9731         due to alignment.
9732
9733 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9734
9735         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9736         to be emitted (bug #82281).
9737
9738 2007-08-01  Martin Baulig  <martin@ximian.com>
9739
9740         Merged the `debugger-dublin' branch.
9741
9742         * debug-debugger.h (MonoDebuggerInfo):
9743         Removed the `old_*' compatibility entries.
9744         Added `debugger_version' and `data_table'.
9745         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9746         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9747
9748         * debug-mini.c
9749         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9750         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9751         instead of a `gconstpointer'.
9752         (mono_debugger_insert_method_breakpoint): Return a
9753         `MonoDebugMethodAddressList *'.
9754
9755 2007-06-28  Martin Baulig  <martin@ximian.com>
9756
9757         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9758
9759 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9760
9761         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9762         __builtin_frame_address () since it is broken on older gcc versions.
9763
9764 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9765
9766         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9767         on the stack overflow handling and made the managed stack overflows
9768         catchable in most cases using soft guard pages.
9769         * exceptions-x86.c: added code to restore the protection in the soft
9770         guard pages at the end of exception handling.
9771
9772 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9773
9774         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9775
9776 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9777
9778         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9779         exception handling.
9780
9781 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9782
9783         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9784         signal handling support until it has been ported to the new mechanism.
9785         * mini.c: fixed stack overflow detection and use the new
9786         architecture code  to handle signals on the altstack.
9787
9788 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9789
9790         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9791         stack overflows on the alt stack.
9792
9793 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9794
9795         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9796         stack overflows on the alt stack.
9797
9798 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9799
9800         * exceptions-ppc.c: cleanup preparing for altstack support.
9801
9802 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9803
9804         * exceptions-arm.c: cleanup preparing for altstack support.
9805
9806 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9807
9808         * mini.c (print_jit_stats): Output hazard pointer stats.
9809
9810 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9811
9812         * driver.c, mini.c: Replaced security mode flags with a single
9813         enum variable.
9814
9815 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9816
9817         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9818
9819 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9820
9821         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9822         (which doesn't do anything yet) for activating Core CLR
9823         (Silverlight) security.
9824
9825 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9826
9827         * mini-codegen.c: work around a possible gcc bug on arm.
9828
9829 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9830
9831         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9832         message for platforms that don't support AOT compilation.
9833
9834 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9835
9836         * mini.h, mini.c, driver.c: temporary smcs hack.
9837
9838 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9839
9840         * mini-arm.h, mini-arm.c: arm EABI fixes.
9841
9842 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9843
9844         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9845         case.
9846
9847         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9848         trampolines taking a method argument.
9849
9850         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9851
9852         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9853         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9854
9855         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9856         JIT compilation throws an exception. Fixes #82050.
9857
9858 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9859
9860         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9861         with the MONO_EXCEPTION_ defines.
9862
9863 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9864
9865         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9866         #82117.
9867         
9868         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9869         the cause of an assertion.
9870
9871 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9872
9873         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9874         removed.
9875
9876 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9877
9878         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9879         assert. Should fix #82103.
9880
9881 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9884         here too. Fixes #82095.
9885
9886         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9887         addresses.
9888
9889         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9890
9891         * mini-amd64.h: Enable IMT for amd64.
9892         
9893         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9894
9895 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9896
9897         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9898
9899 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9900
9901         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9902         as soon as check_linkdemand sets an exception_type.
9903
9904 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9905
9906         * mini-x86.c: fixed offsets for IMT call sequence.
9907         * mini-x86.h: enable IMT again.
9908
9909 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9910
9911         * trace.c (mono_trace_enter_method): Decode MonoType too.
9912
9913         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9914
9915         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9916
9917         * mini-amd64.c: Add preliminary IMT implementation.
9918         
9919 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9920
9921         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9922         understand the new IMT-base interface invocation (thanks to
9923         Daniel Nauck for the report and the remote debugging session).
9924
9925 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9926
9927         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9928
9929 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9932
9933 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9934
9935         * mini-trampolines.c: implement AOT IMT support.
9936         * mini-x86.h: enable IMT support for wider testing.
9937
9938 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * inssel.brg (emit_imt_argument): Add aot support here.
9941
9942         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9943
9944 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9945
9946         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9947         of the IMT implementation, partially from massi, with my
9948         implementation of the bsearch sequence. Disabled by default until
9949         the AOT code is implemented.
9950
9951 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9954
9955         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9956
9957 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9958
9959         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9960         arch-independent IMT JIT code from Massimiliano
9961         Mantione (massi@ximian.com) with small cleanups from me.
9962
9963 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9964
9965         * Makefile.am: fix svn invocation to get the svn revision to be
9966         independent of the local language (build fix).
9967
9968 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9969
9970         * mini.c (inline_method): Reset cfg->exception_type if the
9971         inlining is aborted.  Fixes: 82049.
9972
9973 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9974
9975         * mini.c: remove assert from exception handling code when exception_ptr
9976         is not set.
9977
9978 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9979
9980         * mini.c (mono_codegen): Add an assert.
9981
9982         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9983         enter and leave code.
9984         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9985
9986 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9987
9988         * mini-ppc.c: fixed memory corruption for localloc(0)
9989         (bug #81852).
9990
9991 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9992         
9993         * mini.c: Fix warnings.
9994
9995 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9996
9997         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9998         to emit better double->int conversions.
9999
10000 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10001
10002         * mini.c: the provided Min/Max optimizations are valid for unisgned
10003         ints.
10004
10005 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10006
10007         * 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
10008
10009 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10010
10011         * mini.c (mono_running_on_valgrind): Add support for reporting the
10012         method and  its boundaries to valgrind.
10013
10014 2007-06-28  Martin Baulig  <martin@ximian.com>
10015
10016         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10017
10018 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10019
10020         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10021
10022         * generic.2.cs: Add new test case.
10023
10024 2007-06-25  Martin Baulig  <martin@ximian.com>
10025
10026         Merged the `debugger-dublin' branch.
10027
10028         * debug-mini.c
10029         (mono_debugger_insert_method_breakpoint): New public method.
10030         (mono_debugger_remove_method_breakpoint): Likewise.
10031         (mono_debugger_check_breakpoints): New static method.
10032         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10033
10034         * debug-debugger.h (MonoDebuggerInfo):
10035         Renamed (to keep backward compatibility in the vtable):
10036         `insert_breakpoint' -> `old_insert_breakpoint'.
10037         `remove_breakpoint' -> `old_remove_breakpoint'.
10038         `create_string' -> `old_create_string'.
10039         `lookup_class' -> `old_lookup_class'.
10040         `lookup_type' -> removed; changed into a dummy field.
10041         `lookup_assembly' -> `old_lookup_assembly'.
10042         Added (same functionality, but different signature):
10043         `create_string', `lookup_class', `lookup_assembly'
10044         Added new:
10045         `get_method_addr_or_bpt', `remove_method_breakpoint',
10046         `runtime_class_init'.
10047
10048         * debug-debugger.c: Merged the `debugger-dublin' branch.
10049
10050 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10051
10052         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10053         well.
10054         (peephole_pass): Likewise.
10055
10056 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10057
10058         * driver.c: hopefully make setaffinity work also for ancient
10059         versions of linux.
10060
10061 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10062
10063         * driver.c : win32 build fix.
10064
10065 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10066
10067         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10068         processor if it is set.
10069
10070 2007-06-21  Martin Baulig  <martin@ximian.com>
10071
10072         * debug-mini.h: New file.
10073
10074         * debug-mini.c
10075         (mono_debugger_insert_breakpoint_full): Moved here from
10076         ../metadata/mono-debug-debugger.c.
10077         (mono_debugger_remove_breakpoint): Likewise.
10078         (mono_debugger_breakpoint_callback): Likewise.
10079
10080 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10081
10082         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10083         changes in MonoGenericClass.
10084
10085 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10086
10087         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10088
10089 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10090
10091         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10092         removal of MonoGenericMethod.
10093
10094 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10095
10096         * mini-exceptions.c: hooks for the exception events profiling API.
10097
10098 2007-06-14  Randolph Chung  <tausq@debian.org>
10099
10100         * Makefile.ma: Add hppa target.
10101         * mini-arch.h: Include mini-hppa.h
10102         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10103         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10104         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10105
10106 2007-06-14  Randolph Chung  <tausq@debian.org>
10107
10108         * inssel.brg: Add rules for "chained" compare-branch operations so that
10109         a single compare op can affect multiple branches.  Adjust cost for
10110         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10111         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10112         cost for some rules so that they can more easily be overridden by
10113         per-arch rules (with fixes from lupus).
10114         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10115
10116 2007-06-13  Randolph Chung  <tausq@debian.org>
10117
10118         * mini-ops.h: Reorder branch ops so that they match the order of the
10119         corresponding CEE_* ops.  The code expects them this way.
10120         Add new ops for HPPA target.
10121         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10122
10123 2007-06-13  Randolph Chung  <tausq@debian.org>
10124
10125         * mini-exceptions.c: Handle cases where the stack grows towards
10126         larger addresses.
10127         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10128
10129 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10130
10131         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10132         counter.
10133         * driver.c: explain where a non-matching corlib is found.
10134
10135 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10136
10137         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10138
10139 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10140
10141         * mini-exceptions.c: Generate a method profile leave event during
10142         an exception to ensure that the profiler gets notified.
10143
10144 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10145
10146         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10147         branch.
10148
10149         * cpu-amd64.md: Add long_and/or/xor opcodes.
10150
10151 2007-06-06  Wade Berrier  <wberrier@novell.com>
10152
10153         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10154         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10155         length of instruction shr_imm (expected 8, got 10)
10156
10157 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10158
10159         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10160
10161 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10162
10163         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10164         MonoInternalHashTable again (fixed bug in the internal hash table
10165         code).
10166
10167 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10168
10169         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10170         Have to figure out what makes it crash the SWF regression.
10171
10172 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10173
10174         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
10175
10176 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10177
10178         * mini.c: optimize out the type check when storing null in a
10179         reference array.
10180
10181 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10182
10183         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10184         MonoInternalHashTable.
10185
10186 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10187
10188         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
10189         signed integer methods.
10190
10191 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
10194         permanently since the current approach doesn't work.
10195
10196 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10197
10198         * inssel.brg (stmt): Only call delegate->invoke_impl if 
10199         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
10200
10201 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
10204         the sreg2==rdx case.
10205         
10206         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
10207         account if it contains a rex prefix.
10208         (peephole_pass): Handle OP_FMOVE as well.
10209
10210 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10211
10212         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
10213         as it causes regressions.
10214
10215 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
10218         static case as well.
10219
10220         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
10221
10222         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10223         (mono_arch_get_this_arg_from_call): Ditto.
10224
10225         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
10226
10227         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
10228         invoke_impl field.
10229
10230         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10231         (mono_arch_get_this_arg_from_call): Ditto.
10232
10233         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
10234         
10235         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
10236         try to create optimized invoke code and use that for further invocations. 
10237         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
10238
10239         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
10240
10241 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
10242
10243         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
10244         sealed classes or methods.
10245         *devirtualization.cs: tests for the new optimization
10246
10247 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
10250         by the update_volatile () function.
10251
10252 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
10253
10254         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
10255         require it.
10256
10257         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
10258
10259 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10260
10261         * mini.c: Add configure checks for header files.
10262         * mini-x86.c: Add configure checks for header files.
10263         * trace.c: Add configure checks for header files.
10264         * aot-runtime.c: Add configure checks for header files.
10265         * aot-compiler.c: Add configure checks for header files.
10266         * driver.c: Add configure checks for header files.
10267         * mini-codegen.c: Add configure checks for header files.
10268         
10269         Code is contributed under MIT/X11 license.
10270
10271 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10272
10273         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
10274         icompare_imm -128 + op_iclt. Fixes #81703.
10275
10276 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
10277
10278         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
10279
10280 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10281
10282         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
10283         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
10284         so that all isinst checks now use "interface_bitmap".
10285
10286 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
10287
10288         * cpu-amd64.md (jmp): Fix a warning.
10289
10290         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
10291
10292         * basic.cs: Add new regression test.
10293
10294         * basic.cs: Remove test which is now in basic-long.cs.
10295
10296         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
10297
10298         * basic-long.cs: Add new test.
10299         
10300 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
10303
10304 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10305
10306         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
10307
10308         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
10309         places.
10310         
10311         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
10312         throwing code a bit.
10313
10314         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
10315         the exception throwing code a bit.
10316
10317         * mini-x86.c (get_call_info): Allocate result from a mempool.
10318
10319 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
10320
10321         * aot-compiler.c (find_typespec_for_class): Fix the assert.
10322
10323         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
10324
10325         * mini.h (MonoCompile): Add 'token_info_hash' field.
10326
10327         * mini.c: Save token->method associations during compilation so the AOT 
10328         compiler can use it.
10329         
10330         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
10331         which reference generic classes and methods.
10332
10333 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
10334
10335         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
10336
10337         * aot-compiler.c (compile_method): Fix a typo in a comment.
10338
10339         * aot-runtime.c (decode_cached_class_info): Skip generic types.
10340
10341         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
10342         everything generic.
10343
10344         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
10345
10346 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
10347
10348         * mini.h (MonoCompile): Add 'args' field.
10349
10350         * mini.c (mono_compile_create_vars): Store variables representing the arguments
10351         into cfg->args.
10352
10353         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
10354
10355 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
10356
10357         * mini.c (mono_compile_get_interface_var): Remove this unused function.
10358
10359         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
10360
10361         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
10362         opcodes for some opcodes.
10363
10364         * mini.h *.brg *.c: Use the new opcodes.
10365
10366 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10367
10368         * mini.h: Bumped aot revision.
10369
10370         * inssel.brg: modified code generation of type checks for interfaces
10371         to use the new "MonoClass.interface_bitmap" instead of the old
10372         "MonoClass.interface_offsets".
10373
10374 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10375
10376         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
10377
10378 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
10381         64 bit platforms.
10382
10383 2007-04-27  Neale Ferguson <neale@sinenomine.net>
10384
10385         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
10386
10387 2007-04-27  Wade Berrier  <wberrier@novell.com>
10388
10389         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
10390         mini.h) to fix build.
10391
10392 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
10395         
10396         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
10397         causes the corlib unit tests to fail.
10398
10399 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10400
10401         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
10402
10403         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
10404
10405         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
10406         opcodes to the comparison relations.
10407
10408         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
10409         opcodes to their types.
10410         
10411         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
10412
10413         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
10414         it in cfg->arch.cinfo.
10415
10416         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
10417
10418         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
10419         cfg->cil_offset_to_bb.
10420
10421 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
10424         created becase of initlocals.
10425
10426 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
10427
10428         * mini-alpha.c cpu-alpha.md: More alpha port work from 
10429         Sergey Tikhonov <tsv@solvo.ru>.
10430
10431 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
10432
10433         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
10434
10435 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
10436
10437         * cpu-s390.md (break): Correct the length of break instruction.
10438
10439 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10440
10441         * mini.c: fix a couple of soft-float issues and comments.
10442
10443 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10444
10445         * trace.c (is_filenamechar): - is also a filename char.
10446
10447 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10448
10449         * mini-s390.c: Correct checking for enum type in return value processing.
10450
10451 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10452
10453         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10454         (version.h): Makefile is in the build directory.
10455
10456 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10457
10458         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10459
10460 2007-04-11  Martin Baulig  <martin@ximian.com>
10461
10462         * mini.c (can_access_member): Fix handling of generic classes;
10463         fixes #81259.
10464
10465 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10466
10467         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10468
10469 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10470
10471         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10472
10473 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10474
10475         * mini-codegen.c: make sure the right spill amount is
10476         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10477
10478 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10479
10480         * mini-ppc.c: fixes for the fp_branch_nan test.
10481
10482 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * basic.cs: Comment out new test which still fails on ia64.
10485
10486 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10487
10488         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10489
10490 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10491
10492         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
10493
10494 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
10495
10496         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
10497         on 64 bit machines. Fixes part of #80738.
10498
10499         * basic.cs: Add regression test.
10500
10501 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10502
10503         * inssel.brg basic.cs: Revert previous change to fix build.
10504
10505         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10506         platforms.
10507         
10508         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10509
10510         * basic.cs: Add new regression test.
10511
10512 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10515         many arguments.
10516
10517 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10518
10519         * cpu-s390x.md: Correct length of break instruction.
10520
10521 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10522
10523         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10524         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10525
10526 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10527
10528         * *.c: Begin WIN64 port.
10529         * mini.c:  Use correct register in profiler.
10530         * mini-amd64.c: No inline assembly on Win64.
10531         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10532         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10533         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10534         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10535         mono_arch_ip_from_context for Win64.
10536         
10537         Contributed under MIT/X11 license.
10538
10539 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10540
10541         * exceptions-amd64.c (seh_handler): Ditto.
10542
10543         * exceptions-x86.c (seh_handler): Fix a memory leak.
10544
10545 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10546
10547         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10548         mini-s390x.c: fixed peephole optimizations to deal
10549         correctly with 1 and 2 byte reload avoidance.
10550
10551 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10552
10553         * cpu-s390.md, cpu-s390x.md: update localloc length.
10554
10555 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10556
10557         * cpu-g4.md: added missing descriptions.
10558
10559 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10560
10561         *  Makefile.am: Add support so the tail tests are not executed on
10562         PowerPC as that is a known limitation of the PowerPC port.
10563
10564 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10565
10566         * runmdesc.bat:  Move to msvc directory.
10567         
10568 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10569
10570         * runmdesc.bat:  Run executable that was produced by the current
10571         target and sent via an argument.
10572         
10573 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10574
10575         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10576         #81102.
10577
10578         * generics.2.cs: Add regression test.
10579
10580 2007-03-09  Wade berrier  <wberrier@novell.com>
10581
10582         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10583
10584 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10585
10586         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10587         AOT code depends on this.
10588
10589 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10590
10591         * mini.c: more precise tracking of types in the eval stack
10592         (part of fix for bug #81044).
10593
10594 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10595
10596         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10597
10598         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10599
10600 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10601
10602         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10603
10604         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10605
10606 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10607
10608         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10609         a pointer on 64 bit systems. Fixes #80190.
10610
10611         * iltests.il: Add new regression test.
10612
10613 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10614
10615         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10616
10617 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10618
10619         * trace.c: Remove an erroneous alignemnt check when tracing.
10620           Fixes --trace on OSX86.
10621
10622 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10623
10624         * mini-$(arch).h: initialize SP in context for all the archs.
10625
10626 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10627
10628         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10629         regressions in the thread tests.
10630
10631 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10632
10633         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10634         - fixed implementation of LOCALLOC opcode
10635         - implemented non-un compare for floats
10636         - code cleanup
10637         - implementation of FDIV and CKFINITE opcodes
10638         - fixes for latest mono updates
10639         - additional arch opcodes
10640
10641 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10642
10643         * Makefile.am: simplify and merge rules for cross-compilation.
10644
10645 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10646
10647         * local-propagation.c: Actually *apply* the fix for bug 80591...
10648
10649 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10650
10651         * mini-exceptions.c: backuot part of the last change
10652         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10653
10654 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10655         * inssel.brg: Fix bug 59286.
10656
10657
10658 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10659
10660         * mini-exceptions.c: patch from Zoltan to correctly check for
10661         stack boundaries (using the stack register, not the frame register),
10662         fixes bugs #80724, #79717.
10663
10664 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10665
10666         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10667         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10668
10669         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10670         presence of frame pointer elimination.
10671
10672 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10673         
10674         * mini-x86.h: NetBSD UCONTEX_REG defines.
10675
10676 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10677
10678         * inssel-amd64.brg: Fix amd64 build.
10679
10680 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10681
10682         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10683         on amd64.
10684
10685 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10686
10687         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10688         ends.
10689
10690         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10691
10692 2007-01-30 Mark Mason <mason@broadcom.com>
10693
10694            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10695            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10696            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10697            beginning support for CEE_JMP [not quite working yet]
10698            * tramp-mips.c: LMF handling now works
10699         
10700 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10703
10704         * mini.h (NULLIFY_INS): New macro.
10705
10706 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10707
10708         * mini.c: statistical profiler fix for windows, patch
10709         from Tor Lillqvist (tml@novell.com).
10710
10711 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10712         * local-propagation.c: Fix bug 80591.
10713
10714 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10715
10716         * Makefile.am: put back the --export-dynamic option as with
10717         the previous gmodule flags (thanks to Robert Jordan).
10718
10719 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10720
10721         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10722
10723         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10724         simplify and speed up the local register allocator. Also rename some fields
10725         like iassign->vassign.
10726         
10727         * regalloc.c: Remove some functions which are no longer used since their
10728         inlined version is in mini-codegen.c.
10729         
10730         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10731
10732         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10733
10734 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10735
10736         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10737         narrowing. Fixes #80622.
10738
10739         * iltests.il: Add new regresssion test. 
10740
10741 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10742
10743         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10744         debug-debugger.c, debug-debugger.h: warning fixes.
10745         * driver.c: updated copyright year and made it fit in one line.
10746
10747 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10748
10749         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10750
10751 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10752
10753         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10754
10755         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10756
10757         * iltests.il: Add new test for bug #80507.
10758
10759 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10760
10761         * mini-arm.h: use soft-float also on vfp for now.
10762
10763 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10764
10765         * mini.c: fix some more soft-float issues.
10766
10767 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10768
10769         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10770
10771 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10772         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10773         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10774         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10775
10776 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10777
10778         * mini-arm.c: typo fix.
10779
10780 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10781
10782         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10783
10784 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10785
10786         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10787         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10788
10789         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10790
10791         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10792
10793         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10794         
10795         * inssel.brg: Fix a warning.
10796
10797         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10798
10799         * abcremoval.c ssa.c ssapre.c: Update after this change.
10800         
10801         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10802
10803         * dominators.c (df_set): Use mono_bitset_union_fast.    
10804
10805 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10806
10807         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10808         mini-codegen.c: reduce relocations and memory usage for the cpu
10809         description.
10810
10811 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10812
10813         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10814
10815         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10816         to reduce their size.
10817
10818 2007-01-19 Mark Mason <mason@broadcom.com>
10819
10820         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10821         * mini-mips.c: more configuration macros, support long conditional branches, additional
10822         asserts, fix epilog instrumentation.
10823         * mini-mips.h: use standard stack walk
10824         * cpu-mips.md: increase size of div, rem and conditional branches
10825         
10826 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10827
10828         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10829         to cpu spec data.
10830
10831 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10832
10833         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10834         (compile_method): Ditto.
10835
10836         * aot-runtime.c (decode_klass_info): Ditto.
10837
10838         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10839         needed by the code generated by inssel.brg. Also fix a warning.
10840
10841 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10842
10843         * mini.c: deal with enums that become genericinsts by
10844         being nested in a generic class (bug #79956).
10845
10846 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10847
10848         * mini.c: match the generic definition to check for
10849         private access with generic types (bug #78431).
10850
10851 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10852
10853         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10854         to make life easier for people cross-compiling that insist on not
10855         using scratchbox.
10856
10857 2007-01-17 Mark Mason <mason@broadcom.com>
10858
10859         * inssel-long.brg: patch to deal with mips missing flags
10860         * inssel-long32-mips.brg: implement overflow checks
10861         * insset-mips.brg: implement overflow checks
10862         * mini-mips.h: implement conditional exception handling
10863         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10864           Remove unused code, minor cleanups.
10865         * exceptions-mips.c: minor cleanups
10866         * mini-ops.h: add mips conditional exception ops
10867         * cpu-mips.md: add mips conditional exception ops
10868
10869         
10870 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10871
10872         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10873         to deal with mips missing of flags.
10874
10875 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10876
10877         * exceptions-ppc.c: execute fault handlers.
10878
10879 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10880
10881         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10882
10883 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10884
10885         * mini.c: handle also floating point values in initialize_array.
10886
10887 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10888
10889         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10890         array initialization and make it conditional on the intrins option.
10891
10892 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10893
10894         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10895         relocations and put the patch info names close to the enum definition.
10896
10897 2007-01-15 Mark Mason <mason@broadcom.com>
10898
10899         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10900
10901 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10902
10903         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10904
10905 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10906
10907         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10908
10909 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10910
10911         * Makefile.am: distribute the mips sources.
10912
10913 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10914
10915         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10916         directly.
10917
10918 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10919
10920         * cpu-x86.md: back out for now as this triggers other regressions.
10921
10922 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10923
10924         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10925         to eax:edx, so ecx can't get allocated to them (bug #80489).
10926
10927 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10928
10929         * mini.c, mini-exceptions.c: enabled running fault handlers
10930         (bug #80469).
10931
10932 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10933
10934         * driver.c: If nothing fail, do not use the string "failed",
10935         because it makes it very annoying to view test result logs on the
10936         web. 
10937
10938 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10939
10940         * debug-debugger.c (mono_debugger_main): Rename "main" to
10941         "main_method" to prevent a warning.
10942
10943         Remove a warning for unused field.
10944
10945 2006-12-28  Martin Baulig  <martin@ximian.com>
10946
10947         * debug-debugger.c
10948         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10949
10950 2006-12-22  Martin Baulig  <martin@ximian.com>
10951
10952         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10953         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10954         seperate `.mdb_debug_info' section, so we can access it from the
10955         debugger even if the binary is stripped.
10956
10957         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10958         from the `.mdb_debug_info' here to prevent the linker from
10959         removing that section.
10960
10961         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10962         mdb-debug-info64.s.
10963
10964 2006-12-19  Robert Jordan  <robertj@gmx.net>
10965
10966         * mini-x86: enable the code to return small structures in
10967         registers for FreeBSD as well. Fixes bug #80278.
10968         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10969
10970 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10971
10972         * mini-x86.c: align the stack when calling the profiler
10973         function instrumenting the prolog (on OSX).
10974
10975 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10976
10977         * mini.c: emit a break opcode where Debugger.Break () is called.
10978
10979 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10980
10981         * mini.c (mono_method_to_ir): Provide useful information on this
10982         assert, to prevent others from debugging like I did.
10983
10984 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10985
10986         * mini.c: enable code which was incorrectly commented
10987         (bug #80235).
10988
10989 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10990
10991         * mini-x86.c: enable on OSX, too, the code to return small
10992         structures in registers.
10993
10994 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10995
10996         * mini-x86.c: remove the use of the dynamic code manager here, too.
10997
10998 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10999
11000         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11001         mono_debugger_create_notification_function() to use
11002         mono_global_codeman_reserve () instead of a dynamic code manager.
11003
11004 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11005
11006         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11007         ves_array_element_address() jit icall and use a generated
11008         managed method instead (which is about 4 times faster for a rank 3
11009         array access).
11010
11011 2006-11-29  Mark Mason  <mason@broadcom.com>
11012
11013         * basic-calls.cs: additional tests for passing
11014         structures as function arguments.
11015
11016 2006-11-29  Mark Mason  <mason@broadcom.com>
11017
11018         * mini-mips.h: disable custom exception handling
11019         * mini-mips.c: throw/rethrow should use jalr to call
11020         exception stubs.  Fixed bug with passing structures
11021         by value. More support for tracing floating point
11022         functions.
11023
11024 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11025
11026         * mini.c: fixed typo in the soft-float ldind.r4 handling
11027         (bug #80086).
11028
11029 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11030
11031         * mini.c, mini.h, driver.c: added --runtime command line
11032         option to select a different runtime than the autodetected one.
11033         * jit.h: added API for embedders to initialize with a specific
11034         runtime version.
11035
11036 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11037
11038         * mini.c: handle also boxing of r4 values (bug #80024).
11039
11040 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11041
11042         * mini-ppc.c: force indirect calls until we reserve
11043         enough address space for all the generated code.
11044
11045 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11046
11047         * exceptions-arm.c: workaround bugs in the libc definition
11048         of struct ucontext.
11049
11050 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11051
11052         * inssel.brg: fixes from me and Mark Mason.
11053
11054 2006-11-23  Dick Porter  <dick@ximian.com>
11055
11056         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11057         semaphore display now we've fixed the initial value
11058
11059 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11060
11061         * inssel.brg: partially revert the last change to fix the build.
11062
11063 2006-11-21  Mark Mason  <mason@broadcom.com>
11064
11065         * inssel.brg: Add and use compare-and-branch macros to support
11066         architectures that do not have condition code registers (ie. MIPS).
11067         * *-mips.{c,brg,md}: Fix copyright statements
11068
11069 2006-11-20  Mark Mason  <mason@broadcom.com>
11070
11071         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11072         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11073         * mini.h: Added declaration for mono_print_ins()
11074         * mini-codegen.c: added ins_spec initializer for MIPS
11075         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11076         vreg to be virtual and hreg to be non-virtual.
11077         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11078         is not yet working/implemented correctly.
11079         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11080         non-static, fixup calls to print_ins() from other parts in the file.
11081
11082 2006-11-20  Mark Mason  <mason@broadcom.com>
11083
11084         * basic-calls.cs: added tests for passing structures as arguments
11085         to calls.
11086
11087 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11088
11089         * inssel-long32.brg: optimize signed division by power of two.
11090
11091 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11092
11093         * mini-arm.c: added support for interworking with thumb code
11094         (mono must be still be built using the ARM instruction encoding).
11095
11096 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11097
11098         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11099         verifier has different rules for it.   Fixes a few verifier issues
11100         in the test suite.
11101
11102         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11103         at the end, so people know what happened.
11104
11105 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11106
11107         * brach-opts.c: in optimize_exception_target() make sure we
11108         are in a catch clause (fixes bug #79871).
11109
11110 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11111
11112         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11113         more soft-float support fixes.
11114
11115 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11116
11117         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11118         that are passed half on the stack and half in registers.
11119
11120 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11121
11122         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11123         more mips integration work from Mark E Mason 
11124         <mark.e.mason@broadcom.com>.
11125
11126 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11127
11128         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11129         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11130         tramp-mips.c: added sources for the mips port, not
11131         integrated in the build yet. Contributed by
11132         Mark E Mason <mark.e.mason@broadcom.com>.
11133
11134 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11135
11136         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11137
11138 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11139
11140         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11141         put the soft-float rules in its own file since it seems to
11142         break s390 compilation.
11143
11144 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11145
11146         * mini-arm.c: fixed wrnings.
11147
11148 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11149
11150         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11151         inssel-arm.brg: ARM support for soft-float.
11152
11153 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11154
11155         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11156         loads and stores of 32 bit fp values.
11157
11158 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11159
11160         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11161
11162         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11163         works. Fixes #79852 and #79463.
11164
11165 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11166
11167         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11168         more soft-float support WIP and fixes.
11169
11170 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11171
11172         * mini-arm.c: some VFP updates.
11173
11174 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11175
11176         * mini-exceptions.c: 0 is a valid local var offset in some
11177         architectures, don't assert (bug #78508).
11178
11179 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
11180
11181         * exceptions-arm.c: fixed off by one error in stack walk code.
11182
11183 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11184
11185         * mini.h, mini.c: more precise tracking of type load exceptions.
11186
11187 2006-11-03  Robert Jordan  <robertj@gmx.net>
11188
11189         * Makefile.am: [WIN32] Add monow.exe target.
11190         * driver.c: [WIN32] Don't detach the console when debugging.
11191         Fixes bug #79797.
11192         
11193 2006-10-30  Miguel de Icaza  <miguel@novell.com>
11194
11195         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
11196
11197 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11198
11199         * aot-compiler.c (emit_method_info): Add a case missed earlier.
11200
11201         * driver.c (mini_regression): Fix --regression with AOT.
11202
11203         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
11204
11205 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
11208
11209         * mini-sparc.h: Don't use sigaction on sparc/linux.
11210
11211         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
11212
11213         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
11214
11215         * mini-exceptions.c: Add proper include files for getpid ().
11216
11217 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
11220         address instead of a MonoJitInfo* to avoid decoding the exception info for the
11221         method.
11222
11223         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
11224         name cache to reduce its size.
11225
11226         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11227
11228 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11229
11230         * mini-x86.c: Save/restore the current LMF structure more efficiently using
11231         the mono_lmf TLS variable.
11232
11233         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
11234         trampoline lmf frames.  
11235
11236         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
11237
11238 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
11241         the mono_lmf TLS variable.
11242
11243         * mini-exceptions.c: Access the LMF structure through accessors.
11244
11245         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
11246         variable instead of in jit_tls->lmf.
11247
11248         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
11249         
11250         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
11251         trampoline lmf frames.
11252
11253         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
11254
11255 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11256
11257        * mini.c trace.c mini-x86.c: Revert these too.
11258         
11259        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
11260        signature change.
11261
11262 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
11263
11264         * genmdesc.c: removed now dead code.
11265
11266 2006-10-09  Robert Jordan <robertj@gmx.net>
11267
11268         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
11269
11270 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11271
11272         * mini.h: do not leave gaps in the opcode values.
11273
11274 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
11275
11276         * jit-icalls.h: flag functions as internal here, too.
11277
11278 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
11279
11280         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
11281         functions with the internal attribute.
11282
11283 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
11284
11285         * aot-compiler.c: fclose the file descriptor in the profile read loop.
11286
11287 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11288
11289         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
11290         for soft-float.
11291
11292 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11293
11294         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
11295         tail calls as on other platforms.
11296
11297         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
11298
11299         * iltests.il: Add a few tailcall tests.
11300
11301 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11302
11303         * driver.c: fix loop for old compilers (bug #79521).
11304
11305 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11306
11307         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
11308
11309         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
11310
11311         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
11312         metadata without any code.
11313
11314         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
11315         more precise debugging information using gdb.
11316
11317 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11318
11319         * inssel-ia64.brg: Make the helper methods static.
11320
11321 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11322
11323         * inssel-x86.brg: make the helper methods static.
11324
11325 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
11326
11327         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
11328
11329 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11330
11331         * mini.c: updates for monoburg changes.
11332         * inssel.brg: make a few helper functions static as they should.
11333
11334 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11335
11336         * Makefile.am: Move mini-codegen.c to common_sources.
11337
11338 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11339
11340         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
11341         instructions.
11342         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
11343         mini-ppc.h: port to use the common local register allocator.
11344
11345 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11346
11347         * mini.h: Remove the comment too then.
11348
11349 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
11350
11351         * mini.h: put back backend.data which is to be used shortly and
11352         doesn't increase the size of MonoInst. If any 64 bit arch aligned
11353         pointers on 4 byte boundaries it'd have much bigger issues running
11354         and you can ifdef it out anyway.
11355
11356 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11357
11358         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
11359         MonoInst size by 4 bytes on 64 bit machines.
11360
11361 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11362
11363         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
11364         replacement with more meaningful field names. Arch maintainers, please
11365         check the assigned names are good enough for your arch.
11366
11367 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11368
11369         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
11370         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
11371
11372 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11373
11374         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
11375         relocations and memory requirements, put the optimization flags
11376         definitions in their own file.
11377
11378 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
11379
11380         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
11381
11382         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
11383
11384 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
11385
11386         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
11387
11388 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
11389
11390         * inssel.brg: use the correct function to get the size of an item
11391         in an array, given an element class.
11392         * aot-compiler.c: do not access class->class_size directly.
11393
11394 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11395
11396         * mini.h, debug-mini.c: added a debugging function to print
11397         info about local variables and arguments in a jitted method.
11398
11399 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
11400
11401         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11402
11403         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
11404
11405 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
11408         inner and outer loops when passing vtypes.
11409
11410 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
11411
11412         * mini-ppc.c: take into account the cpu errata for cache flushing
11413         which caused some random errors (bug #79381).
11414
11415 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11416
11417         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
11418         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
11419
11420 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
11423         loaded.
11424
11425         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
11426         freebsd ports tree.
11427
11428         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
11429         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
11430
11431         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
11432         displacement.
11433
11434 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
11435
11436         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
11437
11438 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
11439
11440         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11441         macro does not have to be changed during debugging.
11442
11443         * 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>.
11444
11445         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11446
11447         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11448         
11449         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11450         MONO_ARCH_NO_EMULATE_MUL is defined.
11451
11452         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11453
11454         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11455
11456         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11457
11458         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11459         
11460 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11461
11462         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11463         stuff to mini-exceptions.c where it is used.
11464
11465         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11466         setup code, the real one is in mini-exceptions.c.
11467
11468         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11469         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11470         some changes from the freebsd ports tree.
11471
11472         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11473         constants.
11474         
11475         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11476
11477 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11478
11479         * mini.c: on Linux, check for /proc to be mounted
11480         (bug# 79351, novell bug#201204).
11481
11482 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11483
11484         * mini.c: handle cases where pthread_attr_getstack() behaves
11485         incorrectly (bug #78096).
11486
11487 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
11488
11489         * mini-arm.c: support larger stack frames (bug #79272).
11490
11491 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11492
11493         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
11494
11495         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
11496         tokens.
11497
11498         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
11499         mono_class_from_name () to find a class from its name.
11500
11501         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
11502
11503 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
11504
11505         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11506
11507 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
11508
11509         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11510
11511 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11512
11513         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11514         callinfo->trampoline.
11515
11516         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11517         fixes #79271.
11518         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11519         future.
11520
11521 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11522
11523         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11524
11525 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11526
11527         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11528         stats.method_trampolines, it is already done by the generic trampoline code.
11529
11530         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11531         
11532 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11533
11534         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11535
11536         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11537
11538         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11539
11540         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11541         
11542         * mini.c (print_jit_stats): Print new stats.
11543
11544         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11545
11546 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11547
11548         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11549         Address on two dimensional arrays. Fixes #78729.
11550
11551         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11552
11553         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11554         a method.
11555
11556         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11557
11558         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11559         #79130.
11560         
11561         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11562         a race condition.
11563         (mini_get_ldelema_ins): Ditto.
11564
11565 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11566
11567         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11568         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11569         Fixes #79213.
11570
11571 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11572
11573         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11574         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11575
11576         * exceptions-s390x.c: Cosmetic change.
11577
11578         * tramp-s390.c: Fix warning.
11579
11580         * cpu-s390.md: Correct length of mul_imm.
11581
11582 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11583
11584         * aot-compiler.c: added binary writer with ELF backend
11585         implementation (only on Linux/x86 for now).
11586
11587 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11588
11589         * Makefile.am: Don't run net 2.0 AOT tests.
11590
11591         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11592         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11593
11594         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11595
11596 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11597
11598         * aot-compiler.c: simplified and refactored the asm-writing code
11599         to allow different backends.
11600
11601 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11604
11605         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11606         little. Share patches of type TYPE_FROM_HANDLE as well.
11607
11608         * mini.c (mono_patch_info_equal): New helper function.
11609         (mono_patch_info_hash): Ditto.
11610
11611         * aot-compiler.c (emit_method_code): Fix s390 build.
11612
11613         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11614         is not handled because it is stored as a flag and not as a type ctor. Fixes
11615         #79016.
11616
11617 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11618
11619         * aot-compiler.c: Fix computation of GOT slot statistics.
11620         
11621         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11622         Also remove support for not PIC AOT.
11623
11624         * mini.h: Bump AOT file format version.
11625
11626         * objects.cs: Add a test for #78990.
11627
11628         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11629         (peter.dettman@iinet.net.au). Fixes #79087.
11630
11631         * basic-long.cs: Add a test for the above.
11632
11633 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11634
11635         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11636         
11637         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11638         code somewhat.
11639
11640 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11641
11642         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11643         exceptions.
11644
11645 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11646
11647         * mini.c: Don't verify COM proxy invoke calls
11648         
11649
11650 2006-08-10  Dick Porter  <dick@ximian.com>
11651
11652         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11653         which process is holding semaphores locked.
11654
11655 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11656
11657         * mini-ia64.c mini-amd64.c: Fix #79027.
11658
11659         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11660
11661         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11662
11663         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11664         implicit arguments in a vararg call. Fixes #79027.
11665
11666 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11667
11668         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11669         (mono_get_array_new_va_signature): Ditto.
11670
11671 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11672
11673         * aot-runtime.c: Call init_plt lazily.
11674
11675         * inssel-long.brg: Fix unsigned long->int conversion.
11676
11677         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11678
11679         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11680         that most data is now in the .rss/.data section.
11681
11682 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11683
11684         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11685
11686         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11687
11688         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11689
11690         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11691
11692         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11693         virtual call. Fixes #79010.
11694
11695         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11696         and use the result as the this argument in the real call.
11697
11698         * generics.2.cs: Add a new test for #79010.
11699         
11700 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11701
11702         * mini-x86.c: Fix a warning.
11703
11704         * aot-compiler.c: Add a bunch of statistics.
11705
11706         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11707
11708 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11709
11710         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11711
11712 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11713
11714         * 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>.
11715
11716 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11717
11718         * mini.c (mono_method_to_ir): Obtain the original method in the
11719         CIL stream and use this to perform validation.
11720
11721         Fixed: #78816
11722
11723 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11724
11725         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11726         (mono_arch_call_opcode): Ditto.
11727
11728         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11729         #78826.
11730
11731         * mini.c (mono_patch_info_dup_mp): New helper function.
11732         
11733         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11734         compilation. Fixes #78827.
11735
11736 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
11737
11738         * declsec.c: Use original security informations for
11739           MONO_WRAPPER_MANAGED_TO_MANAGED.
11740
11741 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11742
11743         * mini.c: Allow Com Interop methods/classes and
11744         don't verify COM wrapper calls
11745         
11746
11747 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11748
11749         * inssel-long32.brg: Fix long->i4 checked conversion.
11750
11751         * exceptions.cs: Add a test for the above.
11752
11753 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11754
11755         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11756
11757         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11758         leaks.
11759
11760         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11761         #78775.
11762
11763 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * mini.c: Fix solaris/x86 exception handling.
11766
11767         * Makefile.am: Get rid of $(ICU_LIBS).
11768
11769 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11770
11771         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11772         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11773         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11774
11775         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11776
11777         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11778         this function causes a SIGSEGV.
11779
11780 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11781
11782         * mini.c: Remove unused solaris/x86 includes.
11783
11784 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11785
11786         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11787
11788 2006-06-20  Jb Evain  <jbevain@gmail.com>
11789
11790         * cpu-g4.md: fix max length of start_handler instruction.
11791
11792 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11793         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11794
11795 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11796         * ssa.c: Fixed bug 78653 for SSA based deadce.
11797         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11798         MonoInst.flags, used in SSA based deadce.
11799         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11800         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11801
11802 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11803
11804         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11805         it can end up using non executable memory on ppc64 systems
11806         running ppc32 userspace (fix from Johannes Berg).
11807
11808 2006-06-14  Dick Porter  <dick@ximian.com>
11809
11810         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11811         4.1.1
11812
11813 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11814         * mini.c: Made so that inline is locally disabled if it would
11815         trigger a .cctor, because too many apps depend on this behavior
11816         (which seems to be also the one of the MS CLR).
11817
11818 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11819
11820         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11821         No idea why this worked before.
11822
11823         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11824         which branch to outer exception clauses since they could skip the
11825         inner finally clauses. Fixes #78633.
11826
11827         * exceptions.cs: Add a test for the above.
11828
11829         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11830         Fixes #78629.
11831
11832         * iltests.il: Add a test for the above.
11833
11834 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11837         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11838
11839         * iltests.il: Add a test for the above.
11840
11841 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11844         
11845         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11846         methods as instrinsics.
11847
11848 2006-06-09  Wade Berrier <wberrier@novell.com>
11849
11850         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11851         (simple-cee-ops.h ssapre-mini-ops.h)
11852
11853 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11854
11855         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11856         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11857         instruction).
11858         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11859         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11860
11861 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11862
11863         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11864
11865 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11866
11867         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11868         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11869         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11870         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11871         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11872         of opcodes, so that bug 78549 should not happen again.
11873         * ssapre.c: Updated to use the renamed files.
11874
11875 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11876
11877         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11878         in OP_ATOMIC_EXCHANGE_I4.
11879
11880 2006-06-07  Wade Berrier <wberrier@novell.com>
11881
11882         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11883         in mono_debugger_create_notification_function)
11884
11885 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11886
11887         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11888         
11889         * mini.c (type_from_stack_type): Disable some changes which do not
11890         seem to work.
11891
11892         * driver.c: Reenable opts.
11893
11894         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11895         of the evaluation stack.
11896         
11897         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11898         evaluation stack trace at entry to the bblock.
11899
11900         * mini.c (merge_stacks): New function to perform verification of stack merges.
11901         Turned off by default.
11902
11903         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11904         STACK_MP.
11905         
11906 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11907
11908         * local-propagation.c: Fixed bug 78549.
11909
11910 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11911
11912         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11913
11914 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11915
11916         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11917         tramp-arm.c, tramp-ia64.c
11918         (mono_debugger_create_notification_function): Update signature to
11919         new signature and use new protocol for creating the notification
11920         function.  
11921
11922         Should fix the build.
11923
11924 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11925
11926         * exceptions-ppc.c (mono_jit_walk_stack)
11927         (ves_icall_get_frame_info): Fix the build
11928
11929 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11930
11931         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11932
11933 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11934
11935         * il2tests.2.il: New file for generics CIL tests.  Add test for
11936         #78019.
11937         * Makefile.am: Update.
11938
11939         Fix #78019
11940         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11941         to nullable types.
11942
11943 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11944
11945         * aliasing.c: Fixed bug 78311.
11946
11947 2006-05-29  Martin Baulig  <martin@ximian.com>
11948
11949         * mini-exceptions.c (mono_find_jit_info): When computing the
11950         native offset, check whether we're actually inside the method's
11951         code; call mono_debug_print_stack_frame() to format the frame.
11952         (ves_icall_System_Exception_get_trace): Call
11953         mono_debug_print_stack_frame() to format the stack frame.
11954         (ves_icall_get_trace): Update to the new debugging API.
11955         (mono_jit_walk_stack_from_ctx): Likewise.
11956         (ves_icall_get_frame_info): Likewise.
11957
11958         * mini.c (get_method_from_ip): Use the new debugging API.
11959         (mono_print_method_from_ip): Likewise.
11960
11961         * exceptions-ppc.c
11962         (mono_jit_walk_stack): Use the new debugging API.
11963         (ves_icall_get_frame_info): Likewise.   
11964
11965 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11968
11969 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11970
11971         * mini.c: Added "limitator" to inline for debugging.
11972
11973 2006-05-24  Martin Baulig  <martin@ximian.com>
11974
11975         * debug-debugger.c (mono_debugger_init): Create a private,
11976         malloc()-based code manager for the notification function and
11977         intentionally leak it on exit.  This fixes the crash-on-exit race
11978         condition.
11979
11980         * tramp-amd64.c
11981         (mono_debugger_create_notification_function): Added
11982         `MonoCodeManager *' argument.
11983
11984         * tramp-x86.c
11985         (mono_debugger_create_notification_function): Added
11986         `MonoCodeManager *' argument.
11987
11988 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11989
11990         * aliasing.c: Fixed 64 bit issue.
11991         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11992         default since all known bugs are fixed (one more time!).
11993
11994 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11995
11996         * mini.c: write barrier support.
11997
11998 2006-05-23  Martin Baulig  <martin@ximian.com>
11999
12000         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12001         check at the top of the file.
12002
12003 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12004
12005         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12006         reverting changes without reason and without changelog entries.
12007
12008 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12009
12010         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12011         to a few opcodes. Fixes #78439.
12012
12013         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12014         consistency with other archs.
12015
12016         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12017
12018 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12019
12020         * debug-debugger.c: fix the build.
12021
12022 2006-05-17  Martin Baulig  <martin@ximian.com>
12023
12024         * debug-debugger.c
12025         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12026         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12027         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12028         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12029
12030 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12031
12032         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12033
12034 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12035
12036         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12037         MONO_TYPE_GENERICINST.
12038         
12039         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12040         MONO_TYPE_GENERICINST.
12041
12042 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12043
12044         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12045         #78325.
12046
12047 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12050         mempool.
12051         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12052
12053 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12054
12055         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12056         mono_trace_cleanup ().
12057
12058         * iltests.il: Fix problem with the newly added test.
12059
12060         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12061         due to register constraints, free up the previous hreg. Fixes #78314.
12062
12063         * iltests.il: Add new test for #78314.  
12064
12065         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12066         Interlocked.Add. Fixes #78312.
12067
12068         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12069         
12070 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12073
12074 2006-05-05  Martin Baulig  <martin@ximian.com>
12075
12076         * debug-mini.c (mono_debug_open_block): New method.
12077
12078         * mini-amd64.c
12079         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12080         the beginning of each basic block.
12081
12082         * mini-x86.c
12083         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12084         the beginning of each basic block.
12085
12086 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12087
12088         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12089         default until I understand why they break the build on amd64.
12090
12091 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12092
12093         * mini.c (mini_cleanup): Call mono_cleanup ().
12094
12095         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12096         errors.
12097
12098 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12099
12100         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12101         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12102         default since all known bugs are fixed, and I cannot reproduce bug
12103         77944... I'm asking Matt Hargett to test again after this commit.
12104
12105 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12106
12107         * mini-codegen.c: Fixed typo that thrashed inline.
12108
12109 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12110
12111         * dominators.c (compute_dominators): Avoid using a worklist since
12112         it is not correct in some cases. Instead, iterate over all bblocks as
12113         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12114
12115 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12116
12117         * mini.c (mono_jit_compile_method_inner): Use
12118         mono_prepare_exception_from_error that resets the value
12119         internally.
12120
12121 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12122
12123         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12124         
12125 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12126
12127         * aliasing.c: Fixed bug 78210.
12128
12129 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12130
12131         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12132         default until all their problems (or the ones they trigger) are fixed.
12133
12134 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12135
12136         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12137         
12138         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12139         as loaded only after resolving patches since that could invoke the same method.
12140
12141         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12142
12143         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12144         functions.
12145
12146         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12147         AOT loader.
12148
12149         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12150         stack.
12151
12152         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12153         made from AOT code through the PLT table.
12154
12155         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12156         holding the plt offset when a call is made to the aot plt trampoline.
12157         
12158 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12159
12160         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12161         amd64 AOT support.
12162
12163         * Makefile.am (common_sources): Fix build breakage.
12164
12165         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12166         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12167         intra-assembly calls if possible.
12168         
12169         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12170
12171         * mini-trampolines.c: Handle PLT entries.
12172
12173         * mini.c: Avoid creating a GOT var for calls.
12174
12175         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
12176         from mscorlib code.
12177
12178         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
12179         from mscorlib code.
12180
12181         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
12182         AOT code.       
12183
12184         * mini.h: Bump AOT file format version.
12185         
12186         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
12187         covers more cases.
12188
12189 2006-04-25  Martin Baulig  <martin@ximian.com>
12190
12191         * driver.c: Disable copyprop, consprop and inline when running
12192         inside the debugger.
12193
12194 2006-04-25  Martin Baulig  <martin@ximian.com>
12195
12196         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
12197         with `get_current_thread' and added `detach'.
12198         (MonoDebuggerMetadataInfo): Added `thread_size',
12199         `thread_tid_offset', `thread_stack_ptr_offset' and
12200         `thread_end_stack_offset'.
12201
12202 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12203
12204         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
12205         aot-runtime.c.
12206
12207         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
12208         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
12209
12210         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
12211
12212         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
12213
12214         * aot.c: Add support for ADJUSTED_IID.  
12215
12216 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
12217
12218         * aot.c (emit_method_order): Don't align method_order_end.
12219
12220         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
12221         the interface ID changes.
12222
12223 2006-04-21  Dick Porter  <dick@ximian.com>
12224
12225         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
12226         cleaning up a thread.  Fixes the new part of bug 77470.
12227
12228 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
12229
12230         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
12231         to managed wrapper.
12232                      
12233 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
12234
12235         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
12236         
12237         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
12238         SIGSEGV. Fixes #78072.
12239
12240         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
12241         unregister our SIGABRT handler.
12242
12243 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
12244
12245         * mini.c: Disabled inline where it can alter the call stack in a
12246         way visible from managed code.
12247         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
12248         default.
12249
12250 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
12251
12252         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
12253         on other platforms. Fixes #78089.
12254
12255 2006-04-13  Martin Baulig  <martin@ximian.com>
12256
12257         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
12258         determine whether we're inside the debugger.
12259
12260         * debug-debugger.h
12261         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
12262
12263 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
12264
12265         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
12266         handler clauses. Fixes #78024.
12267
12268         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
12269         in the CALL_MEMBASE opcodes. Fixes #78088.
12270         (mono_arch_get_vcall_slot_addr): Ditto.
12271
12272 2006-04-10  Martin Baulig  <martin@ximian.com>
12273
12274         * debug-debugger.c: The thread handling code has now been moved
12275         into ../metadata/threads.c.
12276
12277 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12278
12279         * driver.c (mono_main): Fix --with-gc=none build.
12280
12281         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
12282         (mono_spillvar_offset_float): Ditto.
12283         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
12284         hreg, not when its !global, since on ia64, there is a third category: stacked
12285         registers.      
12286
12287 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
12288
12289         * mini.c: set MonoInst->klass for load field address and a few other
12290         places.
12291
12292 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12293
12294         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
12295
12296 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
12297
12298         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
12299         the branch opt changes.
12300
12301 2006-04-06  Dick Porter  <dick@ximian.com>
12302
12303         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
12304         
12305         * wapihandles.c (mini_wapi_seminfo): 
12306         * driver.c (mono_main): Add semaphore info option
12307
12308 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12309
12310         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
12311         branch optimization changes. Fixes #78009.
12312
12313 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12314
12315         * mini.c: ignore accessibility of methods in managed->native wrappers.
12316
12317 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12318
12319         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
12320         
12321         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
12322
12323 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12324
12325         * mini.c: Modify the branch optimizations to preserve the invariant that
12326         the entries inside the in_bb and out_bb arrays are unique.
12327         (mono_unlink_bblock): Avoid creation of new arrays.
12328
12329 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * mini.c (mono_unlink_bblock): Fix regression caused by previous
12332         change (#77992).
12333
12334 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
12335
12336         * mini.c (optimize_branches): Remove the "optimizations" in
12337         the cbranch1/cbranch2 -> branch cases which were causing several
12338         problems in the past. Fixes #77986.
12339
12340 2006-03-31  Chris Toshok  <toshok@ximian.com>
12341
12342         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
12343         default optimizations :(
12344
12345 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12346
12347         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
12348         branch.
12349
12350 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
12351
12352         * local-propagation.c: Added comments to structs and removed
12353         "Mono" prefixes from local tree mover types.
12354
12355 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
12356
12357         * Makefile.am (arch_sources): Define this for each architecture so 
12358         libmono_la_SOURCES is defined in one place.
12359
12360 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12361
12362         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
12363         from handles/.
12364
12365 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
12366
12367         * driver.c: print the GC name supplied by configure.
12368
12369 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
12370
12371         * local-propagation.c: Added tree mover, and moved here all the
12372         local propagation code from mini.c
12373         * mini.c: Added support for treeprop, and moved all the local
12374         propagation code to local-propagation.c
12375         * mini.h: Added support for treeprop
12376         * driver.c: Added support for treeprop, enabled consprop, copyprop,
12377         treeprop, inline and deadce by default
12378         * Makefile.am: Added local-propagation.c
12379
12380 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
12383
12384 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
12385
12386         * debug-debugger.c: make it compile without the Boehm GC.
12387
12388 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12389
12390         * mini.c: fixed issue with mismatch when an icall is registered
12391         with multiple names but same address.
12392
12393 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12394
12395         * declsec.c, mini-exceptions.c: use write barrier to set reference
12396         fields of managed objects.
12397
12398 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12399
12400         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
12401         (can_access_internals): Fix a warning.
12402
12403         * mini.c (print_method_from_ip): Rename this to 
12404         mono_print_method_from_ip so it gets exported.
12405
12406         * trace.c: Deal with strings inside StringBuilder's containing garbage
12407         and fix memory leaks. Fixes #77848.
12408
12409 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
12412         fixes #77787.
12413
12414 2006-03-16 Neale Ferguson <neale@sinenomine.net>
12415         
12416         * mini-s390.c: Remove OP_X86_TEST_NULL.
12417
12418 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12419
12420         * mini.c: use the correct GetHashCode() for the moving collector.
12421
12422 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
12423
12424         * liveness.c: Regalloc spill cost tuning.
12425
12426 2006-03-15 Neale Ferguson <neale@sinenomine.net>
12427         
12428         * mini-s390x.h: Correct S390_LONG macro.
12429
12430         * mini-s390x.c: Cleanup unused code.
12431
12432 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12433
12434         * jit-icalls.h: New file.
12435
12436         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
12437         icalls and include that instead of including jit-icalls.c.
12438
12439         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
12440         OP_X86 opcodes.
12441
12442 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12443
12444         * mini.c: when checking for member accessibility, also check for
12445         friend assemblies and for explicit interface implementations.
12446
12447 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12448
12449         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12450
12451         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12452
12453         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12454         common cases are done first.    
12455
12456         * mini-ops.h: Only define platform specific opcodes on the given platform.
12457
12458         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12459         branch.
12460         
12461 2006-03-14  Martin Baulig  <martin@ximian.com>
12462
12463         Revert Paolo's change from r57348:
12464
12465         * mini.h: don't use gboolean for bitfields.
12466         * mini.c: verifier changes for fields and methods accessibility.
12467
12468 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12469
12470         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12471
12472         * mini-s390x.c: Fix conv_r_un.
12473
12474         * cpu-s390, cpu-s390x.md: Fix lengths.
12475
12476 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12477
12478         * mini.c: nested types have access to all the nesting
12479         levels, not just the enclosing types.
12480
12481 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12482
12483         * mini.c: added a few more verification checks.
12484
12485 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
12486
12487         * liveness.c: Merge optimizations from the linear-il branch.
12488
12489 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12490
12491         * mini-ia64.c (emit_call): Add a comment.
12492
12493         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
12494
12495         * tramp-ia64.c: Fix some warnings.
12496
12497 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12498
12499         * mini.h: don't use gboolean for bitfields.
12500         * mini.c: verifier changes for fields and methods accessibility.
12501
12502 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12503
12504         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
12505         lazy icall wrapper changes.
12506
12507         * dominators.c: Replace all the dominator algorithms with faster
12508         ones from the linear-il branch.
12509
12510         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12511         the mempool.
12512
12513         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12514         common cases are done first.
12515
12516         * mini-amd64.c: Fix some warnings.
12517
12518         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12519         from the mempool.
12520
12521         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12522         added code.
12523
12524         * mini.h: Add a missing prototype.
12525
12526 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12527
12528         * mini.c: Compile icall wrappers lazily.
12529
12530         * mini-codegen.c: Use printf instead of g_print since its much faster.
12531
12532         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12533         function.
12534
12535         * mini.c (optimize_branches): Cache the negative result from 
12536         remove_block_if_useless ().
12537
12538         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12539         Also fix some bblock linking issues.
12540
12541         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12542         assembly files.
12543
12544         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12545
12546         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12547         accessed fields first, for better cache behavior.
12548         
12549 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12550
12551         * mini.c: speedup IList<T> array accesses.
12552
12553 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12556         inline_costs counter. Fixes #77190.
12557
12558 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12559
12560         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12561         trace messages. Fixes #77706.
12562
12563 2006-03-04  Martin Baulig  <martin@ximian.com>
12564
12565         * tramp-amd64.c, tramp-x86.c
12566         (mono_debugger_create_notification_function): Use
12567         mono_global_codeman_reserve() to allocate a buffer at runtime and
12568         return it.
12569
12570         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12571
12572         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12573         notification function at runtime and then call `initialize' in the
12574         `MONO_DEBUGGER__debugger_info' vtable.
12575
12576 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * iltests.il: Fix a visibility problem.
12579
12580 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12581
12582         * driver.c, mini.c: add hooks for the counters API.
12583
12584 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12585
12586         * driver.c: show disabled options.
12587
12588 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12589
12590         * linear-scan.c: always use cost-driven selection.
12591
12592 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12593
12594         * jit-icalls.c (helper_compile_generic_method): Revert change from
12595         2006-02-24.
12596
12597 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12598
12599         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12600
12601 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12602
12603         * inssel.brg: style fixes, mostly to force the updated monoburg
12604         to run for people using svn.
12605
12606 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12607
12608         * mini.c: match monoburg changes.
12609
12610 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12611
12612         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12613         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12614         declaration in the header file.
12615
12616 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12617
12618         * helpers.c: reduce relocations and mem usage.
12619
12620 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12621
12622         * mini.h, mini-codegen.c: disable logging features if
12623         requested by configure.
12624
12625 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12626
12627         * mini.c: tiny verifier changes.
12628
12629 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12630
12631         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12632         cpu-pentium.md: stack alignment changes for osx/x86,
12633         partially from Geoff Norton <gnorton@customerdna.com>.
12634
12635 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12636
12637         * jit-icalls.c (helper_compile_generic_method): Update to changes
12638         in metadata/class.c.
12639
12640 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12641         
12642         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12643         
12644         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12645         interface calls with large offsets.
12646
12647 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12648
12649         * jit-icalls.c (helper_compile_generic_method): Document the
12650         special-case we depend on so that we can inflate the method twice
12651         with the same context with no bad side-effects.
12652
12653 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12654
12655         * mini-x86.c, mini-amd64.c: fix for case when xen support
12656         is disabled.
12657
12658 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12659
12660         * mini-x86.c, mini-amd64.c: generate code to access tls items
12661         in a faster way for Xen systems.
12662
12663 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12664
12665         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12666         updates and compilation fixes for the OSX/x86 port, mostly from
12667         Geoff Norton <gnorton@customerdna.com>.
12668
12669 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12670
12671         * inssel.brg: faster interface call implementation
12672         to sync with the interface_offsets MonoVTable changes.
12673
12674 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12675
12676         * mini.c: more verification checks.
12677
12678 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12679
12680         * mini.c: added a few more verification checks.
12681
12682 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12683
12684         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12685         facility on the processor and use it if available.
12686
12687 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12688
12689         * driver.c, aot.c, mini.c: throw exception if the IL code is
12690         invalid or unverifiable.
12691
12692 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12693
12694         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12695         m.StructField.
12696
12697 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12700
12701 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12702
12703         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12704         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12705         handling of instantiated generic valuetypes.
12706
12707 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12710         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12711         instead.
12712
12713         * generics.2.cs: Revert the nullable reftypes tests.
12714
12715 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12718         using __builtin_frame_address (1) as it doesn't work in the presence
12719         of optimizations. Hopefully fixes #77273.
12720
12721         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12722         -> generics.cs change as it doesn't work with some automake versions.
12723
12724 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12725
12726         * mini.c: handle systems that sue a different way to
12727         retrieve the stack address of the current thread.
12728
12729 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12730
12731         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12732         it specially in the makefile.
12733
12734         * generics.2.cs: Add tests for nullable reference types.
12735
12736 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12737
12738         * mini.c: always handle the case when mono_jit_init()
12739         is called in a thread different from the main thread,
12740         confusing libgc (bug #77309).
12741
12742 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12743
12744         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12745
12746 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12747
12748         * mini.c: change optimize_branches () to use a single loop
12749         and introduce a new optimization to simplify some range checks.
12750
12751 2006-02-03  Martin Baulig  <martin@ximian.com>
12752
12753         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12754         and merged with debugger_thread_manager_add_thread().
12755         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12756         inform the debugger about the main thread.
12757
12758 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12759
12760         * basic.cs: Add test for div.un/rem.un constant folding.
12761
12762 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12763
12764         * cpu-s390x.md: correct int_xor_imm length
12765
12766 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12767
12768         * generics.2.cs: New test for #77442.
12769
12770         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12771         #77442.
12772
12773 2006-02-02  Martin Baulig  <martin@ximian.com>
12774
12775         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12776         <mono/metadata/mono-debug-debugger.h>   
12777
12778         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12779
12780 2006-02-02  Martin Baulig  <martin@ximian.com>
12781
12782         * debug-debugger.h: New header file for debug-debugger.c.
12783
12784         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12785         function is a separate thread anymore; add support for attaching.
12786
12787 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12788
12789         * tramp-x86.c: Fix a warning.
12790
12791 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12794         on very large methods.
12795
12796         * aot.c (load_patch_info): Fix a warning.
12797
12798 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12799
12800         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12801         mini-ops.h: alu membase optimizations.
12802
12803 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12804
12805         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12806         to speedup StringBuilder.
12807
12808 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12809
12810         * dominators.c (mono_compute_natural_loops): Fix detection of
12811         loop body start blocks.
12812
12813         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12814
12815 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12816
12817         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12818         #75145.
12819
12820 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12821
12822         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12823
12824 2006-01-25  Martin Baulig  <martin@ximian.com>
12825
12826         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12827         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12828         started to cleanup this file a little bit.
12829
12830 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12831
12832         * mini.c: optimize a codepath frequently happening in generics code.
12833
12834 2006-01-23  Martin Baulig  <martin@ximian.com>
12835
12836         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12837
12838         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12839         functions directly.
12840
12841         * driver.c: debug-debugger.c is only available if
12842         `MONO_DEBUGGER_SUPPORTED' is defined.   
12843
12844 2006-01-23  Martin Baulig  <martin@ximian.com>
12845
12846         * debug-debugger.c: Only enable this on platforms where the Mono
12847         Debugger is working (x86 and x86_64).
12848
12849 2006-01-21  Martin Baulig  <martin@ximian.com>
12850
12851         The Mono Debugger is now using the normal `mono' instead of the
12852         `mono-debugger-mini-wrapper' when executing managed code.
12853
12854         * debug-debugger.c: New file; previously known as
12855         debugger/wrapper/wrapper.c.
12856
12857         * debug-mini.c (mono_init_debugger): Removed.
12858
12859         * driver.c (mono_main): Added new `--inside-mdb' command line
12860         argument which is used when running inside the debugger.
12861
12862 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12863
12864         * liveness.c (mono_analyze_liveness): Remove some unused data
12865         structures.
12866
12867 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12868
12869         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12870
12871 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12874         depends on implementation details of monobitset.
12875
12876         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12877         Fixes #77271.
12878
12879 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * liveness.c: Update after monobitset changes.
12882
12883 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12884
12885         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12886
12887 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12888
12889         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12890
12891         * mini-s390x.c: Remove warning messages.
12892
12893 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12894
12895         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12896
12897 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12898
12899         * generics.2.cs: Add ldelem/stelem_any test.
12900
12901 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12902
12903         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12904
12905 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12906
12907         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12908         
12909 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12910
12911         * generics.2.cs: Reenable vtype tests.
12912
12913         * inssel-x86.brg: Remove an icorrect valuetype rule.
12914
12915 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12916
12917         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12918         initial support for OP_ABS.
12919
12920 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12921
12922         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12923
12924 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12925
12926         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12927         conversion and implement LADD/LSUB.
12928
12929         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12930         architectures.
12931
12932 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12933
12934         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12935
12936         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12937         architectures.
12938
12939 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12940
12941         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12942         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12943         (stack walk problem).
12944
12945 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12946
12947         * aot.c (mono_aot_load_method): Fix a warning.
12948
12949 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12950
12951         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12952
12953 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * iltests.il: Add test for #77148.
12956
12957         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12958         #77148.
12959
12960 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12961
12962         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12963
12964 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12965
12966         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12967         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12968
12969         * basic-long.cs: Add lconv-to-r4/r8 tests.
12970
12971 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12974
12975         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12976         here as on other archs.
12977
12978 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12979
12980         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12981
12982 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12983
12984         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12985         
12986         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12987
12988         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12989         instrument_prolog; Add memory_barrier instruction.
12990
12991 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12992
12993         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12994
12995 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12998
12999         * aliasing.c inssel.brg: Fix warnings.
13000
13001         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13002         could skip initialization of some parts of memory.
13003
13004         * mini.c mini-ia64.c: Fix warnings.
13005
13006         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13007
13008 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13011         a crash seen on sparc.
13012
13013         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13014         
13015         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13016
13017 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13018
13019         * mini-ops.h: Add s390_backchain instruction
13020
13021         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13022
13023         * cpu-s390.md: Add s390_backchain instruction
13024
13025         * mini-s390.c: Significant ABI changes
13026
13027         * mini-s390.h: Cater for zero length structures
13028
13029 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13030
13031         * mini-s390.c: ABI fixes
13032
13033         * inssel-s390.brg: Remove debug statements
13034
13035         * cpu-s390.md: Fix length of ATOMIC_xx operations
13036
13037 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * basic-float.cs: Add float<->long conversion tests.
13040
13041 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13042
13043         * mini-s390.c: Fix LOCALLOC processing.
13044
13045         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13046
13047 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13048
13049         * iltests.il: Add tests for some opcodes not covered by the other
13050         tests.
13051
13052 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13053
13054         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13055         register loading for Tail processing; Correct trace output.
13056
13057         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13058
13059         * cpu-s390.md: Correct size of jmp instruction. 
13060
13061 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13062
13063         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13064
13065 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13066
13067         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13068           Bring s390 up to current level.
13069
13070 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13071
13072         * generics.2.cs: Disable the newly added tests as they do not work yet.
13073         
13074         * generics.2.cs: Add valuetype tests.
13075
13076 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * basic-long.cs: Add i4->u8 test.
13079
13080         * objects.cs: Add tests for JIT intrinsic.
13081
13082         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13083         optimizations lost by a mistake.
13084
13085 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13086
13087         * basic-long.cs: Remove a test moved to objects.cs.
13088
13089         * arrays.cs: Add more array tests.
13090
13091 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13092
13093         * arrays.cs: Add new tests for multi-dimensional arrays.
13094
13095 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13096
13097         * Makefile.am (test_sources2): Add generics.2.cs.
13098         (EXTRA_DIST): Add test_sources2.
13099
13100 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13101
13102         Support for boxing and unboxing nullable types as well as the
13103         isinst operation on nullables, per the CLI ammendment.
13104
13105         * inssel.brg (CEE_ISINST): Special case for nullable
13106
13107         * mini.c (handle_unbox_nullable): new method
13108         (handle_box): Special case for nullable types
13109         (mono_method_to_ir): Call handle_unbox_nullable in correct
13110         places.
13111
13112         * generics.2.cs: New test suite
13113
13114         * Makefile.am: Support for regression tests with generics.
13115
13116 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13117
13118         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13119         allocated to registers. Fixes #76800.
13120
13121 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13122
13123         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13124
13125 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13126
13127         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13128         of platforms.
13129
13130 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13131
13132         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13133         objects.cs.
13134
13135         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13136         
13137         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13138 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13139
13140         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13141         single precision before storing to a single precision location.
13142
13143 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13144
13145         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13146
13147 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13148
13149         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13150         correct files.
13151
13152         * basic.cs: Remove test_0_byte_compares test which was moved to
13153         objects.cs a long time ago.
13154
13155 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13156
13157         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13158
13159 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13160
13161         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13162         handlers are called.
13163
13164         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13165         throwing code.
13166
13167          * mini-ia64.c: Add support for the throw->branch exception 
13168         optimization.   
13169
13170         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13171
13172 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13173
13174         * mini.c: Enabled "fastpath" deadce :-)
13175         
13176 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13177
13178         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
13179         alias analysis pass to support it.
13180         * mini.h: Likewise.
13181         * ssa.c: Likewise.
13182         * liveness.c: Likewise (liveness computation can use aliasing
13183         information to be more accurate).
13184         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
13185         moreover made so that "--compile-all" uses the given optimization
13186         flags and not the default ones.
13187         * aliasing.c: Alias analysis (new file).
13188         * aliasing.h: Likewise.
13189         * Makefile.am: added "aliasing.c" and "aliasing.h".
13190         
13191 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13192
13193         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
13194         OP_L opcodes.
13195
13196 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
13197
13198         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
13199         fp >= end_of_stack exit condition, as it is not needed, and it might
13200         become true for fp eliminated frames.
13201
13202 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13203
13204         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
13205         coded offsets.
13206
13207 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
13208
13209         * mini-arm.c: fixed alignment of doubles/longs to match
13210         the C ABI (bug #76635).
13211
13212 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
13213
13214         * aot.c: fix compilation with --enable-minimal=aot.
13215
13216 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
13217
13218         * mini-arm.c: fixed compatibility with the new
13219         floating point emulator package for compares.
13220
13221 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
13222
13223         * mini.c : reverted sig->pinvoke changes (r51396-51397).
13224
13225 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
13226
13227         * mini-exceptions.c (print_stack_frame): Output to stderr.
13228         (mono_handle_native_sigsegv): Ditto.
13229
13230 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13231
13232         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
13233         OP_LCONV_TO_OVF_I implementation.
13234
13235         * mini-amd64.c: Add support for the throw->branch exception 
13236         optimization.
13237
13238         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
13239         when the catch clause catches a more general exception, i.e. Object.
13240
13241 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
13242
13243         * cpu-ia64.md: Remove unused opcodes.
13244
13245         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
13246         specific defines for architectures defining USE_SIGACTION.
13247
13248         * mini-ia64.c: Fix some warnings.
13249
13250         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
13251         version seemed to skip a frame.
13252
13253 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13254
13255         * mini.c: Clean up the usage of sig->pinvoke flag. Now
13256         only calls which are made to native code use this flag.
13257
13258 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
13259
13260         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
13261         varargs methods as well.
13262         
13263         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
13264         which have save_lmf set. Reorganize methods prologs a bit.
13265
13266         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
13267         debugger to the proper place.
13268
13269 2005-10-29  Martin Baulig  <martin@ximian.com>
13270
13271         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
13272         when running inside the debugger until the debugger has support
13273         for it.
13274
13275 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13276
13277         * mini.h: Fix a warning.
13278
13279 2005-10-24  Miguel de Icaza  <miguel@novell.com>
13280
13281         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
13282         we expose publicly, this returns the string.
13283
13284 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
13285
13286         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
13287         with fp elimination.
13288
13289 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
13292         native stacktrace using the glibc 'backtrace' function if available.
13293
13294 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
13295
13296         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
13297
13298         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
13299         handle SIGSEGVs received while in native code.
13300
13301         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
13302         code, call mono_handle_native_sigsegv which will abort the runtime
13303         after printing some diagnostics, instead of converting it into a
13304         confusing NullReferenceException.
13305
13306 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13307
13308         * cpu-pentium.md: Remove unused opcodes.
13309
13310 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
13311
13312         * mini-amd64.h (MonoLMF): Add rsp field.
13313
13314         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
13315         the lmf too.
13316
13317 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
13318
13319         * mini-codegen.c (get_register_spilling): Fix some warnings.
13320
13321 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
13322
13323         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
13324         elimination during exception handling. Enable fp elimination by
13325         default.
13326
13327         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
13328         elimination.
13329
13330 2005-10-16  Martin Baulig  <martin@ximian.com>
13331
13332         * mini-exceptions.c
13333         (mono_debugger_run_finally): New public method for the debugger.
13334
13335 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * debug-mini.c (mono_debug_init_method): Fix warning.
13338
13339         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
13340         the 'exname' parameter const to fix some warnings.
13341
13342 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
13343
13344         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
13345         introduced by the previous patch.
13346
13347 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
13348
13349         * basic-float.cs: Add test for precision of float arithmetic.
13350
13351         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
13352         when loading/storing single values from/to memory.
13353
13354         * mini.c (mono_jit_compile_method_with_opt): Create the function
13355         pointers in the correct domain.
13356
13357 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13358
13359         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
13360         introduced by previous patch.
13361         
13362         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
13363         when out_filter_idx is NULL.
13364
13365         * mini-exceptions.c: Don't run filter clauses twice during exception
13366         handling. Fixes #75755.
13367
13368 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13369
13370         * aot.c: Add support for ldflda wrappers.
13371
13372         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
13373         #75902.
13374
13375 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
13376
13377         * mini.c, mini.h: do not consider exception handlers blocks when
13378         setting up interface variables.
13379
13380 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
13381
13382         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
13383
13384 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
13385
13386         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
13387         causes a regression.
13388
13389         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
13390
13391 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
13392
13393         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
13394         of the OP_P definitions.
13395
13396         * TODO: Add a proposal for dealing with the CEE/OP mess.
13397
13398         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
13399         optimizations from the x86 port.
13400
13401         * cpu-amd64.md: Ditto.
13402
13403         * basic.cs basic-long.cs: Add tests.
13404
13405 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
13406
13407         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
13408         Patrik Torstensson's implementation of my exception-handling
13409         optimization idea, when the exception object is not used
13410         (bug #62150).
13411
13412 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
13413
13414         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
13415         of the mul_imm optimizations from the old jit.
13416
13417 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
13418
13419         * mini.c, liveness.c: patch by Patrik Torstensson and
13420         Zoltan Varga to improve performance in methods with
13421         exception clauses.
13422
13423 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * driver.c: Remove 'Globalization' entry from --version.
13426
13427 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
13428
13429         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
13430         there is a profiler interested in JIT events.
13431
13432         * aot.c: Load profile files produced by the AOT profiling module, and
13433         reorder methods based on the profiling info. Add a 'method_order' table
13434         to the AOT file to make mono_aot_find_jit_info work with the reordered
13435         methods.
13436
13437         * mini.h: Bump AOT file version info.
13438
13439 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
13440
13441         * mini-arm.h: work around what looks like a gcc bug when optimizations
13442         are enabled.
13443
13444 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13445
13446         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13447         conditionals.  Use ...
13448         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13449
13450 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13451
13452         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13453         to determine the amount of memory to copy when passing valuetypes.
13454
13455         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13456         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13457
13458 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13459
13460         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13461         information about aot.
13462
13463 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13464
13465         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13466         macros. This will allow a deadlock debugger to easily be plugged
13467         in.
13468
13469 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13470
13471         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13472
13473 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13474
13475         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13476         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13477         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13478         ($(arch_built)) [CROSS_COMPILING]: Error out.
13479
13480 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13481
13482         * aot.c: Add support for the no_special_static flag for classes.
13483
13484 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13485
13486         * Reapply reverted patches.
13487
13488         * *: Revert r50174 as well.
13489
13490         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13491
13492 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13493
13494         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
13495
13496 2005-09-23  Miguel de Icaza  <miguel@novell.com>
13497
13498         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
13499         part of the SIG_HANDLER_SIGNATURE.  
13500
13501 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13502
13503         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
13504         statistics.
13505
13506         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13507         introduced by previous patch.
13508
13509 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13510
13511         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13512         saved registers too.
13513
13514         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13515         upon the information returned by get_call_info ().
13516         
13517         * mini-x86.c (add_float): Fix stack size calculation.
13518         (mono_arch_call_opcode): Rewrite this so it works based up the
13519         information returned by get_call_info ().
13520         (mono_arch_get_this_vret_args): Ditto.
13521
13522 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13523
13524         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13525         in cinfo to determine the registers which need to be used.
13526
13527 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13528
13529         * driver.c (mono_main): Add --server and --desktop flags. 
13530
13531 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13532
13533         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13534         registers as global registers.
13535
13536         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13537         longer needed with the new register allocator.
13538
13539         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13540
13541         * cpu-ia64.md: Remove unused opcodes.
13542         
13543         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13544         
13545 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13546
13547         * cpu-amd64.md: Remove unused opcodes.
13548
13549         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13550         needed with the new register allocator.
13551
13552         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13553         reg-reg moves.
13554
13555 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13556
13557         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13558
13559 2005-09-16  Martin Baulig  <martin@ximian.com>
13560
13561         * exceptions-amd64.c
13562         (throw_exception): Don't call mono_debugger_throw_exception() if
13563         we're a rethrow - see the FIXME in the code.
13564
13565 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13566
13567         * mini.c (mono_init_exceptions): This only works on some architectures.
13568         
13569 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13572         on ia64.
13573
13574         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13575
13576         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13577         now in mini-exceptions.c.
13578
13579 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13580
13581         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13582         now in mini-exceptions.c.
13583
13584 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13587         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13588
13589         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13590         code into mini-exceptions.c. Add some assertions to it.
13591
13592 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13595         (<software@solmersa.com>). Fix as errors on windows.
13596
13597 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13598
13599         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13600         method info into the LMF.
13601
13602 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13603         
13604         * mini-ia64.c: Add proper unwind info for method epilogs.
13605
13606         * exceptions-ia64.c: Add some code to help debugging.
13607         
13608         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13609
13610         * mini-exceptions.c: Fix warning.
13611
13612 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13613
13614         * mini.c: Really fix build.
13615
13616         * mini-x86.c mini-amd64.c: Fix build.
13617
13618 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13619
13620         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13621
13622         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13623         some Interlocked methods as intrinsics.
13624
13625         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13626         for Thread methods as well.
13627
13628         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13629
13630         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13631
13632         * mini-ia64.c mini-x86.c mini-amd64.c 
13633         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13634         OP_MEMORY_BARRIER.
13635         
13636         * mini.c (mono_init_exceptions): Fix build breakage.
13637
13638 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13641         of instructions. Use the new ia64_unw_op macros for emitting unwind
13642         info.
13643
13644         * mini.c (mono_init_exceptions): Initialize exception handling
13645         related trampolines at startup.
13646
13647 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13648
13649         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13650
13651 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13652
13653         * mini.c: Handle type loading errors gracefully during compilation and
13654         throw the appropriate exception.
13655
13656 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13657
13658         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13659         for the mono binary.
13660
13661 2005-09-09  Martin Baulig  <martin@ximian.com>
13662
13663         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13664         the release.
13665
13666 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13667
13668         * mini-arm.h: use emulation for conv.r.un for the release.
13669
13670 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13671
13672         * mini-arm.c, objects.cs: more fixes and tests for them.
13673
13674 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13675
13676         * mini-arm.c: align structures to at least 4 bytes to be able
13677         to keep our current optimized memcpy.
13678
13679 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13680
13681         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13682
13683 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13684
13685         * mini.c: ignore SIGPIPE.
13686
13687 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13688
13689         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13690
13691         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13692
13693 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13694
13695         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13696
13697 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13698
13699         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13700         exception handling support.
13701         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13702         patch by Brian Koropoff <briank@marakicorp.com>).
13703
13704 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13705
13706         * mini.c: revert another 'optimization' which breaks when
13707         items on the eval stack need to be saved at a basic block end
13708         (bug #75940).
13709
13710 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13711
13712         * jit-icalls.c: for arrays, ensure we always provide
13713         lower bounds.
13714
13715 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13716
13717         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13718         
13719         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13720
13721 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13722
13723         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13724         arguments in their original register.
13725
13726 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13727
13728         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13729         memset/memcpy.
13730
13731         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13732         when ssapre is enabled.
13733
13734         * inssel-long.brg: Fix bug in previous patch.
13735
13736         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13737         multiplication by a constant.
13738
13739 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13740
13741         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13742         icc.
13743
13744         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13745         saving registers.
13746
13747 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13748
13749         * inssel-arm.brg: apply changes tested by Brian Koropoff
13750         <briank@marakicorp.com>.
13751
13752 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13753
13754         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13755         
13756 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13757
13758         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13759         to the same register if dreg is just a base register.
13760         (print_ins): Improve printing of membase opcodes.
13761
13762         * inssel-x86.brg: Add optimized ldind(reg) rules.
13763
13764         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13765
13766 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13767
13768         * mini.c: when running under valgrind, set the stack bottom for
13769         the GC at the actual approximate stack for the app (fixes running
13770         mono with valgrind).
13771
13772 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13773
13774         * mini.c: do no break at the first valuetype to init found
13775         (fixes bug #75791).
13776
13777 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13778
13779         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13780
13781 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13782
13783         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13784
13785 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13786
13787         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13788
13789 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13790
13791         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13792
13793         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13794         code.
13795
13796         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13797         code.
13798
13799         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13800         methods.
13801
13802 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13803
13804         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13805
13806 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13807
13808         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13809         in the tail recursion optimization.
13810
13811         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13812         debug info into the assembly file.
13813
13814         * iltests.il: Add test for filter regions.
13815
13816         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13817         initial stack of filter regions. Fixes #75755.
13818
13819 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13820
13821         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13822         stack requirements.
13823
13824 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13825
13826         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13827         the check for an already compiled method on non-ia64 platforms.
13828         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13829         proper domain.
13830
13831         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13832
13833         * inssel-x86.brg: Add some optimized call rules.
13834
13835 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13836
13837         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13838         method here.
13839
13840         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13841         mono_arch_patch_delegate_trampoline.
13842
13843         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13844
13845         * mini-trampolines.c: Fix build.
13846
13847         * mini-amd64.h: Add delegate trampolines.
13848
13849         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13850
13851         * inssel-amd64.brg: Add optimized call rules.
13852         
13853         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13854
13855         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13856
13857 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13858
13859         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13860         change.
13861
13862         * mini-ia64.c: Remove LMF fixmes.
13863
13864         * mini-ia64.h: Remove most fields from LMF.
13865
13866         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13867
13868         * mini-trampolines.c: Add support for IA64 function descriptors.
13869
13870         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13871         for IA64 function descriptors.
13872
13873 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13874
13875         * tramp-arm.c: patch the vtable for virtual calls. Added
13876         support code to register/unregister the LMF.
13877         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13878         more LMF work.
13879
13880 2005-08-19  Dick Porter  <dick@ximian.com>
13881
13882         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13883         bit value if needed.
13884
13885 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13886
13887         * mini.c (mini_get_method): Move handling of wrapper data here.
13888
13889         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13890
13891         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13892         virtual.
13893
13894         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13895         bblock->code does not remain empty.
13896
13897 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13898
13899         * arrays.cs: Add regression test for #75832.
13900
13901         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13902         rules. Fixes #75832.
13903
13904         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13905         instruction scheduling.
13906
13907 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13908
13909         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13910
13911 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13912
13913         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13914
13915         * mini-codegen.c: Fix VC build.
13916
13917         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13918
13919 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13920
13921         * mini.h: fix signature for mono_register_opcode_emulation.
13922
13923 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13924
13925         * mini.c: Get rid of most of the helper_sig_... constants using
13926         mono_create_icall_signature ().
13927
13928 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13929
13930         * jit-icalls.c (helper_ldstr): New helper function.
13931
13932         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13933
13934         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13935         throw, load the string using a helper call instead of creating a string object.
13936
13937         * aot.c: Update after LDSTR changes.
13938
13939         * mini.h: Bump AOT file version.
13940         
13941         * aot.c: Save class size info into the AOT file. Print more statistics during
13942         compilation.
13943
13944         * mini.h: Bump AOT file version.
13945
13946         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13947         ordering of disasm cases. Fixes #74957.
13948
13949 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13950
13951         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13952         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13953         the generic code needed for the ARM port.
13954
13955 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13956
13957         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13958         inssel-arm.brg: more ARM features and fixes.
13959
13960 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13961
13962         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13963         ARM port work in progress.
13964
13965 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13966
13967         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13968
13969         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13970
13971         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13972
13973         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13974
13975         * *-ia64.*: Ongoing IA64 work.
13976         
13977         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13978
13979 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13980
13981         * TODO: Remove out-of-data todo stuff.
13982
13983         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13984         dead code.
13985
13986         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13987
13988         * mini.h: Bump corlib version.
13989
13990 2005-07-27  Martin Baulig  <martin@ximian.com>
13991
13992         * mini-codegen.c
13993         (create_copy_ins): Added `const unsigned char *ip' argument; set
13994         `copy->cil_code' from it.
13995
13996 2005-07-27  Martin Baulig  <martin@ximian.com>
13997
13998         * mini-exceptions.c (mono_handle_exception): Don't call
13999         mono_debugger_handle_exception() for filters.
14000
14001 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14002
14003         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14004         as well.
14005
14006 2005-07-26  Martin Baulig  <martin@ximian.com>
14007
14008         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14009
14010         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14011         helper_compile_generic_method() if the method is actually virtual
14012         and non-final.
14013
14014 2005-07-26  Martin Baulig  <martin@ximian.com>
14015
14016         * mini.c
14017         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14018         public; this is now accessed directly by the debugger.
14019         (mono_generic_trampoline_code): Removed.
14020
14021         * debug-mini.c
14022         (mono_debug_init_method): Also add interncalls and wrappers.
14023
14024 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14025
14026         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14027
14028 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14029
14030         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14031
14032 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14033
14034         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14035
14036 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14037
14038         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14039         getting TLS offsets on AMD64 too.
14040
14041 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14042
14043         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14044
14045 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14046
14047         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14048         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14049
14050 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14051
14052         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14053
14054         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14055         to mini.c.
14056
14057         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14058         mono_sparc_is_virtual_call ().
14059         
14060         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14061
14062         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14063         trampoline parameters.
14064
14065         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14066         
14067         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14068         to mono_arch_get_vcall_slot_addr.
14069
14070         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14071         trampoline code.
14072
14073         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14074
14075 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14076
14077         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14078
14079 2005-07-19  Martin Baulig  <martin@ximian.com>
14080
14081         * exceptions-amd64.c (throw_exception): Call
14082         mono_debugger_throw_exception() here like we're doing it on i386.
14083
14084 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14085
14086         * mini-ia64.c: Add optimized TLS access support.
14087
14088 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14089
14090         * mini-exceptions.c: Ongoing IA64 work.
14091
14092         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14093
14094         * mini.c: Use the default optimization set when embedding. Fixes
14095         #75194.
14096
14097 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14098
14099         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14100         of trampolines to a separate file.
14101
14102         * mini-trampolines.c: New file.
14103
14104         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14105         separate file.
14106         
14107         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14108         amd64/ia64 code.
14109
14110         * mini-codegen.c: Fix cygwin build.
14111
14112 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14113
14114         * mini.c: Add some minor changes needed by the IA64 port.
14115
14116         * *-ia64.*: Ongoing IA64 work.
14117
14118 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14119
14120         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14121         trampolines into arch-independent and arch-dependent parts.
14122
14123         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14124
14125 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14126
14127         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14128
14129         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14130         the xp-regalloc-branch for amd64.
14131
14132         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14133         xp-regalloc-branch for x86.
14134
14135 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14136
14137         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14138
14139 2005-07-06  Martin Baulig  <martin@ximian.com>
14140
14141         * mini.c
14142         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14143         (mono_jit_runtime_invoke): Likewise.
14144
14145 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14146
14147         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14148         on x86 too.
14149         
14150         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14151         without loading their metadata. Reorganize the file format so exception handling+
14152         debug info is kept separate from normal method info. Create MonoJitInfo 
14153         structures for methods lazily.
14154
14155         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14156         loading metadata.
14157         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14158
14159         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14160
14161         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14162         in AOT code.
14163
14164         * mini.h: Bump AOT file version.
14165
14166 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14167
14168         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14169
14170 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14171
14172         * Makefile.am (check-local): Call semdel-wrapper.
14173
14174 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
14175
14176         * mini-x86.c: Revert the last change as it seems to break the build..
14177
14178 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14179
14180         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14181         
14182         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
14183
14184 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
14185
14186         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
14187         outside of the macro, so strange stuff doesn't happen with gcc4
14188         (NEW_AOTCONST_TOKEN): Likewise.
14189
14190 2005-06-28  Martin Baulig  <martin@ximian.com>
14191
14192         * mini.c (mini_class_is_system_array): New static method; use this
14193         instead of `klass->parent == mono_defaults.array_class' everywhere
14194         since this also works for the new generic array class.
14195
14196 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14197
14198         * inssel.brg: Remove warnings.
14199
14200 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
14201
14202         * mini-ia64.c: Ongoing IA64 work.
14203
14204         * basic-float.cs: Add float->i1 conversion test.
14205
14206         * iltests.il: Add conv.u4 test.
14207
14208 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
14209
14210         * inssel-long.brg: Fix bug caused by last change.
14211
14212 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
14213
14214         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
14215         BSDs.  Allows the x86 JIT to work on OSX86
14216
14217 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
14218
14219         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
14220         u4->i8 conversion.
14221
14222         * mini-ia64.c: Ongoing IA64 work.
14223
14224 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14225
14226         * mini-ia64.c: Ongoing IA64 work.
14227
14228         * driver.c: Clean up jit_code_hash as well when using --regression.
14229
14230         * inssel-long.brg: Fix long->i4/u4 conversion rules.
14231
14232         * basic-long.cs: Add tests for long->u4 conversion.
14233
14234 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
14235
14236         * mini.c: Take mono_get_domainvar out of macros. This makes sure
14237         that we do not depend on undefined C behavior: the order stuff
14238         gets evaluated within an expression. Fixes mono when compiled on
14239         GCC 4.
14240
14241 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
14242
14243         * *-ia64.*: Ongoing IA64 work.
14244
14245         * aot.c: Lower memory usage while loading AOT methods.
14246
14247         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
14248
14249         * mini.h: Bump AOT file format version.
14250
14251 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
14252
14253         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
14254
14255 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
14256
14257         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
14258         not on callee assembly). Fixed some comments.
14259
14260 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
14261
14262         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
14263         it gets proper disassembly.
14264         (emit_method_info): Remove some dead code.
14265
14266         * mini.c (mini_method_compile): Allways allocate the GOT var in
14267         mono_method_to_ir for emulating opcodes.
14268
14269 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
14270
14271         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
14272         before freeing the code memory. Fixes #74990.
14273
14274         * objects.cs: Add regression test for #74992.
14275
14276         * liveness.c: Extend live ranges of arguments to the beginning of the
14277         method. Fixes #74992.
14278
14279         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
14280         so it points into the faulting instruction.
14281
14282 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
14283
14284         * jit-icalls.c (mono_imul_ovf): Add exception handling.
14285
14286         * *-ia64.*: Ongoing IA64 work.
14287
14288         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
14289
14290 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
14291
14292         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
14293
14294         * *-ia64.*: Ongoing IA64 work.
14295
14296 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
14297
14298         * basic-long.cs: Add tests for add/sub.ovf.
14299
14300         * basic.cs: Add tests for sub.ovf.
14301
14302         * *-ia64.*: Ongoing IA64 work.
14303
14304 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
14305
14306         * *-ia64.*: Ongoing IA64 work.
14307
14308         * basic.cs: Add conv.ovf.i4.un test.
14309
14310 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
14311
14312         * mini.c: (remove_block_if_useless) Fixed bug 75061.
14313         
14314 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14315
14316         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
14317
14318 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14319
14320         * *-ia64.*: Ongoing IA64 work.
14321
14322 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14323
14324         * trace.[ch]:
14325         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
14326
14327 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
14328
14329         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
14330
14331 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
14332
14333         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
14334
14335         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
14336         of a call is callable by a near call.
14337
14338 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
14339
14340         * mini-ia64.c: Ongoing IA64 work.
14341
14342 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
14343
14344         * genmdesc.c: Make the generated array non-static.
14345
14346         * inssel-long.brg: Fix LSHR_IMM rule.
14347
14348         * *-ia64.*: Ongoing IA64 work.
14349
14350         * *-ia64.*: Ongoing IA64 work.
14351
14352 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14353
14354         * *-ia64.*: Ongoing IA64 work.
14355
14356         * *-ia64.*: Ongoing IA64 work.
14357         
14358         * mini-ia64.c: Ongoing IA64 work.
14359
14360         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
14361
14362 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14363
14364         * objects.cs basic-calls.cs: Move some tests to objects.cs.
14365         
14366         * objects.cs basic-long.cs: Move some tests to objects.cs.
14367
14368 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
14369
14370         * *-ia64.*: Ongoing IA64 work.
14371
14372         * iltests.il: Add a new test.
14373
14374         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
14375         newobj. Fixes #75042.
14376
14377 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
14378
14379         * *-ia64.*: Ongoing IA64 work.
14380         
14381         * *-ia64.*: Ongoing IA64 work.
14382         
14383         * *-ia64.*: Ongoing IA64 work.
14384
14385         * basic.cs objects.cs: Move tests accessing static variables as well.
14386
14387         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
14388
14389 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
14390
14391         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
14392
14393         * driver.c: Always print failed tests.
14394
14395         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
14396         frame pointer.
14397
14398         * *ia64*: Ongoing IA64 work.
14399
14400 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
14401
14402         * basic.cs: Add tests for add.ovf. Fix warnings.
14403
14404 2005-05-18  Miguel de Icaza  <miguel@novell.com>
14405
14406         * driver.c (mono_main): Avoid crash if no argument is passed to
14407         --break;  Do not use g_error, but f_printf.   And fix all other
14408         ocurrences of the same crash.
14409
14410 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
14411
14412         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
14413         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
14414         Fixes #74742.
14415
14416 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
14417
14418         * *-ia64.*: Add beginnings of IA64 backend.
14419
14420         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
14421
14422 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
14423
14424         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
14425         Fixes #74925.
14426
14427         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
14428
14429         * mini-amd64.c: Fix a warning.
14430
14431 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
14432
14433         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
14434         in float_neg. Fixes #74897.
14435
14436         * mini-amd64.c (emit_call): Fix another near call bug.
14437
14438 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
14439
14440         * declsec.c: Keep the appdomain information in the structure. Added a 
14441         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14442         value gets overwritten).
14443         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14444         an MonoAppDomain member to MonoSecurityFrame.
14445         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14446         used in the stack walk. Now use a MonoArray which grow (double) when
14447         it gets full.
14448
14449 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14450
14451         * mini.c: Re-enabled runtime cleanup, since running threads should
14452         now properly stop when exiting.
14453
14454 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14455
14456         * mini-codegen.c: New file contaning the arch-independent local
14457         register allocator. Not used by any architectures yet.
14458
14459         * mini.h linear-scan.c: Merge some changes from the 
14460         mini-xp-local-regalloc branch.
14461
14462 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14463
14464         * mini-amd64.c (emit_call): Fix calls to native functions when the
14465         runtime is compiled as a shared library. Fixes #74756.
14466
14467         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14468         on a literal field. Fixes #74751.
14469
14470 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14471
14472         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14473
14474 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14475
14476         * objects.cs: Add missing null casting test.
14477
14478 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14479
14480         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14481         in wrapper methods. Also rename 'address' variable to 'offset'.
14482
14483 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14484
14485         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
14486         warnings.
14487         
14488         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14489
14490         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14491         work on windows.
14492
14493 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14494
14495         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
14496
14497 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14498
14499         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
14500         just the last bytes.
14501
14502 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14503
14504         * aot.c (mono_compile_assembly): Fix warning.
14505
14506         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14507         by the _MSC_VER stuff.
14508
14509 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14510
14511         * inssel-long.brg: Fix #74588.
14512
14513         * cpu-amd64.md: Fix #74591.
14514
14515         * iltests.il: Add new regression tests.
14516
14517 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14518
14519         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14520         valuetype.
14521
14522 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14523
14524         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14525
14526         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14527         from Bill Middleton <flashdict@gmail.com>.
14528
14529 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14530
14531         * arrays.cs: Add new regression test. Fix warnings.
14532
14533 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14534
14535         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14536         and leakage in CKFINITE.
14537
14538         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14539         this to a null op since it is called on amd64 too.
14540
14541         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14542
14543         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14544         body since this is not used on amd64.
14545         
14546         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14547
14548         * mini-amd64.c: Remove obsolete fixmes.
14549
14550         * mini.c (print_method_from_ip): Fix debugging support.
14551
14552 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14553
14554         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14555         so that expressions that don't give much gain are not reduced.
14556         * ssapre.h: Likewise.
14557
14558 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14559
14560         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14561
14562         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14563
14564         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14565
14566 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14567
14568         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14569
14570         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14571
14572 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14573
14574         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14575         stack touching.
14576
14577         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14578
14579         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14580
14581         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14582
14583         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14584         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14585
14586         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14587
14588         * mini-x86.c: Fix up stack overflow handling.   
14589
14590         * exceptions.cs: Add new regression test.
14591
14592 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14593
14594         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14595         mono_jit_thread_attach.
14596
14597         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14598
14599 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14600
14601         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14602         avoid calling constructors using callvirt.
14603
14604         * inssel.brg: Fix #74073.
14605
14606 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14607
14608         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14609         compilation with non-GCC compilers.
14610         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14611         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14612
14613 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14614
14615         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14616         klass->interface_offsets (will likely fix bug#74073).
14617
14618 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14619
14620         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14621
14622 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14623
14624         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14625         to amd64_div_reg_size ().
14626         
14627         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14628
14629 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14630
14631         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14632
14633 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14634
14635         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14636
14637 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14638
14639         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14640         
14641         * mini.c (mono_precompile_assembly): Load and precompile referenced
14642         assemblies as well. Fixes #74015.
14643
14644 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14645
14646         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14647
14648 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14649
14650         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14651         a lot of checks and (anyway) permissions cannot work until corlib is 
14652         loaded.
14653
14654 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14655
14656         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14657
14658 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14659
14660         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14661         calls (fixes bug#72824).
14662
14663 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14664
14665         * mini.c: fix tail recursion elimination (see test in bug#73936).
14666
14667 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14668
14669         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14670         some fp functions in sse2 mode.
14671
14672 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14673
14674         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14675
14676 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14677
14678         * mini.h mini.c: Add mono_get_jit_tls_key ().
14679
14680         * mini-x86.c: Enable fast TLS support on windows.
14681
14682 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14683
14684         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14685         * mini.c: Check for p/invoke method when generating code. If a
14686         p/invoke method, or it's class, isn't decorated with [Suppress
14687         UnmanagedCodeSecurity] then generate code to call System.Security.
14688         UnmanagedDemand (only if the security manager is active).
14689
14690 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14691
14692         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14693         last change as it seems to cause strange crashes.
14694         
14695 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14696
14697         * *.c: handle unsafe function pointers where needed.
14698
14699 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14700
14701         * mini.c (mono_jit_free_method): Remove the fixme too.
14702
14703 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14704
14705         * mini.c: As discussed, make the code actually free the delegate
14706         thunk now, to enable the debugging of delegate problems, use
14707         MONO_DEBUG=1 when running Mono. 
14708
14709         This takes also care of parts of the leaks as seen by Joe.
14710
14711 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14712
14713         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14714         thread_tls_offset calculation.
14715
14716 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14717
14718         * declsec.c: Reworked linkdemand checks for icall. The previous code
14719         was using the declaration code (untrusted) and didn't work as expected
14720         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14721         specific case.
14722
14723 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14724
14725         * iltests.il: Add new localloc test.
14726
14727         * mini-amd64.c: Handle large stack allocations the same way as on
14728         windows if stack overflow handling is working.
14729         
14730         * mini-amd64.c: Allocate the signal stack using mmap.
14731
14732         * mini.c (sigsegv_signal_handler): Fix reading of context.
14733
14734         * mini-exceptions.c: Fix up stack overflow handling.
14735
14736         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14737
14738         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14739
14740         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14741
14742         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14743
14744         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14745         tramp_init functions as they are no longer needed.
14746
14747 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14748
14749         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14750         
14751         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14752
14753         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14754         
14755         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14756         support that now.
14757
14758         * mini-ops.h: Add OP_LMUL_IMM.
14759
14760         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14761         long mul/div opcodes as intrinsic.
14762
14763         * mini-amd64.c (emit_call): Handle the case when the callee might be
14764         an AOT method.
14765
14766 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14767
14768         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14769         extra safe.
14770         
14771         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14772
14773         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14774
14775 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14776
14777         * mini.c (mono_codegen): Don't leak here, to help people running
14778         monogrind.
14779
14780 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14781
14782         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14783         conversions in sse2 mode.
14784
14785         * basic-float.cs: Add regression test.
14786         
14787         * mini-amd64.c: Reenable sse2.
14788
14789 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14790
14791         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14792
14793 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14794
14795         * driver.c: Copyright text should include 2005.
14796         
14797 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14798
14799         * cpu-amd64.md (load_membase): Fix more max lengths.
14800
14801 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14802
14803         * cpu-amd64.md (load_membase): Fix max length.
14804
14805         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14806
14807         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14808
14809         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14810         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14811
14812         * basic-float.cs: Add rounding regression test.
14813
14814         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14815
14816 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14817
14818         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14819         structures in registers for pinvoke wrappers.
14820
14821 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14822
14823         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14824
14825 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14826
14827         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14828         wrapper to mono_jit_thread_attach.
14829
14830         * mini.c (mini_jit_thread_attach): New jit icall.
14831
14832         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14833         native->managed wrappers.
14834
14835         * exceptions.cs: Add new regression test.
14836
14837         * mini.c (optimize_branches): Check regions in the cbranch to throw
14838         block case as well. Fixes #73242.
14839
14840 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14841
14842         * mini.c: thread safety fixes.
14843
14844 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14845
14846         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14847         patching stuff, since delegates use jump trampolines so there is
14848         no caller.
14849
14850         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14851         jump trampolines.
14852         
14853         * tramp-amd64.c: Fix build.
14854
14855         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14856         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14857
14858         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14859         Rename this to mono_arch....
14860         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14861
14862         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14863
14864         * mini-amd64.c (emit_call): If both the caller and the callee is
14865         guaranteed to have 32 bit addresses, emit a normal call.
14866
14867         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14868
14869         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14870         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14871         method_ptr inside delegates.
14872
14873 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14874
14875         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14876         invalidated. Fixes #73001.
14877
14878         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14879
14880         * mini-x86.c: Only use stdcall for pinvokes on windows.
14881
14882 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14883
14884         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14885         * mini-x86.c: remove unreliable __thread var offset detection,
14886         use the correct accessors and enable by default.
14887
14888 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14889
14890         * mini.c (mono_jit_free_method): Fix memory leak.
14891
14892 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14893
14894         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14895
14896 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14897
14898         * cpu-amd64.md: Fix lengths of atomic opcodes.
14899
14900 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14901
14902         * driver.c: try to not imply using ICU is any good.
14903
14904 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14905
14906         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14907         functions as inline ops.
14908
14909         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14910         some Interlocked functions as inline ops.
14911
14912         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14913
14914         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14915
14916         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14917
14918         * mini.c: Add support for OP_NOT_TAKEN.
14919
14920         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14921         structures in registers for pinvoke wrappers.
14922
14923         * mini-amd64.c: Fix warnings.
14924
14925 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14926
14927         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14928
14929         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14930
14931         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14932         address instead of loading the address from it.
14933
14934         * mini-x86.c: Add support for returning small structs in registers
14935         on Win32. Fixes part of #70864.
14936         
14937 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14938
14939         * trace.c (get_token): Improve error checking.
14940
14941 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14942
14943         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14944
14945 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14946  
14947         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14948         it can be reused for MonoClass.
14949         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14950         _LINKDEMAND.
14951
14952 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14953
14954         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14955         instead of a MonoReflectionMethod. The method information wasn't used
14956         when displaying SecurityException details (but will be now).
14957
14958 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14959
14960         * Makefile.am : windows build fix.
14961
14962 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14963
14964         * iltests.il: Add new regression test.
14965
14966         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14967         #72522.
14968
14969 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14970  
14971         * mini.c: Moved linkdemand check into helper function check_linkdemand
14972         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14973         LDFTN, LDVIRTFTN).
14974
14975 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14976
14977         * declsec.c: Added statistics counter for different kinds of 
14978         LinkDemands.
14979         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14980         (and commented) declaration.
14981         * mini.c: Added statistics counter for security Demand code 
14982         generation. Added display of security statistics.
14983
14984 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14985
14986         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14987         Fix compilation errors under gcc-2.95.
14988
14989 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14990
14991         * mini.c, driver.c: Use the new jit trampoline hashtable
14992
14993 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14994
14995         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14996
14997 2005-02-11  Martin Baulig  <martin@ximian.com>
14998
14999         * debug-mini.c (mono_debug_close_method): Free the line number array.
15000
15001 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15002
15003         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15004         icalls.
15005
15006         * mini.h: Bump AOT file format version. 
15007
15008 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15009
15010         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15011         APTC and P/Invoke.
15012         * declsec.h: Added macros to get/set lazyly initialized security 
15013         informations about assemblies. Added new enum for different type of
15014         possible LinkDemand violation. Added function to check LinkDemands.
15015         * mini.h: Added a field to MonoCompile to hold any security violation
15016         detected when JITting a method (so it can be thrown later).
15017         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15018         and CEE_CALLVIRT. Added code to throw exception at the end of
15019         mini_method_compile (note: the exception is unhandled right now).
15020
15021 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15022
15023         * mini.c, jit-icalls.c: use the managed implementation of
15024         memset for initobj and memset, to avoid managed <-> unmanaged
15025         transitions.
15026
15027 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15028
15029         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15030         optimization if it would need a GOT var.
15031
15032         * basic.cs: Add tests for constant propagation and switch statements.
15033
15034         * ssa.c: Fix out-of-range constant propagation and switch statements.
15035
15036 2005-02-09    <vargaz@freemail.hu>
15037
15038         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15039
15040 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15041
15042         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15043
15044 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15045
15046         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15047
15048 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15049
15050         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15051         arithmetic operations.
15052
15053 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15054
15055         * mini-ppc.c: add a workaround for broken user code that
15056         DllImports vararg functions with non-vararg signatures.
15057
15058 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15059
15060         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15061         meaningfull error message for assemblies written in Managed C++.
15062
15063         * tramp-amd64.c mini-amd64.h: Add support for 
15064         create_trampoline_from_token ().
15065
15066         * aot.c mini-x86.c abcremoval.c: Applied patch from
15067         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15068
15069 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15070
15071         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15072         which takes a MonoImage/token as parameter instead of a MonoMethod.
15073
15074         * aot.c: Use the new trampoline for initializing vtables.
15075
15076         * aot.c: Add support for ldfld/stfld_remote wrappers.
15077
15078         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15079         rules for compare <MEM>, IMM.
15080
15081         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15082
15083         * aot.c: Handle inherited finalizers correctly.
15084
15085 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15086
15087         * inssel.brg (stmt): Add a missing _setup_... ().
15088
15089         * aot.c: Save some parts of the class state to the AOT file and use it
15090         to recompute that state when a class is initialized.
15091
15092         * mini.c: Install AOT hooks into the runtime.
15093
15094         * mini.h: Bump AOT file format version.
15095         
15096         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15097         Fixes #72148.
15098
15099         * iltests.il: Add new test.
15100
15101 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15102
15103         * mini.c: fix typo.
15104
15105 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15106
15107         * mini.c: setup the statistical profiler in the thread attach
15108         callback to cope with the new single thread code.
15109
15110 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15111
15112         * mini-ppc.c: ensure we have enough room for the profiler
15113         calls (fixed bug#72084).
15114
15115 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15116
15117         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15118         it.
15119
15120 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15121
15122         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15123
15124 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15125
15126         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15127         to succesfully execute parrotbench).
15128         * ssapre.h: Likewise.
15129
15130 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15131
15132         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15133         variable for stores to method arguments (fixes a SSAPRE issue).
15134
15135 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15136
15137         * mini.c: handle value types in dup, fixes gen-112.cs.
15138
15139 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15140
15141         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15142         sequence for calls in dynamic methods to avoid thunks.
15143
15144 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15145
15146         * mini.c: correctly remove dynamic methods from the hashtable.
15147
15148 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15149
15150         * driver.c: Disabled SSAPRE until fix the bug that appears
15151         in IronPython's parrotbench.
15152
15153 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15154
15155         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15156
15157         * mini.c (mono_method_to_ir): Revert the previous change.
15158         
15159         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15160         when AOT compiling.
15161
15162         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15163         mono_jit_info_table_find () etc. when running under valgrind.
15164
15165         * inssel.brg: Fix warnings.
15166
15167         * mini-exceptions.c: Fix warnings.
15168
15169 2005-01-31  Martin Baulig  <martin@ximian.com>
15170
15171         * driver.c (compile_all_methods_thread_main): Don't try to compile
15172         generic methods or anything which has type parameters.
15173
15174 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15175
15176         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
15177
15178         * TestDriver.cs: Add --verbose flags.
15179
15180         * graph.c ssa.c: Fix 64 bit warnings.
15181         
15182         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
15183         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
15184         Fix 64 bit warnings.
15185
15186         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
15187         variable not spotted by gcc.
15188         
15189         * mini-amd64.c inssel-amd64.brg: Applied patch from  
15190         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
15191         X86_COMPARE_MEMBASE opcodes.
15192
15193         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
15194
15195 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15196
15197         * *: MonoMethod->signature might be NULL now. You *MUST* use
15198         mono_method_signature.
15199
15200 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15201
15202         * driver.c (compile_all_methods_thread_main): Compile the methods
15203         without invoking cctors.
15204
15205 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15206
15207         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
15208         * basic-calls.cs: test for the above.
15209
15210 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15211
15212         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
15213         MonoJitInfo changes.
15214
15215 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
15216
15217         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
15218         eagerly if it contains dynamic methods.
15219         
15220         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
15221
15222         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
15223         trace, it is now computed by an icall from trace_ips.
15224         
15225         * mini-exceptions.c: Fix a warning.
15226
15227 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15228
15229         * mini-exceptions.c: don't bother getting stack trace info if
15230         it's not going to be used.
15231
15232 2005-01-27  Raja R Harinath  <rharinath@novell.com>
15233
15234         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
15235         ssapre-mini-ops.h.
15236
15237 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
15238
15239         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
15240
15241         * aot.c: Avoid calling mono_method_get_header () if not needed.
15242
15243         * mini.h: Bump AOT file format version.
15244         
15245         * mini.c (mono_emit_native_call): Allocate a GOT var here.
15246
15247         * mini.c (mono_print_tree): Print more info for calls.
15248
15249 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15250
15251         * declsec.h: Remove warning by adding missing include for marshal.h
15252
15253 2005-01-26  Martin Baulig  <martin@ximian.com>
15254
15255         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
15256         `ip' twice.
15257
15258 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
15259
15260         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
15261         flags.
15262
15263         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
15264
15265         * aot.c (mono_compile_assembly): Fix a warning.
15266
15267 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
15268
15269         * declsec.c: Look for security attributes on the original MonoMethod 
15270         (and not the wrapped one). This fix permissions on icalls.
15271
15272 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15273
15274         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15275
15276         * mini.c (mono_allocate_stack_slots): Add a fixme.
15277
15278         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15279
15280 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15281
15282         * inssel.brg: optimize casts of sealed types (more
15283         optimizations waiting for fixes in remoting).
15284
15285 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15286
15287         * inssel.brg (stmt): Add another dummy rule.
15288
15289         * driver.c: Fix warnings.
15290
15291         * driver.c (mono_main): If running under valgrind, instruct glib to use
15292         the system allocation functions so valgrind can track the memory
15293         allocated by the g_... functions.
15294
15295         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
15296
15297         * mini-ops.h: Add OP_DUMMY_STORE opcode.
15298
15299         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
15300
15301         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
15302         variables in try regions.
15303
15304         * mini.c (mini_method_compile): Don't disable optimizations on large
15305         methods when AOT compiling.
15306
15307         * mini.c (mono_allocate_stack_slots): New arch independent method to 
15308         allocate stack slots. Not yet used.
15309
15310 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15311
15312         * debug-mini.c (mono_debug_close_method): Plug some leaks.
15313
15314 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
15315
15316         * mini-ppc.c: make the branch info relative as the code
15317         buffer can be reallocated.
15318
15319 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15320
15321         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
15322         * driver.c: Removed the AOT/security restriction. Now initialize the
15323         security manager (in metadata) if --security is used.
15324         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
15325         rather than the pointer to declarative security, when AOT is used.
15326
15327 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
15328
15329         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
15330         basic blocks, reduced intrinsic exception throwing code size.
15331
15332 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
15333
15334         * driver.c (mini_usage): Reorder the usage screen.
15335
15336 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
15337
15338         * mini.c (mono_resolve_patch_target): Fix warning.
15339
15340 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
15341
15342         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
15343         previous patch.
15344
15345         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15346
15347         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
15348         breaks the amd64 build.
15349
15350         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
15351         register allocation. Fixes #71454.
15352
15353         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15354
15355         * arrays.cs: Add new regression test.   
15356
15357 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15358
15359         * ssapre.c: Turned usage of snprintf to GString.
15360         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
15361         (I left it on by mistake in my previous commit).
15362
15363 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
15364
15365         * mini.c, cfold.c, basic-calls.cs: preserve side effects
15366         on cond branch optimization (fixes bug# 71515).
15367
15368 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15369
15370         * abcremoval.c: Fixed bug 71062.
15371         * abcremoval.h: Likewise.
15372
15373 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15374
15375         * mini.c: Added a new functionality to optimize_branches, the removal
15376         of useless basic blocks, and fixed some problem in the removal of
15377         critical edges; some utility functions added for both purposes.
15378         * ssapre.c: Added complex expression support, and fixed bug 70637.
15379         * ssapre.h: Likewise.
15380         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
15381         enabled in SSAPRE.
15382         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
15383         * driver.c: Re-enabled SSAPRE.
15384
15385 2005-01-19  Martin Baulig  <martin@ximian.com>
15386
15387         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
15388         the result of mono_get_method_constrained().
15389
15390 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
15391
15392         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
15393         manager.
15394
15395 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
15396
15397         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
15398         be detected.  Fixes #59296.
15399
15400 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15401
15402         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
15403         which can happen. Fixes #71361.
15404
15405 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15406
15407         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
15408         manager.
15409
15410 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15411
15412         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
15413         appdomain-unload.exe to fail.
15414         
15415         * mini.c: Fix some memory leaks.
15416
15417 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
15418
15419         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
15420         Fixed bug and sped up some codepaths.
15421
15422 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15423
15424         * mini.c: Fix some memory leaks.
15425
15426         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
15427         conversion.
15428
15429         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
15430
15431         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
15432         #71320.
15433
15434         * iltests.il: Add regression test for #71320.
15435
15436 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15437
15438         * mini.c (mono_codegen): Fix installation of profiler hooks.
15439
15440         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15441
15442 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15443
15444         * mini.h, mini.c, cfold.c: optimize access to enum
15445         readonly fields, too. Eval conditional branches if possible
15446         to perform unreachable code removal in more cases.
15447
15448 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15449
15450         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15451
15452         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15453         code manager.
15454
15455         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15456         WinXP DEP. Fixes #71244.
15457
15458 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15459
15460         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15461
15462 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15463
15464         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15465
15466 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15467
15468         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15469         changes.
15470
15471         * mini.h: Bump AOT version.
15472
15473         * mini.h (MonoCompile): Change exvar to a hash table.
15474
15475         * mini.c: Allocate a separate exvar for each handler block.
15476
15477         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15478
15479         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15480         ex var with the pending exception and only throw if the two are equal.
15481         Fixes #68552.
15482         
15483         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15484
15485         * mini-x86.c: Fix warnings.
15486
15487         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
15488         used by all the ports now.
15489
15490         * aot.c: Add write-symbols and save-temps options.
15491
15492 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15493
15494         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
15495
15496 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
15497
15498         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
15499         operations.
15500
15501         * tramp-s390.c: Check vtable slot belongs to the domain.
15502
15503         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
15504         as per other platforms.
15505
15506         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15507
15508 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15509
15510         * driver.c: we don't run the Main() code in a subthread anymore.
15511
15512 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15513
15514         * mini.c: added experimental rtc support in the statistical
15515         profiler: if the user has the permission, more accurate statistics
15516         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15517         The MONO_RTC value must be restricted to what the linux rtc allows:
15518         power of two from 64 to 8192 Hz.
15519
15520 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15521
15522         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15523
15524 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15525
15526         * mini-ppc.c: better icache flush for smp.
15527
15528 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15529
15530         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15531
15532         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15533         amd64 port, not yet used.
15534
15535 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15536
15537         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15538         a struct type.
15539
15540 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15541
15542         * driver.c: Added --security option to activate the security manager.
15543         Right now this will allow code generation for declarative demands and
15544         is disabled when AOT is specified.
15545         * mini.c: Add code generation for declarative security demands.
15546         * mini.h: Add mono_use_security_manager as an extern gboolean.
15547
15548 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15549
15550         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15551         emitting more dense assembly code.
15552
15553         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15554         exception throwing stuff.
15555
15556 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15557
15558         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15559         dead code.
15560
15561         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15562         left in by mistake.
15563
15564         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15565         fixed.
15566
15567         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15568
15569         * tramp-*.c: Only patch vtable slots if the object is in the current
15570         domain. Fixes appdomain-unload.exe.
15571
15572         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15573         
15574         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15575         x86 branch.
15576
15577 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15578
15579         * mini.c (reverse_branch_op): New helper function.
15580
15581         * mini.c (optimize_branches): Run the new optimization only on 
15582         platforms which support it. Also reverse all kinds of branches.
15583
15584         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15585
15586         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15587         a throw statement.
15588
15589         * mini.c (optimize_branches): Reverse not-equals branches if the false
15590         bblock is a throw. This happens a lot of time with argument checking in
15591         corlib.
15592
15593         * mini.c (mono_codegen): Add support for placing basic blocks after
15594         the function epilogue.
15595
15596         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15597         function epilogue.
15598         
15599 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15600
15601         * mini.c (setup_stat_profiler): Only set this up if the platform
15602         supports ITIMER_PROF.
15603
15604 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15605
15606         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15607         previous patch.
15608
15609         * inssel.brg: Fix a warning.
15610
15611 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15612
15613         * mini.c: added support for statistical profiler 
15614         (run with: --profile=default:stat).
15615
15616 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15617
15618         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15619
15620         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15621
15622         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15623         related to global registers from the amd64 port.
15624
15625 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15626
15627         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15628
15629         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15630         with global registers.
15631         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15632
15633         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15634
15635 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15636
15637         * debug-mini.c (encode_value): Fix off-by-one.
15638
15639         * aot.c (encode_value): Likewise.
15640
15641         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15642
15643 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15644
15645         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15646         AOT.
15647
15648         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15649         
15650         * aot.c (emit_method_info): Increase size of temp buffer.
15651
15652         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15653         the AOT case.
15654
15655 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15656
15657         * aot.c (emit_method_info): Fix build.
15658         
15659         * aot.c: Further rework of the AOT file format to reduce the size of
15660         the method info data.
15661
15662         * mini.h: Bump AOT file format version.
15663
15664 2004-12-27  Martin Baulig  <martin@ximian.com>
15665
15666         * mini.c (mini_get_method): New static method; call
15667         mono_get_method_full() and mono_get_inflated_method().
15668         (mono_method_to_ir): Use mini_get_method() instead of
15669         mono_get_method_full(). 
15670
15671 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15672
15673         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15674
15675 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15676
15677         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15678
15679         * inssel-amd64.brg: Add some optimization rules.
15680
15681 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15682
15683         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15684         standard not GC'd stuff is fine.
15685
15686 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15687
15688         * aot.c: Rework the AOT file format to get rid of most of the global
15689         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15690
15691         * mini.h: Bump AOT file format version.
15692         
15693 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15694
15695         * mini.h: Bump AOT file format version.
15696
15697         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15698         address is inside a GOT.
15699
15700         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15701
15702         * cpu-pentium.md: Increase the maximum size of some instructions which
15703         might involve a got access.
15704         
15705         * mini.c (get_method_from_ip): Another debug helper function.
15706
15707         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15708         when got var accesses are created during the decompose phase.
15709
15710         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15711
15712         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15713         argument mini_compile_method and to MonoCompile, and use this to
15714         determine whenever a given method is compiled for AOT. This allows the
15715         other methods compiled during AOT compilation to be free of AOT stuff,
15716         so the backends does not need to add special support for them by
15717         creating a fake GOT etc.
15718
15719         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15720         longer needed.
15721
15722 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15723
15724         * mini.c (mono_method_to_ir): It turns out that some of the
15725         x-appdomain wrappers are lax with types, so just ignore this for
15726         all wrappers.
15727
15728         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15729         at the vtable->klass. If it is non-shared code we can just use the
15730         vtable.
15731
15732 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15733
15734         * mini-ppc.c: access MonoDomain from tls, too.
15735
15736 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15737
15738         * declsec.c: Removed unused variable (and related warning ;-)
15739
15740 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15741
15742         * iltests.il: New test for LDELEMA on an array of ref types.
15743
15744         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15745         all ldelema's on reftypes.
15746         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15747         it was the wrong place to put it.
15748
15749         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15750         register to pop to make this cleaner, at the request of Paolo.
15751
15752 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15753
15754         * mini-ops.h (OP_GETHASHCODE): New op.
15755
15756         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15757
15758         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15759         operation.
15760
15761         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15762         by 25%.
15763         
15764         * mini-x86.c (mono_arch_output_basic_block): Rather than
15765
15766         add ebp, 4
15767
15768         Emit
15769
15770         pop edx
15771
15772         The first is 3 bytes while the second is 1. This saves 36 kb on
15773         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15774         see a small boost because of icache locality.
15775
15776         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15777
15778 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15779
15780         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15781         started code sharing with the generic code.
15782
15783 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15784
15785         * mini-ppc.c, cpu-g4.md: added code for direct access to
15786         tls data slots.
15787
15788 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15789
15790         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15791          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15792         to OP_TLS_GET.
15793
15794 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15795
15796         * declsec.c|h: Added functions to cache the declarative stack modifiers
15797         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15798         structure.
15799         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15800         created. Register internal calls for System.Security.SecurityFrame::
15801         _GetSecurityFrame and _GetSecurityStack.
15802         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15803         the definitions for the new stack walk/callback mechanism.
15804         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15805         first security frame for LinkDemands and InheritanceDemands) and
15806         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15807         from lupus.
15808         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15809         walk initialization (lupus).
15810
15811 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15812
15813         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15814         idiom.
15815         (handle_loaded_temps): Do not create a temporary variable for
15816         things that we know are temps. They will never be modified.
15817         (mono_spill_call): Set MONO_INST_IS_TEMP
15818         (mono_emulate_opcode): ditto
15819         (emit_tree): ditto
15820         (mono_method_to_ir.CEE_DUP): ditto
15821
15822 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15823
15824         * mini.c (type_to_eval_stack_type): Make this handle the void type
15825         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15826         (emit_tree): use ip_in_bb to special case some common idioms
15827         Update all callers to pass in the IP.
15828         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15829
15830         This gives us a nice 2% speedup in mcs bootstrap.
15831
15832         * mini-x86.c (peephole_pass): Peephole pass to make
15833         mov  [foo], eax
15834         push [foo]
15835
15836         into
15837
15838         mov [foo], eax
15839         push eax
15840
15841         * mini.c (ip_in_bb): new method.
15842         (mono_method_to_ir): use this method rather than doing the hash
15843         lookup ourselves.
15844
15845         * linear-scan.c (mono_linear_scan): When expiring actives, you
15846         don't need to keep around variables that expire on this
15847         instruction. This makes it so that:
15848              a = b + 1
15849         will turn into:
15850              store (ebx add (ebx, 1))
15851         which will become
15852              add ebx, 1
15853
15854 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15855
15856         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15857         combination to avoid doing two copies. Fix up problems with previous
15858         patch.
15859
15860         * mini.c: Fix 64 bit warnings.
15861
15862         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15863
15864 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15865
15866         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15867         changes from the x86 code.
15868
15869         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15870
15871 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15872
15873         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15874         throwing code to reduce its size, unify the AOT and non-aot code and 
15875         get rid of relocations in the AOT case.
15876
15877         * mini-x86.h mini.c exceptions-x86.c 
15878         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15879         raise corlib exceptions which doesn't require relocations in the 
15880         caller.
15881
15882         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15883
15884 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15885
15886         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15887         needed.
15888
15889         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15890         in the AOT case.
15891
15892 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15893
15894         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15895         with add function when used from Inc/dec atomic 
15896         functions. Re-enabled optimization on x86.
15897         * mini-ops.h: renamed atomic_add functions to
15898         allow _add to match the Interlocked::Add and
15899         _add_next to match Interlocked::Inc/Dec.
15900
15901 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15902
15903         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15904         linking of BBs to the end BB, and enabled SSAPRE also with
15905         consprop and copyprop (which was prevented by that bug).
15906
15907 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15908
15909         * mini-x86.c: disabling the Interlocked optimizing code. 
15910
15911 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15912
15913         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15914         file version check.
15915         
15916 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15917
15918         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15919         interlocked optimization due lack of support on x86, rewrote 
15920         exchange to take into account that base may be in eax.
15921         
15922         xsp works again; activated Interlocked optimizing code.
15923         
15924 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15925
15926         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15927
15928 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15929
15930         * mini-ops.h: Add new opcodes.
15931
15932         * mini.h: Add new patch types. Add got_var to MonoCompile.
15933
15934         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15935         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15936         make it work with all kinds of patchable code.
15937
15938         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15939         address of the GOT, and referencing entries in the GOT.
15940
15941         * mini.c: Add code to load the GOT address if needed by an opcode.
15942
15943         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15944         independent AOT code on the x86 using an elf-style Global Offset Table.
15945
15946 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15947
15948         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15949
15950 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15951
15952         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15953         when running xsp.
15954
15955 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15956
15957         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15958         of Interlocked:Increment/Decrement/Add as inline ops.
15959         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15960
15961 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15962
15963         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15964         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15965
15966 2004-12-12  Duncan Mak  <duncan@ximian.com>
15967
15968         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15969         again. `patch_info->table_size' is no longer valid after Zoltan's
15970         commit #37636.
15971
15972 2004-12-12  Martin Baulig  <martin@ximian.com>
15973
15974         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15975         if we are the "real" method, ie. not an inlined method inside it.
15976
15977 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15978
15979         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15980         before we look in the special fields table. This fixes
15981         ../tests/thread-static-init.cs.
15982
15983 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15984
15985         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15986         for Array get_Rank and get_Length. Fixes bug #70465.
15987
15988 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15989
15990         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15991         separate structure to reduce the size of MonoJumpInfo.
15992
15993 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15996
15997 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15998
15999         * mini.c (mini_get_inst_for_method): Changed to allow ports
16000         to return a MonoInst instead of opcode 
16001         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16002         
16003         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16004         Allow ports to return a created MonoInst instead of op-code, will enable
16005         new optimizations.
16006         (renamed mini_get_opcode_for_method to better reflected the functionality)
16007
16008 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16009
16010         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16011
16012 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16013
16014         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16015         Fixes #69985.
16016
16017 2004-12-08  Martin Baulig  <martin@ximian.com>
16018
16019         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16020         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16021
16022 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16023
16024         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16025         correctly.
16026
16027         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16028         arithmetic.
16029
16030 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16031
16032         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16033
16034 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16035
16036         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16037         bug introduced by the previous patch.
16038
16039 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16040
16041         * mini-ppc.c, objectc.cs: handle large structs passed by value
16042         (fixes bug #69972).
16043
16044 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16045
16046         * mini-ppc.c: OP_ARGLIST implementation from
16047         Geoff Norton  <gnorton@customerdna.com>.
16048
16049 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16050
16051         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16052         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16053
16054 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16055
16056         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16057
16058 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16059
16060         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16061         support.
16062
16063 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16064
16065         * mini-sparc.c: Zero out localled-ed memory.
16066
16067         * iltests.il: Add tests for zeroing out localloc-ed memory.
16068
16069 2004-12-04  Martin Baulig  <martin@ximian.com>
16070
16071         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16072         mono_method_get_signature_full().       
16073
16074 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16075
16076         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16077         and some utility functions (always for SSAPRE), integrated SSAPRE.
16078         * mini.h: Likewise.
16079         * driver.c: Added ssapre option.
16080         * ssa.c: Small fix on OP_ARG handling.
16081         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16082         * Makefile.am: Likewise.
16083
16084 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16085
16086         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16087         now in the xp code.
16088
16089         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16090         icall.
16091
16092 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16093
16094         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16095         
16096         * cpu-s390.md : Increase instruction length of oparglist.
16097
16098         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16099
16100 2004-11-30  Martin Baulig  <martin@ximian.com>
16101
16102         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16103         virtual generic methods.  We call a special helper_compile_generic_method()
16104         icall to retrieve the method from the vtable, inflate and compile
16105         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16106
16107         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16108
16109 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16110
16111         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16112
16113 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16114
16115         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16116         Fixes #69929.
16117
16118 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16119
16120         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16121         platforms with PIC aot.
16122
16123 2004-11-28  Martin Baulig  <martin@ximian.com>
16124
16125         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16126         Fixes gen-112.cs.
16127
16128 2004-11-28  Martin Baulig  <martin@ximian.com>
16129
16130         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16131         the result of mono_type_get_underlying_type() to check whether
16132         we're byref.
16133
16134 2004-11-26  Martin Baulig  <martin@ximian.com>
16135
16136         * mini.c
16137         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16138         in the g_assert().
16139
16140 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16141
16142         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16143         the same way as the other arguments so they won't get clobbered.
16144
16145         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16146         calls through R11 since it is clobbered by the trampoline code.
16147
16148 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16149
16150         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16151         pick up in-tree mscorlib.dll.
16152
16153 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16154
16155         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16156
16157         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16158         runtime data/code are now stored in a table similar to the GOT in ELF. 
16159         This allows the code itself to be position independent.
16160
16161         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16162         loading changes.
16163
16164         * aot.c: Attach ELF type (object/function) directives to all global
16165         symbols.
16166
16167         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16168
16169         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16170
16171         * mini-amd64.h: Turn on PIC AOT code.
16172
16173         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
16174         returning the offset within an OP_AOTCONST instruction where the GOT
16175         offset needs to be added.
16176
16177         * mini.h: Bump AOT file format version.
16178
16179 2004-11-25  Martin Baulig  <martin@ximian.com>
16180
16181         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
16182         uninflated generic methods.
16183
16184 2004-11-25  Martin Baulig  <martin@ximian.com>
16185
16186         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
16187
16188 2004-11-24  Martin Baulig  <martin@ximian.com>
16189
16190         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
16191         original klass (this only applies for generic instances).
16192
16193 2004-11-24  Martin Baulig  <martin@ximian.com>
16194
16195         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
16196         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
16197         that array).
16198
16199 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16200
16201         * mini.c (mono_method_to_ir): Disable inlining for methods containing
16202         localloc. Fixes #69678.
16203
16204         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
16205         
16206 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
16207
16208         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
16209         used SSE registers on pinvoke calls. Fixes #69774.
16210
16211 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
16212
16213         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
16214         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
16215
16216 2004-11-23  Raja R Harinath  <rharinath@novell.com>
16217
16218         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
16219         Refer directly to the mcs/ tree.
16220
16221 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16222
16223         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
16224         Check if a trampoline for a synchronized method is required. 
16225
16226 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
16227
16228         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
16229         with localloc if needed. Throe arithmetric exception in
16230         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
16231         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
16232
16233 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
16234
16235         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
16236         types before switching on type.  Fixes #69622.
16237
16238 2004-11-19  Raja R Harinath  <rharinath@novell.com>
16239
16240         * Makefile.am (check-local): New.  Integrate into 'make check'.
16241         (MCS,RUNTIME): Define using in-tree mono and mcs.
16242         (ILASM): New.
16243         (%.exe): Use $(ILASM).
16244
16245 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
16246
16247         * mini-ppc.c: adjust initial prolog size (bug #69691).
16248
16249 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
16250
16251         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
16252         #69664.
16253
16254 2004-11-17  Raja R Harinath  <rharinath@novell.com>
16255
16256         * Makefile.am (clean-local): Rename from 'clean'.
16257
16258 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16259
16260         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
16261         to mono_arch_is_int_overflow. 
16262         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
16263         SIGFPE events.
16264
16265 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16266
16267         * declsec.c|h: New files to support declarative security attributes.
16268         Added function to check if a method has (applicable) security.
16269         * mini.c|h: Add check for declarative security attributes in
16270         mono_method_check_inlining.
16271         * Makefile.am: Added declsec.c and declsec.h to the build.
16272
16273 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
16274
16275         * mini.c, mini.h: update to keep dynamic code info per-domain.
16276
16277 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16278
16279         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
16280         (mini_init): Get rid of it from here too.
16281
16282 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
16283
16284         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
16285         implemented OP_RETHROW (patch by Geoff Norton
16286         <gnorton@customerdna.com>).
16287
16288 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
16289
16290         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
16291         between appdomains.  Fixes appdomain-unload on PPC.
16292
16293 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
16294
16295         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16296         mini-exceptions.c: handle the new wrapper types.
16297         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
16298         token value as a MonoClass* when compiling a wrapper.
16299         mono_jit_create_remoting_trampoline now takes an additional
16300         MonoRemotingTarget parameter.
16301         
16302 2004-11-10  Martin Baulig  <martin@localhost>
16303
16304         * mini.c (mono_method_to_ir): Use `generic_container->context'
16305         rather than creating a new one.
16306
16307 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16308
16309         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
16310
16311         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
16312
16313 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16314
16315         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
16316         the experimental aot cache stuff.
16317
16318 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16319
16320         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16321         mini-exceptions.c: update to exception clause structure changes.
16322
16323 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16324
16325         * exceptions-x86.c (throw_exception): Fix warnings.
16326
16327         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
16328         for OP_RETHROW.
16329
16330 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16331
16332         * exceptions-sparc.c (get_throw_exception): Really fix this.
16333
16334 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16335
16336         * tramp-*.c: we no longer support icalls without wrappers, so
16337         a bit of code can be removed here
16338
16339 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
16340
16341         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
16342         patch.
16343
16344         * cpu-sparc.md: Add op_rethrow.
16345
16346         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
16347
16348         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
16349
16350         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
16351         * mini-ops.h: Add OP_RETHROW.
16352
16353         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
16354
16355         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
16356
16357 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16358         
16359         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
16360         Makes the output much easier to read
16361
16362 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
16363
16364         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
16365         prevents another huge leak when compiling with ssa. Secondly, the
16366         performance of doing this rather than freeing the lists is much
16367         better. GList does a lock every time you allocate a list link,
16368         so that it can use a memory pool. So, it is better to just use
16369         a memory pool of our own.
16370         
16371         * ssa.c, linear-scan.c: replace g_list_remove_link with
16372         g_list_delete.  The remove one does not free the GList, so we were
16373         leaking memory. On -O=all --compile-all with corlib, this cut down
16374         3 MB of allocations.
16375
16376 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16377
16378         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
16379
16380         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
16381
16382         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
16383         into a new function mono_create_jit_trampoline ().
16384
16385 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * trace.c (get_spec): Allow tracing of classes without a namespace.
16388
16389 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
16390
16391         * mini.c: Fix pointer overwrite in mini_method_compile.
16392
16393 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
16394
16395         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
16396         The darwin ABI needs some special handling for 1 and 2 byte structs
16397         Lets use lbz/lhz instead of lwz everywhere.
16398         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
16399         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
16400         Use stb/sth for the former, and put the latter always on stack instead of in
16401         argument registers.
16402
16403 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
16404
16405         * trace.c (is_filenamechar): Add '_'.
16406
16407 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
16408
16409         * mini-s390.c: Fix prolog length to allow for large trace requirements.
16410
16411         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
16412
16413 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
16414
16415         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
16416         depends on libmonogc. Fixes #68805.
16417
16418 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
16419
16420         * mini.c (mono_jit_free_method): Provide extra information for
16421         this error.  Currently this leaks, but will be turned into a
16422         developer option in the future.
16423
16424 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
16425
16426         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
16427
16428 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16429
16430         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
16431         boundary. Fixes reading of PATCH_INFO_R4 and R8.
16432         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
16433
16434 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
16435
16436         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
16437         trampolines for AOT code.
16438
16439 2004-10-22    <vargaz@freemail.hu>
16440
16441         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16442         constructed types. Fixes #68136.
16443
16444 2004-10-21  Martin Baulig  <martin@ximian.com>
16445
16446         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16447         if it returns true, unwind the stack to the call instruction.
16448
16449 2004-10-21    <vargaz@freemail.hu>
16450
16451         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16452
16453         * mini.h: Bump AOT version number.
16454
16455         * objects.cs: Add another test for unbox trampolines.
16456
16457         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16458         valuetype methods.
16459
16460 2004-10-20    <vargaz@freemail.hu>
16461
16462         * driver.c: Add SHARED to the set of optimizations tested.
16463
16464         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16465
16466         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16467         used by CEE_NEWARR.
16468
16469         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16470
16471 2004-10-20  Martin Baulig  <martin@ximian.com>
16472
16473         * mini-exceptions.c (mono_handle_exception): Call
16474         mono_debugger_handle_exception() to tell the debugger about
16475         catch/finally clauses.
16476
16477 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16478
16479         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16480
16481         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16482         #68447.
16483
16484 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16485
16486         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
16487         methods as their native size, fixed bug #57543, #57545.
16488         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16489         This saves a temporary register and mullw call down into 1 (minor perf
16490         increase for cases like sum = sum * 5;  This use to translate into:
16491             li r11,5
16492             mullw r28,r28,r11
16493         It now translates to
16494             mulli r28,r28,5
16495
16496 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
16497
16498         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
16499         #68388.
16500
16501 2004-10-11  Martin Baulig  <martin@ximian.com>
16502
16503         * mini.c (mono_method_to_ir): If we're a generic method, get the
16504         MonoGenericContainer from our MonoMethodNormal and create a
16505         MonoGenericContext from it.
16506
16507 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16508
16509         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16510
16511         * basic-long.cs: Add test for checked i8->i2 cast.
16512
16513 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16514
16515         * inssel-ppc.brg: added a couple of speedup rules.
16516
16517 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16518
16519         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16520         to speed up rebuilds.
16521
16522 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16523
16524         * mini-s390.c: Minor fix to OP_OR_IMM.
16525
16526 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16527
16528         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16529         better. Fixes appdomain-unload.exe on sparc.
16530
16531 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16532
16533         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16534         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16535         see bug 67324.
16536
16537 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16538
16539         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16540
16541 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16542
16543         * mini.c: Always generate a field read/write wrapper for members
16544         of the class MarshalByRefObject since the actual instance could
16545         be a CBO.
16546
16547 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16548
16549         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16550
16551 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16552
16553         * driver.c mini.h trace.c: Move the setting of the main assembly into
16554         a separate function called mono_trace_set_assembly () and call it after
16555         actually loading the main assembly. Fixes #66872.
16556
16557 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16558
16559         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16560         using the code manager.
16561
16562 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16563
16564         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16565
16566 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16567
16568         * cpu-amd64.md: Fix bug in previous patch.
16569         
16570         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16571         #66650.
16572
16573 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16574
16575         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16576         mini-exceptions.c: updates for changed stack walk interface.
16577
16578 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16579
16580         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16581
16582 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16583
16584         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16585
16586 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16587
16588         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16589         since assemblies can't be unloaded.
16590         
16591 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16592
16593         * cpu-amd64.md: Fix more instruction lengths.
16594
16595         * cpu-amd64.md: Fix lengths of some instructions.
16596
16597 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16598
16599         * inssel.brg: Make the array ldelema check aot friendly.
16600
16601 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16602
16603         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16604
16605         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16606
16607 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16608
16609         * mini-x86.c: Fix build.
16610
16611         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16612         mono_type_get_underlying_type () helper function to simplify code.
16613         
16614 2004-09-09  Martin Baulig  <martin@ximian.com>
16615
16616         * mini-amd64.c: Don't access `type->data.klass' directly, call
16617         mono_class_from_mono_type() instead since the type may be a
16618         generic instance.
16619
16620 2004-09-09  Martin Baulig  <martin@ximian.com>
16621
16622         * mini-amd64.c (get_call_info): Fix support for generic instances.
16623         (add_valuetype): Use mono_class_from_mono_type() to get the class
16624         since we can be a generic instance.
16625
16626 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16627
16628         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16629
16630 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16631
16632         * liveness.c: reset spill costs on each scan: bug 62107
16633
16634 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16635
16636         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16637         unnecessary line that doesn't compile
16638
16639 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16640
16641         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16642         trampolines, make them call an error function so people can fix their
16643         code.
16644
16645 2004-09-06  Martin Baulig  <martin@ximian.com>
16646
16647         * mini.c (mono_method_to_ir): When initializing locals, handle a
16648         generic instances like a valuetype if it's a valuetype and like a
16649         class if it's a class.
16650
16651 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16652
16653         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16654         stack. Fixes #64674.
16655
16656         * exceptions.cs: Add test for unwinding of call arguments.
16657
16658 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16659
16660         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16661         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16662         set the carry/borrow flag). The sparc and s390 implementations
16663         can now use optimized versions (and simplify the code). ppc bugfixes.
16664
16665 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16666
16667         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16668
16669 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16670
16671         * inssel-amd64.brg: Remove leftover 32 bit rule.
16672
16673         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16674
16675 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16678         mono_arch_find_jit_info functions into a new function. Fix a memory
16679         leak.
16680
16681         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16682         refactored code.
16683         
16684 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16685
16686         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16687         as well.
16688         
16689         * exceptions.cs: Add array size tests.
16690
16691         * mini.c: Allocate a separate icall wrapper for each arity of 
16692         mono_array_new_va. Fixes #59509.
16693
16694         * exceptions.cs: Add testcase for 64578.
16695
16696         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16697
16698         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16699         
16700 2004-09-02  Martin Baulig  <martin@ximian.com>
16701
16702         * mini.c (mono_method_to_ir): When initializing the locals, call
16703         handle_initobj() on the generic instance itself, not its
16704         underlying type.
16705
16706 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16707
16708         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16709         MonoJitInfo for dynamic methods.
16710
16711         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16712
16713         * mini.c: Add support for freeing JIT data for dynamic methods.
16714         
16715 2004-09-01  Martin Baulig  <martin@ximian.com>
16716
16717         * mini-x86.c (is_regsize_var): Added support for generic
16718         instances.
16719         (mono_arch_emit_prolog): Make this compile again, use
16720         `x86_push_imm_template (code)'.
16721
16722 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16723
16724         * mini-x86.c: make all push_imm instructions that get
16725         patched always emit the long form
16726
16727 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16728
16729         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16730         in a per-domain hash.
16731
16732         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16733         types.
16734
16735 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16736
16737         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16738         work.
16739         
16740         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16741         work.
16742
16743         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16744         Beginnings of SSE2 support.
16745
16746         * exceptions.cs: Add more tests for checked int<->uint casts.
16747
16748 2004-08-28  Martin Baulig  <martin@ximian.com>
16749
16750         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16751         generic instances.
16752
16753         * mini.c
16754         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16755         Handle generic instances recursively.
16756
16757 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16758
16759         * iltests.il: test for conv.u8 on a constant
16760
16761 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16762
16763         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16764         LCONV_x4 (shrun_32 (membase)).
16765
16766 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16767
16768         * inssel-x86.brg: c&p rules for push/setret of long
16769
16770 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16771
16772         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16773         compare (regvar, base)
16774
16775         * inssel-x86.brg: more burg love
16776
16777         * inssel.brg: more cleanup
16778
16779         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16780
16781 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16782
16783         * basic-long.cs, basic-calls.cs: new tests for optimization.
16784
16785 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16786
16787         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16788         patch.
16789
16790 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16791
16792         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16793         
16794 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16795
16796         * inssel.brg (mini_emit_memcpy): use 
16797         NO_UNALIGNED_ACCESS to disable memcpy optimization
16798
16799 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16800
16801         * mini-amd64.c: Handle generic types in various places.
16802
16803         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16804
16805 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16806
16807         * mini.c (handle_box): Fix warning.
16808
16809         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16810
16811         * mini-amd64.h: Enable the emit_state optimization.
16812
16813         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16814
16815         * mini-amd64.c: Add some new 64 bit peephole opts.
16816
16817         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16818
16819         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16820
16821         * mini-amd64.c: Register allocator fixes.
16822
16823         * mini.c: Add an optimization to emit_state to avoid allocation of new
16824         registers on some platforms.
16825
16826 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16827
16828         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16829
16830         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16831         allocation. Fixes #63085.
16832
16833         * basic-long.cs: Add new regression test.
16834
16835         * mini-amd64.c: Register allocator improvements.
16836
16837 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16838
16839         * mini-amd64.c (read_tls_offset_from_method): Add another code
16840         sequence.
16841
16842         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16843         instruction sequence for nullifying class init trampolines.
16844
16845         * objects.cs: Add new regalloc test.
16846
16847         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16848
16849 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16850
16851         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16852         
16853         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16854         arguments.
16855
16856         * driver.c: Fix profiling after TLS changes.
16857         
16858         * driver.c (mono_main): Set mono_stats.enabled if needed.
16859
16860         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16861         CEE_BOX.
16862
16863 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16864
16865         * mini-x86.c: use a 1 op rather than a 2 op tls access
16866         instruction -> faster.
16867
16868 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16869
16870         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16871         x86 backend.
16872
16873 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16874
16875         * exceptions-sparc.c (throw_exception): fix typo
16876
16877 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16878
16879         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16880         set tree->dreg correctly with tls. Allow any
16881         register to be used.
16882
16883         * mini-x86.c (read_tls_offset_from_method): add new code
16884         generation pattern seen with GCC.
16885
16886
16887 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16888
16889         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16890         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16891         exceptions-sparc.c: fix some performance issues in exception
16892         handling and setting of the stack trace for exceptions that were
16893         already thrown.
16894
16895 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16896
16897         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16898         x86 backend.
16899         
16900         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16901         registers.
16902
16903 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16904
16905         This patch inlines tls access, when possible.
16906         
16907         * mini.h: new arch functions for TLS intrinsics.
16908         All platforms updated with a stub.
16909
16910         * mini.c: use the new intrinsics
16911
16912         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16913         arch specific intrinsic for tls variables
16914
16915 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16916
16917         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16918         under windows.
16919
16920 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16921
16922         * mini.c: thread local allocation
16923
16924 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16925
16926         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16927
16928         * Makefile.am: Link against the static version of libmonogc.
16929         
16930         * Makefile.am: Link the static versions of the convenience libraries
16931         into the mono executable.
16932
16933         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16934
16935 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16936
16937         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16938         on integer overflow.
16939
16940         * mini-amd64.c: Reorganize function call code.
16941
16942         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16943
16944 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16945
16946         * inssel-x86.brg: use xor eax,eax.
16947         
16948         * basic.cs: new tests
16949
16950 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16951
16952         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16953         in exception throwing code.
16954         
16955 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16956
16957         * inssel-x86.brg: use xor esi,esi.
16958
16959 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16960
16961         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16962         can trace methods compiled during mini_init () too.
16963
16964         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16965         CEE_CONV_U4.
16966
16967 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16968
16969         * Makefile.am: static link on x86 (r=zoltan)
16970
16971 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16972
16973         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16974         code since it causes some programs to fail.
16975
16976 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16977
16978         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16979
16980 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16981
16982         * mini.c: ovfops_op_map - add STACK_OBJ case for
16983         CONV_I 
16984         * basic.cs: add test_0_pin_string as test
16985         case for above.
16986
16987 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16988
16989         * Makefile.am: build C# if srcdir != builddir
16990
16991 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16992
16993         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16994         fall-through blocks.
16995
16996 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16997
16998         * driver.c: enable loop by default again and include abcrem in -O=all.
16999
17000 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17001
17002         * iltests.il: Add some localloc tests.
17003
17004         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17005
17006         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17007         Fixes #62574.
17008
17009         * inssel-amd64.brg: Add some optimizations.
17010
17011         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17012         for gcc-3.4.
17013
17014         * Makefile.am: Statically link mono against libmono on AMD64.
17015         
17016         * mini-amd64.c inssel-amd64.brg: Optimizations.
17017
17018 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17019
17020         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17021
17022         * tramp-amd64.c: Patch calling code in trampolines.
17023
17024 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17025
17026         * mini-amd64.c: pinvoke struct passing fixes.
17027
17028 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17029
17030         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17031         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17032
17033 2004-08-05  Duncan Mak  <duncan@ximian.com>
17034
17035         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17036         CEE_LDELEM_ANY.
17037
17038 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * mini-amd64.c (emit_move_return_value): Move return value for normal
17041         calls too.
17042
17043 2004-08-05  Martin Baulig  <martin@ximian.com>
17044
17045         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17046         `type->type'; just modify `type' itself when dealing with enums
17047         and generic instances.
17048         (check_call_signature): Make `simple_type' a `MonoType *'.
17049
17050 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17051
17052         * mini.c: Use OP_PADD to add offsets to addresses.
17053
17054         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17055
17056 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17057
17058         * mini-sparc.c (mono_arch_emit_epilog): fix check
17059         for folding last op into restore instruction
17060
17061 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17062
17063         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17064         helper methods using the code manager.
17065         
17066         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17067
17068         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17069
17070 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17071         
17072         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17073           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17074
17075         * mini-s390.c: fix tail processing
17076
17077 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17078
17079         * mini-ppc.c: mul.ovf.un exception name fix.
17080
17081 2004-08-03  Martin Baulig  <martin@ximian.com>
17082
17083         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17084         instances; before jumping to `handle_enum', also modify `ptype'.
17085
17086 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17087
17088         * cpu-sparc.md: fcall maximal length too small.
17089
17090 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17091
17092         * mini-amd64.c mini.h: Add initial support for passing/returning 
17093         structures to/from pinvoked methods.
17094
17095 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17096
17097         * mini-ppc.c: reg allocator fix.
17098
17099 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17100
17101         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17102
17103         * inssel.brg: Optimize memset on 64 bit machines.
17104
17105         * mini-amd64.c: Fix some vararg cases.
17106
17107 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17108
17109         * mini-s390.c: Corrected macro in emit_float_to_int
17110
17111         * s390-abi.cs: Tests to exercise the s390 ABI
17112
17113 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17116         caller saved regs.
17117
17118         * basic.cs: Add a test for add.ovf.un.
17119
17120 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17121
17122         * mini-sparc.c: add case for OP_IDIV_UN
17123
17124 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17125
17126         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17127         
17128         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17129
17130 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17131
17132         * basic.cs: regression tests.
17133
17134         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17135         regressions.
17136
17137 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17138
17139         * basic.cs: Add a new test.
17140
17141         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17142         and AOT. Various fixes and optimizations.
17143
17144         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17145
17146 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17147
17148         * mini-ppc.c: make sure temp regs are not used for global reg
17149         allocation.
17150
17151 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17152
17153         * cpu-sparc.md: conv_i8 fix for 64bits
17154
17155         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17156
17157 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17158         
17159         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17160         add opcode for cmp BYTE PTR [eax], imm.
17161
17162         * inssel.brg: Make memcpy and memset takes bases.
17163
17164 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17165
17166         * *-amd64.*: More AMD64 work.
17167         
17168 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17169
17170         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17171         add a compare-not-equal opcode.
17172         
17173 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17174
17175         * mini.c: Use mono_init_from_assembly instead of mono_init.
17176         
17177 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17178
17179         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
17180
17181         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
17182
17183         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
17184
17185         * inssel.brg: 64 bit fixes.
17186
17187         * mini.h (MonoCallInst): Add some AMD64 specific data.
17188
17189         * mini.h: Add some OP_P opcodes.
17190
17191 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17192
17193         * basic.cs: tests for 61797 and 61740
17194
17195 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17196
17197         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
17198         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
17199
17200 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
17201
17202         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
17203
17204         * *-amd64*.*: Ongoing AMD64 work.
17205
17206 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
17207
17208         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
17209
17210         * *-amd64*: Ongoing AMD64 work.
17211
17212         * mini-arch.h: Add AMD64 support.
17213
17214         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
17215
17216         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
17217
17218         * mini-ops.h: Add new opcodes.
17219
17220         * Makefile.am: Add AMD64 support.
17221
17222         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
17223         rules into the inssel-long*.brg files.
17224
17225         * *-amd64.*: Add beginnings of AMD64 backend.
17226
17227 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
17228
17229         * mini.c (print_dfn): commenting out the code that prints
17230         the cil. With -O=deadce, this makes -v -v crash.
17231         
17232         * cpu-pentium.md: make checkthis have a length of 2
17233
17234 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
17235
17236         * mini-sparc.h: fix implementations of __builtin
17237         functions for Sun compiler for V9.
17238
17239 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
17240
17241         * mini.c: use the new stelem.ref wrapper
17242         * exceptions.cs, arrays.cs: new stelem.ref tests
17243
17244 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17245
17246         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
17247         new XSP should work with these changes).
17248
17249 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
17250         
17251         * inssel-{long32,x86,}.brg: trivial optimizations.
17252         
17253 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17254
17255         * mini.c: load value when emitting box operation in
17256         constrained calls.
17257
17258 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
17259
17260         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
17261         is one byte shorter than cmp DWORD PTR [eax], 0.
17262
17263 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17264
17265         * inssel-ppc.brg: arguments on the stack are always
17266         relative to the stack pointer (spotted by Neale Ferguson).
17267
17268 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17269
17270         * exceptions-x86.c: delay appending the method name to the trace until
17271         after mono_jit_info_table_find is called, as this gets the real
17272         MonoMethod.
17273
17274 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
17275
17276         * aot.c: register roots
17277
17278 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17279
17280         * aot.c : I could just use PLATFORM_WIN32 flag.
17281
17282 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17283
17284         * aot.c : Reverting the previous fix. This time it broke linux build.
17285
17286 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17287
17288         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
17289
17290 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17291
17292         * mini.c (handle_stack_args): Remove some more debugging code.
17293         
17294         * mini.c (handle_stack_args): Remove debug output left in by mistake.
17295
17296         * driver.c mini.h aot.c: Allow additional options to be specified with
17297         --aot and pass them to mono_compile_assembly.
17298
17299         * aot.c: Add experimental code to AOT compile all loaded assemblies
17300         on demand and save the code into a cache in the filesystem.
17301
17302         * aot.c: Add support for more wrapper methods.
17303         
17304         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
17305         58863.
17306
17307         * cpu-*.md: Remove removed opcodes.
17308
17309         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
17310         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
17311         related icalls to marshal.c.
17312
17313 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
17314
17315         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
17316
17317         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
17318
17319         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
17320
17321 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17322         * liveness.c: If liveness is recomputated we need to reset the information
17323         for each variable. This way, if the liveness range has been narrowed
17324         by optimizations that happened after the last computation, we can return
17325         a smaller range.
17326         
17327         For example, if you have
17328         
17329         {
17330                 int i = 0;
17331                 
17332                 // Tons of code that does not affect i
17333                 
17334                 i = foo ();
17335                 ...
17336         }
17337         
17338         i = 0 is dead code and will be removed by SSA. However, when
17339         linear scan gets to the code, i will still appear to be live
17340         throughout the entire block. This prevents good register allocation.
17341
17342 2004-07-06  Martin Baulig  <martin@ximian.com>
17343
17344         * debug-mini.c (mono_debug_init_method): Allow
17345         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
17346         (mono_debug_add_icall_wrapper): New method.
17347
17348         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
17349
17350 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17351
17352         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
17353         optimization.
17354
17355 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17356
17357         * aot.c (mono_aot_load_method): Fix loading of debug info.
17358
17359 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17360
17361         * aot.c: Add logging support.
17362
17363 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17364
17365         * mini.h: Add prototype for mono_print_method_from_ip.
17366
17367         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
17368
17369         * inssel.brg: 64 bit fixes.
17370
17371         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
17372         inssel-long32.brg.
17373
17374         * Makefile.am: Add SPARC64 support.
17375
17376 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17377
17378         * aot.c: Fix alignment problems on 32 bit platforms.
17379
17380 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17381
17382         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
17383         SPARC64.
17384
17385         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
17386         problems.
17387
17388         * mini.h: Bump AOT file version. Some 64 bit fixes.
17389
17390 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17391
17392         * inssel-sparc.brg: Add new rule to avoid register moves.
17393
17394         * inssel.brg: Add ldind_to_load_membase helper function.
17395
17396 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17397
17398         * mini.c: OffsetToStringData intrinsic.
17399         
17400 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17401
17402         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
17403
17404         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
17405         regression tests.
17406
17407         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
17408 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17409
17410         * mini.c: reinstated mono_compile_get_interface_var()
17411         on x86, too, since the change breaks the Gtk# build there as well.
17412
17413 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17414
17415         * driver.c: remove loop from the default optimizations: it seems to
17416         interact badly with some of the other options (see bug #60613).
17417
17418 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
17419
17420         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
17421         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
17422
17423 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
17424
17425         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
17426         vararg-using methods.
17427
17428 2004-06-21  Martin Baulig  <martin@ximian.com>
17429
17430         * mini/mini-exceptions.c
17431         (mono_handle_exception): Added `gpointer original_ip' argument.
17432         After calling mono_unhandled_exception(), call
17433         mono_debugger_unhandled_exception() and if that returns true,
17434         restore the context and return.
17435
17436 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17437
17438         * mini-ppc.c: prefer the use of relative branches so
17439         they won't need to be patched in aot code (patch from Patrick Beard).
17440
17441 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17442
17443         * aot.c: patch from Patrick Beard to make the output assembly
17444         more correct for the MacOSX assembler. Small tweak to
17445         generate sane images on Linux/PPC, too.
17446
17447 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17448
17449         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17450         case until bug #59509 is fixed (shows up in #60332).
17451
17452 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17453
17454         * mini.c: make sure the needed wrappers are compiled, too, with
17455         precomp.
17456
17457 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17458
17459         * driver.c: remove NPTL reference in --version output.
17460
17461 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17462
17463         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17464         generate valid assembly for the Mach-O assembler.
17465
17466 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17467
17468         * driver.c: don't include abcrem in the all optimization specifier
17469         since it slows down jit compilation too much for now.
17470
17471 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17472
17473         * mini.c: use BIGMUL only if both operands have the same signage.
17474         * iltests.il: Test for bug 60056. (errors related to signage in
17475         BIGMUL).
17476
17477         r=lupus.
17478
17479 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17480
17481         * mini.c, aot.c: memory leak fixes.
17482
17483 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17484
17485         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
17486
17487 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
17488
17489         * Makefile.am: remove the -static hack completely, it links in
17490         statically glib as well.
17491
17492 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
17493
17494         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
17495         * exceptions.cs: make it compile with new mcs/csc.
17496
17497 2004-06-03 Massimiliano Mantione <massi@ximian.com>
17498         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
17499         and added relevant test case.
17500
17501 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17502
17503         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
17504         regressions in gtk-sharp.
17505
17506 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17507
17508         * exceptions.cs: New regression tests.
17509
17510         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17511
17512 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17513
17514         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17515
17516 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17517
17518         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17519
17520         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17521
17522 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17523
17524         * mini.c (mono_jit_runtime_invoke): Init class in this
17525         method instead of trusting mono_jit_compile_method to
17526         do the work (because wrappers can be in object class)
17527
17528 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17529
17530         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17531
17532         * basic-long.cs: New regression test.
17533
17534 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17535
17536         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17537         and div/rem checks.
17538
17539 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17540
17541         * Makefile.am: fix miguel's change to build mono statically against
17542         libmono (track build dependencies).
17543
17544 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17545
17546         * cfold.c: Some glib versions do not have G_MININT32.
17547
17548 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17549
17550         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17551         with precision of tan, atan, sin and cos, and implemented related
17552         regressions tests (fixes bug 54467, but one new problem appeared and
17553         is not fixed yet).
17554
17555 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17556
17557         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17558
17559         * exceptions.cs: Add test for constant folding && division by zero.
17560
17561         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17562         since driver.c is in libmono too, so the optimization was useless.
17563
17564         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17565         variable to driver.c so the compiler can emit more efficient code to
17566         access them.
17567
17568 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17569
17570         * Makefile.am: don't distribute generated inssel.[ch] files.
17571
17572 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17573
17574         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17575         into the default appdomain. Fixes #58707.
17576
17577         * jit-icalls.c: Remove the broken approximation for truncl, doing
17578         no conversion is better.
17579
17580         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17581         Fixes #58863.
17582
17583 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17584
17585         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17586         of the mcrxr instruction which is not available on some processors
17587         even if it's documented to be. Implement add and sub overflow correctly
17588         (still not complete for long unsigned). Speed up icalls a bit.
17589
17590 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17591
17592         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17593         we run .cctor in the current domain instead of target_domain.
17594         
17595         Fixes bug #58558, .cctor not being called in -O=shared.
17596
17597 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17598
17599         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17600
17601 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17602
17603         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17604         which can be done with an imm8, do it that way.
17605         (mono_arch_output_basic_block): ditto for a jmp
17606         (mono_arch_emit_prolog): Computate maximum offset of a label.
17607
17608 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17609
17610         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17611         now tries to allocate prefered physical reg's for virtual
17612         regs. This reduces the number of emited spills/loads with
17613         20-30% on our core assemblies.
17614
17615 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17616
17617         * jit-icalls.c: truncl() is not needed and trunc() is
17618         the correct thing to do anyway (bug #58287).
17619
17620 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17621
17622         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17623         if available.
17624
17625 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17626
17627         * driver.c: enable loop optimizations by default.
17628
17629 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17630
17631         * mini-x86.c: fix calc of max loop size when aligning loops start.
17632
17633 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17634
17635         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17636         the stack.
17637
17638 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17639
17640         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17641         should set carry.
17642
17643         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17644
17645         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17646         
17647         * mini.c (inline_method): Allways inline some wrappers even if the cost
17648         is too large. Fixes #58785.
17649
17650         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17651         
17652 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17653
17654         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17655         (crichton@gimp.org). Beginning of support for sparc/linux.
17656
17657         * mini-sparc.c: Optimize retrieval of LMF address.
17658
17659 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17660
17661         * exceptions-ppc.c:  handle alloca in methods with clauses.
17662
17663 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17664
17665         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17666
17667 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17668
17669         * mini.c: Delegate most of the abort signal work to 
17670           mono_thread_request_interruption, which also handles Stop and Suspend
17671           states.
17672
17673 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17674
17675         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17676         supports the save/restore lmf opcodes.
17677
17678 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17679
17680         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17681         by gcc-3.4 as well.
17682
17683         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17684
17685 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17688         methods which contain array accesses.
17689
17690         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17691         boundaries. Fixes #58537.
17692
17693         * iltests.il: Add regression test for #58537.
17694
17695 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17696
17697         * mini-x86.c (mono_arch_local_regalloc): Last part of
17698         fix for bug #58633 (releasing register to early).
17699
17700 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17701
17702         * basic-long.cs: Add new regression test.
17703
17704 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17705
17706         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17707         register too early on the chain.
17708
17709 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17710
17711         * mini.c (create_helper_signature): Use a helper function to reduce
17712         the code which needs to be written. Also set the calling convention of
17713         icalls on windows. Fixes #57840.
17714
17715 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17716
17717         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17718         exceptions-ppc.c: added helper function to get the instruction address
17719         from a signal handler context.
17720
17721 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17722
17723         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17724         from gonzalo.
17725
17726 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17727
17728         * helpers.c: Add new env variable to pass args to objdump.
17729         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17730
17731 2004-05-17  Radek Doulik  <rodo@ximian.com>
17732
17733         * Makefile.am (common_sources): added abcremoval.h so it get
17734         disted and daily mono packages on go-mono.com will build again
17735
17736 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17737
17738         * abcremoval.c: Fixed coding style, added copyright header.
17739
17740         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17741
17742         * mini.h: Added prototype for abc removal main function.
17743
17744         * build_relations_propagation_table.pl: Added copyright header.
17745
17746 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17747
17748         * basic-long.cs: reg test for complex ceq_long bug.
17749
17750 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17751
17752         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17753         reg in long and clob case (bug #58343). Fixed/added comments.
17754
17755 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17756
17757         * mini.c (mono_jit_runtime_invoke): Follow new convention
17758         of calling the invoke method with an function pointer.
17759
17760 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17761
17762         * ChangeLog: Fix author of memory leak patch.
17763
17764 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17765
17766         * Makefile.am: fix make dist as well...
17767
17768
17769 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17770
17771         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17772         on archs where pointers are 4 bytes long.
17773
17774         * Makefile.am: Added abcremoval.c source file.
17775
17776         * abcremoval.c: Added abcremoval.c.
17777
17778         * abcremoval.h: Added abcremoval.h.
17779
17780         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17781
17782         * inssel.brg: Enabled bounds check removal.
17783
17784         * mini.c: Added support for abcrem optimization.
17785
17786         * mini.h: Added abcrem optimization label.
17787
17788         * driver.c: Added support for abcrem optimization.
17789
17790         * propagated_relations_table.def: Added propagated_relations_table.def.
17791
17792 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17793
17794         * mini.c, cfold.c: fix style.
17795
17796 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17797
17798         * mini.c: handle issue with the low-level implementation of
17799         some long opcodes (bug #54209).
17800
17801 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17802
17803         * basic.cs: test for my new cmov stuff.
17804
17805 2004-05-13      Patrik Torstensson
17806
17807         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17808         opt and added peephole documentation.
17809
17810 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17811
17812         * tramp-ppc.c: rewrote the generic trampoline code.
17813
17814 2004-05-11      Patrik Torstensson
17815
17816         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17817
17818 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17819
17820         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17821
17822         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17823         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17824
17825         * mini.c: Add new icalls for AsAny marshalling.
17826
17827 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17828
17829         * tramp-ppc.c, mini-ppc.c: more cleanups.
17830
17831 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17832
17833         * mini.c: no warnings.
17834
17835 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17836
17837         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17838
17839 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17840
17841         * mini.c: In the thread abort signal handler, if the thread is in the
17842         process of being stoped, don't throw the Abort exception, just stop the
17843         thread.
17844
17845 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17846
17847         * tramp-ppc.c: removed old code.
17848
17849 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17850
17851         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17852         do some simple speed optimizations on ppc.
17853
17854 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17855
17856         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17857         and large offsets in load/store.
17858
17859 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17860
17861         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17862         it causes regressions.
17863
17864 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17865
17866         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17867         support.
17868
17869 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17870
17871         * jit-icalls.c: remove warnings.
17872         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17873         speedups for unsafe code.
17874
17875 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17876
17877         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17878
17879 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17880
17881         * basic-calls.cs: Add new regression test.
17882
17883         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17884         more portable.
17885
17886         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17887
17888         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17889         is no longer used.
17890
17891 2004-05-06      Patrik Torstensson
17892
17893         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17894         long reg allocation in any reg (not only eax:edx) and implemented 
17895         long shl/shr ops in asm instead of helpers.
17896
17897 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17898
17899         * mini-sparc.h: Fix warnings.
17900
17901         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17902         stack.
17903
17904         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17905         separate statement for clarity.
17906
17907         * mini-sparc.c: Update status.
17908
17909 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17910
17911         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17912         here.
17913
17914 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17915
17916         * inssel-ppc.brg: another small pre-release workaround:
17917         we don't do overflow detection for long_sub_un.
17918
17919 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17920
17921         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17922         (also works around a weird ppc bug: 57957).
17923
17924 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17925
17926         * tramp-ppc.c: trampoline fixes.
17927
17928 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17929
17930         * mini-ppc.c: fixed typos.
17931
17932 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17933
17934         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17935         at the top of the stack. Fixed typos. Use a frame registers
17936         for all the methods with exception clauses.
17937
17938 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17939
17940         * exceptions-ppc.c: restore fp registers.
17941
17942 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17943
17944         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17945         order from the stack top (moved the stack room to save the
17946         return value for trace after the param area). Fixed corruption
17947         in restoring registers on unwind.
17948
17949 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17950
17951         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17952
17953 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17954
17955         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17956         and prolog/epilog for methods that use it. Allow
17957         enough param area room for varargs methods. Fix miguel's
17958         breakage in exception handling.
17959
17960 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17961
17962         * Makefile.am: run genmdesc only on current arch.
17963
17964 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17965
17966         * exceptions-x86.c:
17967         * mini-x86.h: fix the build on windows.
17968
17969 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17970
17971         * 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.
17972
17973         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17974
17975         * mini-exceptions.c: New file.
17976         
17977         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17978         Move some parts of the x86 exception handling code to an 
17979         arch-independent file so it can be shared with other ports.
17980
17981 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17982
17983         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17984
17985 2004-04-26  David Waite  <mass@akuma.org>
17986
17987         * driver.c: remove comma from end of enumeration declaration
17988
17989 2004-04-26  Jackson Harper  <jackson@ximian.com>
17990
17991         * driver.c: parse config file before loading first assembly. This
17992         allows the user gac to be enabled/disabled. 
17993         
17994 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17995
17996         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17997         simpler mechanism: we do not care what is encoded initially
17998         (branch absolute or relative), we care about the code and its
17999         target.  I kept the old code for reference for now.
18000
18001         The new code tries first to determine if the jump is anywhere in
18002         the -/+32 absolute meg range, if it succeeds, it encodes using the
18003         absolute branch;  If not, it tried to find something in the
18004         relative range, if not, it uses the handle_thunk code. 
18005
18006 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18007
18008         * exceptions-ppc.c: use the correct ip register on macosx.
18009
18010 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18011
18012         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18013
18014 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18015
18016         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18017         Raise exception on integer divide by zero by hand since the hw
18018         doesn't support it. Handle NaNs in FP compares.
18019
18020 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18021
18022         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18023         code reducing duplication between the platforms and enabled
18024         signal exception handling (on linux for now).
18025
18026 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18027
18028         * exceptions-ppc.c: more macosx support.
18029
18030 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18031
18032         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18033
18034 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18035
18036         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18037
18038 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18039
18040         * iltests.il: more tests.
18041
18042 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18045         vars as well.
18046
18047 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18048
18049         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18050
18051 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18052
18053         * liveness.c: Mark variables as volatile in all basic blocks reachable
18054         from exception clauses.
18055
18056 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18057
18058         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18059         inlining.
18060
18061 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18062
18063         * iltests.il, basic.cs: more tests for regalloc.
18064
18065 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18066
18067         * iltests.il: Some tests for register allocation modifications
18068         I have locally.
18069
18070 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18071
18072         * exceptions.cs: Add regression test for bug #56782.
18073
18074         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18075         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18076         the beauty of fixing the same thing in 5 different files...
18077
18078 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18079
18080         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18081         methods.
18082
18083 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18084
18085         * mini.c: Add support for STRWLPARRAY marshalling convention.
18086
18087 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18088
18089         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18090         to init the context to setup the regs pointer).
18091
18092 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18093
18094         * exceptions-ppc.c: more exceptions work.
18095
18096 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18097
18098         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18099         not allowed.
18100
18101 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18102
18103         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18104         can use the memory directly.
18105
18106         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18107
18108         add x86_add_membase, x86_sub_membase, x86_mul_membase
18109
18110 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18111
18112         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18113         GENERAL_REGS they were also hardcoded for all PPC ports.
18114
18115         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18116
18117         Remove hard-coded limit for floating point registers, use
18118         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18119
18120         Notice that in MacOS X calling conventions you can fit a lot more
18121         floating point values in registers, so I should update the PInvoke
18122         test to excercise the passing of floating point values on the
18123         stack (currently broken).
18124         
18125 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18126
18127         * tramp-ppc.c (create_trampoline_code): Added
18128         JUMP_TRAMPOLINE_SIZE. 
18129         (ppc_magic_trampoline): Follow the pattern from
18130         x86_magic_trampoline: if code is set to zero, return. 
18131         (create_trampoline_code): Always pass MonoMethod to the jump
18132         trampoline, before it was passing a null.
18133         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18134         share the code with mono_arch_create_jit_trampoline. 
18135
18136         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18137         implemented.
18138         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18139         implemented.  
18140
18141         * cpu-g4.md: Added length for jmp instruction, the worst case
18142         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18143         for save_lmf).
18144
18145 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18146
18147         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18148
18149 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18150
18151         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18152         before each IL instruction.
18153
18154         * mini.c (CEE_BOX): Fix warnings.
18155
18156 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18157
18158         * mini.c: removed a few unused vars and extra whitespace.
18159
18160 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18161
18162         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18163         checks.
18164         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18165         index.
18166         (OP_GETCHR): use the above
18167         (CEE_LDELEMA): use the above.
18168
18169         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18170         version of the generic impl.
18171         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18172         (CEE_LDELEMA): use the above.
18173
18174 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18175
18176         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
18177         Fixes #56317.
18178
18179         * iltests.il: Added new regression test for #56317.
18180
18181 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
18184         under NetBSD. Fixes #56450.
18185
18186         * liveness.c (update_gen_kill_set): Fix previous patch.
18187
18188 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18189
18190         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
18191
18192 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18193
18194         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
18195         ldsfld and ldsflda.
18196
18197         * inssel-sparc.brg: Add more optimizations.
18198
18199         * mini-sparc.c: Replace multiply/divide with shifts if possible.
18200
18201 2004-04-01  Martin Baulig  <martin@ximian.com>
18202
18203         * mini.c (handle_box): New static function; moved the
18204         implementation of CEE_BOX here.
18205         (mono_method_to_ir): Added `constrained_call' variable.
18206         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
18207         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
18208         mono_method_get_constrained() to get the method.
18209
18210 2004-04-01  Martin Baulig  <martin@ximian.com>
18211
18212         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
18213         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
18214         (mono_method_to_ir): We don't need these macros anymore since
18215         mono_class_get_full() already takes care of it. 
18216
18217 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18218
18219         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
18220         use @function (as doesn't accept #function here) and check the return
18221         value of system and stop if fails.
18222
18223 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18224
18225         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
18226
18227 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
18228
18229         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
18230
18231         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
18232
18233         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
18234         #56223.
18235
18236         * basic-long.cs: Add test for negation of Int64.MinValue.
18237
18238 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
18239
18240         * mini-sparc.c: Update status.
18241
18242         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
18243
18244         * exceptions-sparc.c: Fix return value in filters.
18245
18246         * inssel-sparc.brg: Fix register allocation in some rules.
18247
18248 2004-03-28  Martin Baulig  <martin@ximian.com>
18249
18250         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
18251         if neccessary.  
18252
18253 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18254
18255         * mini-x86.c (mono_arch_patch_code): Fix warnings.
18256         
18257         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
18258         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
18259         remove unused conv_u4 opcode.
18260
18261         * mini-x86.c: Remove valgrind workaround since it slows down things
18262         even when mono is not run under valgrind.
18263
18264 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
18265
18266         * mini-sparc.c: Update status.
18267
18268         * inssel-sparc.brg: Add some optimizations.
18269
18270         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
18271         future delay slot filling. Add support for varargs, tail calls and JMP.
18272
18273         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
18274         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
18275
18276         * inssel.brg: Fix register allocation in OP_ARGLIST.
18277
18278         * inssel.brg: Fix warnings.
18279
18280 2004-03-25  Martin Baulig  <martin@ximian.com>
18281
18282         * mini.c (inflate_generic_field): Removed.
18283         (mini_get_method): Removed, use mono_get_method_full(),
18284         (mini_get_class): Removed, use mono_class_get_full().
18285         (mono_method_to_ir): Pass our generic context to
18286         mono_field_from_token().        
18287
18288 2004-03-25  Martin Baulig  <martin@ximian.com>
18289
18290         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
18291         of a `MonoMethod *'.
18292         (mini_get_method): Take a `MonoGenericContext *' instead
18293         of a `MonoMethod *'.
18294         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
18295         a new local variable called `generic_context' which holds the
18296         current `MonoGenericContext *'; use it to lookup things.
18297
18298 2004-03-24  Martin Baulig  <martin@ximian.com>
18299
18300         * mini.c (mini_get_class): New static method; if we're inside a
18301         generic instance, inflate the class if neccessary.
18302         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
18303
18304 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18305
18306         * iltests.il: New regression test for #55976.
18307
18308         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
18309         #55976.
18310
18311 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18312
18313         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
18314         output.
18315
18316 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18317
18318         * liveness.c: Consider SSA stores as well as loads when making vars
18319         volatile.
18320
18321         * exceptions.cs: New regression tests for register allocation.
18322         
18323 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18324
18325         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
18326         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
18327           domain lock only to protect puntual access to data structures.
18328           Added access lock for sighash, jit_icall_hash_name, 
18329           jit_icall_hash_addr and domain->code_mp.
18330
18331 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
18332
18333         * driver.c: Print SIGSEGV handling method.
18334
18335         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
18336
18337         * mini.c (setup_jit_tls_data): Handle case when this is called
18338         multiple times for a thread.
18339
18340         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
18341         is different from fbxx_un. Fixes #54303. Also use constants instead of
18342         magic numbers in a lot of places.
18343
18344 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
18345
18346         * exceptions.cs: Fix cctor test when --regression is used.
18347
18348 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
18349
18350         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
18351         for Linux/ppc.
18352
18353 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18354
18355         * inssel-ppc.brg: fixed register assignments for some rules.
18356
18357 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18358
18359         * exceptions.cs: Add test for exceptions in static constructors.
18360
18361         * mini.c (mono_jit_compile_method_with_out): Move the calling of
18362         static constructors outside the domain lock. Fixes #55720.
18363
18364 2004-03-17  Martin Baulig  <martin@ximian.com>
18365
18366         * mini.c (get_generic_field_inst): Removed, this'll never happen.
18367         (inflate_generic_field): Take the `MonoMethod *' instead of the
18368         `MonoClass *' and added support for generic method.
18369         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
18370         have a `field->parent->gen_params', only inflate the field if it's
18371         an open constructed type.
18372
18373 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
18376         exception object instead of the preconstructed ones.
18377
18378 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18379
18380         * mini.c: reverted changed to sigsegv_signal_handler commited
18381         accidentally in the previous patch.
18382
18383 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18384
18385         * mini.c:
18386         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
18387         running --aot with an old assembly.
18388
18389 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
18392         point values.
18393
18394         * mini-sparc.c: Add support for v9 branches with prediction.
18395
18396 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
18397
18398         * mini.c (mini_init): #warning is GNUC only
18399
18400         * mini-sparc.h: implement __builtin_frame_address
18401         and __builtin_return_address for Sun C compiler
18402
18403 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
18404
18405         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
18406
18407 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18408
18409         * basic-calls.cs: Add test for unaligned byref long argument passing.
18410
18411         * mini-ops.h: Add sparcv9 compare and branch instructions.
18412
18413         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
18414         v9 instructions if we have a v9 cpu.
18415
18416         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
18417         registers for global allocation.
18418
18419         * exceptions-sparc.c: Fixes.
18420         
18421 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
18422
18423         * liveness.c (mono_analyze_liveness): Optimized version.
18424
18425         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
18426
18427         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
18428         sparc work.
18429
18430         * basic-float.cs basic-calls.cs: New regression tests.
18431
18432 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
18435         sigaltstack implementation.
18436
18437         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
18438         
18439         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
18440         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18441
18442 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18443
18444         * mini.c: Fix warnings.
18445         
18446         * mini.c (mono_resolve_patch_target): New function which contains the
18447         arch independent part of the patching process.
18448
18449         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18450         patching code to a separate function.
18451
18452 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18453
18454         * mini.c (add_signal_handler): ifdef out on Windows
18455
18456 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18457
18458         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18459         cpu-sparc.md: Add exception handling support + other fixes.
18460
18461         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18462         typed GC detection in --version.
18463
18464         * basic.cs exceptions.cs: New regression tests.
18465
18466         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18467         the arch specific code can store data during a compilation.
18468
18469         * mini-ops.h: Add OP_SETFRET.
18470
18471         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18472         function, register a separate icall for each arity, so the icalls can
18473         get a wrapper.
18474         
18475         * mini.c (mono_print_tree): Print negative offsets in a more readable
18476         form.
18477         
18478         * mini.c: Make signal handling work on sparc.
18479         
18480         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18481
18482         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18483
18484         * jit-icalls.c: Emulate truncl by aintl on solaris.
18485
18486         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
18487
18488 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18489
18490         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18491
18492 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18493
18494         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
18495         a MarshalByRef type, inline a method that performs the check, taking into
18496         account that the object can be a proxy. Also implemented tow new opcodes:
18497         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18498         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
18499         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18500
18501 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18502
18503         * mini-ppc.c: if a relative branch displacement is too big
18504         but it points to and area reachable with an absolute branch, 
18505         avoid the thunks.
18506
18507 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18508
18509         * mini.c: optimize small copies in cpblk.
18510
18511 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18512
18513         * basic-calls.cs basic-float.cs: New regression tests.
18514
18515         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18516         negative offsets from %fp. Implement localloc. Fix local register 
18517         allocation. Fix the case when the this argument needs to be saved to
18518         the stack. Implement some missing opcodes.
18519
18520 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18521
18522         * mini.c (mini_method_compile): Reenable global regalloc in methods
18523         with exception handlers.
18524
18525         * linear-scan.c (mono_varlist_sort): Fix warning.
18526
18527         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18528
18529         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18530         regalloc costs.
18531
18532         * liveness.c: Make all variables uses in exception clauses volatile, to
18533         prevent them from being allocated to registers. Fixes #42136.
18534
18535 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18536
18537         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18538         causes regressions.
18539
18540         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18541         argument to mono_arch_regalloc_cost.
18542
18543         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18544         precisely.
18545
18546 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18547
18548         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18549         Make the cost of allocating a variable to a register arch dependent.
18550
18551         * basic-calls.cs: Fix compilation of tests.
18552         
18553         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18554         helper function to cut back on the number of #ifdefs needed.
18555
18556         * mini-ppc.c: Fix compilation.
18557
18558         * basic-calls.cs: New regression tests.
18559
18560         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18561
18562         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18563         of l0 since that is callee saved.
18564
18565         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18566         to virtual calls.
18567
18568         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18569         of delay instruction.
18570
18571         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18572
18573         * mini.h (MonoCallInst): Add 'virtual' flag.
18574
18575         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18576
18577 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18578
18579         * *.cs: New regression tests.
18580
18581         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18582         work.
18583
18584         * mini.c (mono_runtime_install_handlers): Fix build.
18585
18586         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18587         'signal_stack_size' members.
18588
18589         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18590         alternate signal stack.
18591
18592         * exceptions-x86.c: Add stack overflow handling.
18593
18594         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18595         functions to arch independent code.
18596
18597         * mini.c (mono_print_tree): Print more detailed info for load_membase
18598         opcodes.
18599         
18600 2004-02-23  Martin Baulig  <martin@ximian.com>
18601
18602         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18603
18604 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18605
18606         * mini-x86.c: fixed reg allocation for div/rem.
18607
18608 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18609
18610         * driver.c (mono_main): Report some configuratio options on --version.
18611
18612 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18613
18614         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18615         low in the address space. Correctly flush memory in thunks where we
18616         output native code.
18617
18618 2004-02-20  Martin Baulig  <martin@ximian.com>
18619
18620         * mini.c (mini_get_method): New static method; inflate all generic
18621         methods and methods in open generic instances.
18622         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18623         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18624
18625 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18626
18627         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18628
18629         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18630
18631 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18632
18633         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18634
18635         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18636         it compile using Sun's compiler.
18637
18638 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * 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.
18641
18642         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18643
18644 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18645
18646         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18647         code.
18648         * mini-ppc.c: handle calls outside of the allowed range with thunks
18649         allocated using the code manager.
18650         * tramp-ppc.c: use the code manager to hold generated native code.
18651         Fixed the magic trampoline to just patch vtable entries.
18652
18653 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18656         independent file.
18657
18658 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18659
18660         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18661         PPC.
18662
18663         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18664         if we have a working __thread implementation.
18665
18666         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18667         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18668
18669 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18670
18671         * mini-x86.c: Fix compilation under gcc 2.
18672         
18673 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18674
18675         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18676         contains a call to the wrapped function.
18677
18678         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18679         OP_<CALL>_IMM opcodes, and use them under X86.
18680         
18681         * mini.c (mono_jit_find_compiled_method): Fix warning.
18682
18683         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18684
18685         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18686
18687         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18688         functionality to mini.c.
18689
18690         * mini.c (mono_create_jump_trampoline): New function to create a jump
18691         trampoline. Return a compiled method instead of a trampoline if it
18692         exists. Add a cache for jump trampolines.
18693
18694         * mini.c (mono_jit_find_compiled_method): New function to return a
18695         compiled method if it exists.
18696
18697         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18698         mono_arch_create_jit_trampoline.
18699
18700         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18701         a jump trampoline. Fixes #52092.
18702         
18703 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18704
18705         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18706         which is not up-to-date. Add check_corlib_version () instead.
18707
18708         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18709         have to call it.
18710         
18711         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18712         since newer valgrind versions do not need it.
18713
18714         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18715         compile a method with a given set of optimizations.
18716
18717         * mini.c: Compile icall wrappers on-demand instead of at startup.
18718
18719         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18720         wrapper for an icall.
18721
18722 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18725         #54063.
18726
18727         * iltests.il: Add test for non-empty stack before switch instruction.
18728
18729 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18730
18731         * mini.c: Add support for new stringbuilder marshalling conventions.
18732
18733         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18734
18735 2004-02-01  Martin Baulig  <martin@ximian.com>
18736
18737         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18738         in `ginst->mtype_argv'.
18739
18740 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18741
18742         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18743         facilitate grepping.
18744
18745 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18746
18747         * mini.c: fixed buglet in initobj generic implementation for references.
18748
18749 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18750
18751         * Makefile.am: make the version script conditional.
18752         * jit-icalls.c: handle missing truncl().
18753
18754 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18755
18756         * exceptions.cs: Add more tests for double->int conversion.
18757
18758         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18759         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18760
18761 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18762
18763         * driver.c: make --verbose --version emit an error
18764         if the loaded corlib doesn't match the runtime version.
18765
18766 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18767
18768         * mini-ppc.h: export ppc_patch().
18769         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18770         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18771         on par or better than on MacOSX.
18772
18773 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18776         mono_lookup_pinvoke_call.
18777
18778         * mini-x86.c: Under windows, the default pinvoke calling convention is
18779         stdcall. Fixes #52834.
18780
18781         * mini.c (optimize_branches): Add an upper bound to the number of
18782         iterations to prevent infinite loops on strange loops. Fixes #53003.
18783
18784 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18785
18786         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18787         and ISINST. Fixes #52093.
18788
18789         * objects.cs (test_0_vector_array_cast): New tests.
18790         
18791 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18792
18793         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18794         checking in Array.Set ().
18795
18796         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18797         #52590.
18798
18799         * object.cs (test_0_multi_array_cast): New regression test.
18800
18801 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18802
18803         * exceptions-ppc.c: fix build on Linux/PPC.
18804
18805 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18806
18807         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18808         running under valgrind.
18809         (x86_magic_trampoline): Fix build bustage.
18810
18811         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18812         negative values as well. This is needed for the encoding of the line number
18813         info, since sometimes the line numbers are not in increasing order.
18814
18815 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18816
18817         * cpu-pentium.md (localloc): Increase the size of the localloc 
18818         instruction since it is a loop under Win32.
18819
18820         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18821         allocation.
18822
18823 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18824
18825         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18826         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18827         Max Horn (max@quendi.de). Fix file names in comments.
18828
18829 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18830
18831         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18832         avoid stack overflow.
18833         (replace_usage): Avoid uninitialized variable warnings.
18834
18835         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18836         and taking the address of valuetype variables.
18837
18838 2004-01-03  Patrik Torstensson
18839
18840         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18841         for other purposes than FP later on.
18842
18843 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18844
18845         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18846         of tail calls.
18847
18848 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18849
18850         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18851
18852 2003-12-30  Patrik Torstensson <p@rxc.se>
18853
18854         * mini-x86.h: Decreased number of availiable fp regs.
18855         Solves corner cases with FP spilling.
18856
18857 2003-12-23  Patrik Torstensson <p@rxc.se>
18858
18859         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18860         for floating point stack tracking / spilling on x86. 
18861         Fixes bug #49012.
18862         
18863         * basic-float.cs: added float mul overflow test.
18864
18865 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18866
18867         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18868
18869 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18870
18871         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18872         supports for cond branches that overflow the immediate
18873         overflow offset. mcs can compile simple programs.
18874
18875 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18876
18877         * exceptions-ppc.c: exception handling support wip:
18878         finally handlers get run on exception.
18879
18880 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18881
18882         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18883         profiling.
18884
18885 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18886
18887         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18888         initial support for stack walking and unwinding.
18889
18890 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * driver.c (mono_main): Make corlib-out-of-sync message more 
18893         descriptive. Also remove verify_corlib call.
18894
18895 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18896
18897         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18898         not overlap with other call's arguments, too.
18899
18900 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18901
18902         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18903         move to arch-specific code the choice of arch-specific
18904         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18905         * mini.c: ensure emulation calls will not interleave
18906         with other calls.
18907
18908 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18909
18910         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18911         the magic trampoline stack frame is dropped before executing
18912         the new method.
18913
18914 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18915
18916         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18917         and integer to fp conversions. Added support for overflowing
18918         arguments on the stack. Reserve a couple more registers as temps.
18919         Added support for aot compilation (as output still needs to be
18920         tweaked, though).
18921
18922 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18923
18924         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18925         Don't overwrite return register in some corner cases.
18926
18927 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18928
18929         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18930         static constructors when AOT compiling.
18931
18932         * driver.c (mono_main): Call mono_check_corlib_version.
18933
18934 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18935
18936         * cpu-g4.md, basic.cs: fixed div target register.
18937
18938 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18939
18940         * mini-ppc.c, basic.cs: shl_imm fix with test.
18941
18942 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18943
18944         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18945         structures by value. Misc fixes.
18946         * objects.cs: more tests.
18947
18948 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18949
18950         * mini-ppc.c: lconv.ovf.i implemented.
18951
18952 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18953
18954         * mini.c:
18955         (mini_init): don't error out if someone already called g_thread_init.
18956
18957 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18958
18959         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18960         to be any type per the spec. Fix abnormal memory usage when
18961         the same object is repeatedly thrown.
18962
18963 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18964
18965         * mini.c: check for overruns in IL code.
18966
18967 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18968
18969         * TODO: Add/remove some todo entries.
18970
18971 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * driver.c (mono_main): Call mono_verify_corlib.
18974
18975 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18976
18977         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18978         This has been moved to mini.c
18979         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18980         type being casted is marshalbyref it could be a proxy, so instead of
18981         emitting the type check code, emit a call to a runtime method that will
18982         perform the check by calling CanCastTo if needed.
18983
18984 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18985
18986         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18987         methods with large stack frames under Win32.
18988
18989 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18990
18991         * Makefile.am: Distribute regression tests.
18992
18993         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18994         at the end instead of inserting each variable into the sorted list.
18995
18996         * linear-scan.c (mono_varlist_sort): New helper function.
18997         
18998 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18999
19000         * mini.c: ensure arguments and locals are within bounds.
19001
19002 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19003
19004         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19005         related fixes.
19006
19007 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19008
19009         * mini.c (mono_cprop_copy_values): Fix crash.
19010
19011         * aot.c: Set verbosity back to 0.
19012         
19013 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19014
19015         * regalloc.c: complete memory leak fix by Laurent Morichetti
19016         (l_m@pacbell.net).
19017
19018 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19019
19020         * driver.c (main_thread_handler): Revert the previous patch.
19021
19022         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19023         under valgrind.
19024
19025         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19026         memory from the memory pool.
19027
19028         * driver.c (main_thread_handler): Turn on all optimizations when
19029         --aot is used.
19030
19031         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19032         an array for better performance.
19033
19034         * regalloc.c (mono_regstate_assign): Fix memory leak.
19035
19036         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19037         serialize the debug info.
19038
19039         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19040         debug info from the serialized representation.
19041
19042         * aot.c: Save debug info into the generated file and load it when 
19043         loading a method.
19044
19045         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19046
19047 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19048
19049         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19050         More FP-related fixes.
19051
19052 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19053
19054         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19055         and register allocation buglet. Hello world now runs.
19056
19057 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19058
19059         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19060         * tramp-ppc.c: fixed class init trampoline.
19061         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19062
19063 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19064
19065         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19066         mini.c: more ppc changes/fixes.
19067
19068 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19069
19070         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19071         Also optimize the case when the arguments are the same in the caller 
19072         and in the callee.
19073
19074         * iltests.il: Add tests for tail calls with valuetype arguments.
19075
19076 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19077
19078         * mini-ppc.c: fixes for struct return type.
19079
19080 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19081
19082         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19083         mono_spillvar_offset() to arch-specific code.
19084
19085 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19086
19087         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19088
19089 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19090
19091         * exceptions-x86.c: Fix stack space leaks.
19092         
19093         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19094         registers from the lmf if the method has save_lmf set.
19095
19096 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19097
19098         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19099         of icall wrappers into InvokeInDomain, since these are now per-domain.
19100
19101 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19102
19103         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19104         make some opcode emulation and intrinsic ops enabled/disabled 
19105         according to the architecture. More fixes.
19106
19107 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19108
19109         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19110
19111 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19112
19113         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19114         arch-specific handling for 'this' and struct return type to
19115         arch-specific code.
19116
19117 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19118
19119         * aot.c: prevent divide by zero error when reporting (it happened with
19120         Accessibility.dll).
19121
19122 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19123
19124         * mini.h (inst_switch): Remove unused macro.
19125
19126 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19127
19128         * aot.c:
19129         (load_aot_module): free 'info->methods' and 'info' properly. No more
19130         "free(): invalid pointer blah" messages when you have an old aot
19131         compiled assembly.
19132
19133 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19134
19135         * jit-icalls.c, mini.c: Added support for context static fields.
19136
19137 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19138
19139         * mini.c (mono_method_blittable): Methods which set LastError are not 
19140         blittable either. Fixes #51108.
19141         
19142 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19143
19144         * mini.c: flush icache.
19145         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19146
19147 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19148
19149         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19150
19151 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19152
19153         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19154         safe on IA32.
19155
19156         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19157         vararg calls.
19158
19159         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19160
19161 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19162
19163         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19164         instruction when the result is discarded.
19165
19166         * iltests.il (test_0_div_regalloc): New regression test.
19167
19168         * arrays.cs: Fix compilation error.
19169
19170 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19171
19172         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19173         float rules to inssel-x86.brg: sane architectures with FP registers
19174         don't need to implement these rules.
19175
19176 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19177
19178         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
19179
19180 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19181
19182         * mini.h, inssel-long32.brg: fixed endianess issues in int64
19183         implementation of 32 bit systems.
19184
19185 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19186
19187         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
19188         (Jeroen Zwartepoorte).
19189
19190 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19191
19192         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
19193         the caller and the callee matches.
19194         
19195         * mini.c (mono_method_to_ir): Add comment.
19196
19197         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
19198         signbit is missing on some platforms.
19199
19200 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
19203
19204         * mini.c (setup_jit_tls_data): Call the new function.
19205         
19206         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
19207
19208         * mini-x86.c: Add experimental support for fast access to the lmf
19209         structure under NPTL/Linux 2.6.x.
19210
19211 2003-11-06  Martin Baulig  <martin@ximian.com>
19212
19213         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
19214         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
19215         the debugger.
19216
19217 2003-11-02  Martin Baulig  <martin@ximian.com>
19218
19219         * mini.c (inflate_generic_field): New static method.
19220         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
19221         generic instance and the field is declared in a generic type, call
19222         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
19223
19224 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * mini.h mini.c (mono_method_same_domain): New function to return
19227         whenever the caller and the callee are in the same domain.
19228
19229         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
19230
19231 2003-10-30  Martin Baulig  <martin@ximian.com>
19232
19233         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
19234         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
19235         method parameters.
19236         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
19237         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
19238
19239 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
19240
19241         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
19242         propagation.
19243
19244         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
19245         object here, so it is in the correct appdomain etc.
19246
19247 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19248
19249         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
19250         already done.
19251         (mono_method_to_ir): Avoid freeing the type created returned from
19252         mono_type_create_from_typespec, since it is put into an internal cache
19253         by the function. Fixes pointer.exe.
19254
19255         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
19256         trampolines for icalls and pinvokes as well. Fixes #33569.
19257
19258 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * mini.c: Update after appdomain changes.
19261
19262         * mini.c (mono_jit_compile_method_inner): Allways compile native
19263         method wrappers in the root domain, since there can only be one
19264         instance of them, whose address is stored in method->info.
19265
19266 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
19269         environment variable. Instead detect automatically whenever running
19270         under valgrind using the magic macro RUNNING_ON_VALGRIND from
19271         valgrind.h.
19272
19273 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
19274
19275         * trace.c, trace.h: New files that implement the new trace option
19276         parsing. 
19277
19278         * driver.c: Document new --trace options.
19279
19280         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
19281         mini-x86.c: Apply:
19282
19283         -       if (mono_jit_trace_calls)
19284         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
19285
19286         * mini.h: prototypes.
19287         
19288 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
19291
19292         * mini.c inssel.brg: Implement typedefbyref opcodes.
19293
19294         * mini.c (mono_jit_compile_method): Remove unused local variable.
19295
19296         * mini.c (mono_jit_compile_method_inner): Ditto.
19297         
19298 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * tramp-x86.c (x86_class_init_trampoline): Fix build.
19301         
19302         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
19303
19304 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19305
19306         * mini.c (mono_no_aot): Remove unused global variable.
19307
19308         * mini.c: Thread safety fixes.
19309
19310 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
19311
19312         * mini.c (mono_create_class_init_trampoline): Add a lock around
19313         class_init_hash_addr.
19314
19315         * arrays.cs (test_0_newarr_emulation): Add new regression test for
19316         #30073.
19317
19318         * mini.c: Decompose the NEWARR instruction before decomposing its
19319         arguments. Fixes #30073.
19320
19321 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
19324         convention.
19325
19326 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19327
19328         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
19329
19330         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
19331
19332         * driver.c: Add support for compiling icall wrappers to --compile.
19333
19334 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19335
19336         * inssel.brg: The empty value in class->interface_offsets is -1, not
19337         0. Fixes #49287.
19338
19339 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19340
19341         * objects.cs: New test for 'is' operator on an array of interfaces.
19342
19343 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19344
19345         * tramp-ppc.c: update trampoline code to support jumps
19346         and class initialization.
19347
19348 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19349
19350         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
19351
19352         * inssel.brg (OP_UNBOXCAST): Fix #46027.
19353
19354         * inssel.brg (OP_UNBOX): Remove unused rule.
19355
19356         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
19357         region instead of one for each method. Fixes #47813.
19358
19359 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19360
19361         * exceptions.cs (test_0_nested_finally): New regression test for
19362         nested exception handlers.
19363
19364         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
19365
19366         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
19367
19368         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
19369         inlining.
19370
19371         * mini.c (mono_method_check_inlining): Make the inlining limit 
19372         configurable by an environment variable.
19373         
19374         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
19375
19376         * mini.h: Bump AOT file version.
19377
19378         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
19379         token, store the image along with the token, since the token might not 
19380         refer to the same image as the method containing the relocation, 
19381         because of inlining.
19382
19383 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * mini.c (mono_precompile_assemblies): New function to compile
19386         all methods in all loaded assemblies.
19387
19388         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
19389
19390         * regalloc.h regalloc.c (MonoRegState): Change the type of 
19391         iassign and fassign to int*, since they can contain large negative
19392         values if the register is spilled. Also added some comments. Fixes
19393         #45817.
19394
19395         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
19396         under Win32. Fixes #42964.
19397
19398 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19399
19400         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
19401
19402         * aot.c: Added support for AOT compiling methods which contain calls
19403         to wrappers. Currently, only remoting-invoke-with-check wrappers are
19404         handled.
19405         
19406         * driver.c (compile_all_methods): Run the compilation in a thread
19407         managed by mono. Fixes #44023.
19408
19409         * mini.c (mono_codegen): Print full method name in verbose output.
19410
19411         * mini-x86.c (mono_arch_patch_code): Fix warning.
19412         
19413         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
19414         jumps, since the method we are jumping to might be domain-specific.
19415
19416         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
19417
19418 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19419
19420         * inssel.brg: string chars are unsigned.
19421
19422 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * TODO: New todo item.
19425
19426         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
19427         which calls mono_runtime_class_init and patches the call site to
19428         avoid further calls.
19429         (mono_arch_create_class_init_trampoline): New arch specific function 
19430         to create a class init trampoline.
19431         (create_trampoline_code): Generalized so it can create
19432         class init trampolines as well.
19433
19434         * mini.c (helper_sig_class_init_trampoline): New helper variable.
19435         (mono_create_class_init_trampoline): New function to create and cache
19436         class init trampolines.
19437         (mono_find_class_init_trampoline_by_addr): New function to lookup the
19438         vtable given the address of a class init trampoline. Used by the
19439         patching process.
19440         (mono_codegen): Generate a call to a trampoline instead of
19441         mono_runtime_class_init in LDSFLD[A].
19442         (mono_codegen): Add relocations for the new trampoline.
19443         
19444         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19445         MONO_PATCH_INFO_CLASS_INIT.
19446
19447         * mini.h: Bump AOT version number.
19448
19449         * aot.c: Create a copy of the loaded code instead of using the original
19450         so methods which call each other will be close in memory, improving
19451         cache behaviour.
19452         
19453         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19454         patch since it breaks the regression tests.
19455         
19456         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19457         for the register saving instruction sequence since the 
19458         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19459
19460 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19461
19462         * TODO: Fix todo item && remove another.
19463
19464 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19465
19466         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19467         previous checkin.
19468
19469         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19470         function of the module.
19471
19472         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19473         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19474         --no-aot command line option.
19475
19476 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19479         by Bernie Solomon (bernard@ugsolutions.com).
19480
19481         * inssel.brg: Refactor the interface offset table related code into
19482         its separate functions and add support for the AOT case.
19483
19484 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * aot.c (mono_aot_get_method_inner): Fix memory leak.
19487         
19488         * aot.c: Added mono_aot_verbose variable and made all debugging
19489         output depend on the value of this variable.
19490
19491         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19492         method_label and info_label.
19493
19494         * mini.h mini-x86.c aot.c: Added a new relocation type 
19495         MONO_PATCH_INFO_IID for klass->interface_id.
19496
19497         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
19498         the MonoJitInfo structure.
19499
19500         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
19501         a non-root appdomain in shared mode.
19502
19503 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19504
19505         * aot.c: make aot loader less verbose. Remove free of unused variable.
19506
19507 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19508
19509         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19510
19511         * .cvsignore: Added *.dll.
19512
19513         * mini.c (mono_print_tree_nl): New function callable while debugging.
19514
19515         * mini.c (mono_print_code): Export this.
19516
19517         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19518         patched code.
19519
19520 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19521
19522         * mini.h (MonoCompile): Added 'jit_info' field.
19523
19524         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19525         the cfg structure, since it is needed by the AOT compiler.
19526
19527         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19528
19529         * aot.c: A major rewrite. Changes include:
19530         - save exception tables for methods which have them.
19531         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19532         to g_module_symbol.
19533         - reworked the file format so it is now much smaller and needs
19534         fewer relocation entries.
19535         
19536 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19537
19538         * aot.c (load_aot_module): Fix build bustage on platforms without
19539         Boehm GC.
19540
19541 2003-09-04  Martin Baulig  <martin@ximian.com>
19542
19543         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19544
19545 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19546
19547         * TODO: Some new optimization ideas.
19548
19549         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19550
19551         * aot.c: Save the optimization flags used to compile the code into
19552         the AOT module.
19553
19554         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19555         support emitting domain specific code.
19556         
19557         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19558         no longer domain neutral. It can be made domain neutral by compiling 
19559         with --optimize=shared.
19560
19561         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19562         between appdomains.
19563
19564         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19565         loading of AOT code.
19566
19567         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19568         
19569         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19570         if there is no domain neutrality information.
19571
19572 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19573
19574         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19575         format version into the generated library.
19576
19577         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19578         callee method into the caller since one of them could be shared.
19579
19580         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19581         system exceptions from AOT code now works.
19582
19583         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19584         method if it is domain neutral and the callee is not.
19585
19586         * graph.c (cfg_emit_one_loop_level): Fix warning.
19587
19588 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19589
19590         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19591         last checkin.
19592
19593 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19594
19595         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19596         is needed  by code which is executed before mono_runtime_init ().
19597         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19598         
19599         * mini.c (mono_thread_abort): Fix warning.
19600         (mono_jit_compile_method): Call static constructor in the AOT case too.
19601
19602         * aot.c (mono_compile_assembly): Fix warning.
19603
19604 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19605
19606         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19607
19608 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19611
19612         * cpu-pentium.md: Fix the length of call opcodes so they include the
19613         ESP restoring instruction. Fixes #47968.
19614
19615 2003-08-28  Martin Baulig  <martin@ximian.com>
19616
19617         * mini-x86.c (mono_arch_call_opcode): Added support for
19618         MONO_TYPE_GENERICINST.
19619
19620         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19621
19622 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19625         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19626
19627         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19628         metadata_section.
19629
19630 2003-08-26  Martin Baulig  <martin@ximian.com>
19631
19632         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19633         when reporting an error, set this to the actual error location.
19634         (mono_method_to_ir): Report the correct error location if
19635         get_basic_blocks() returned an error.
19636
19637 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19638
19639         * mini.c (mono_type_blittable): OBJECT is not blittable.
19640         (mono_method_blittable): Methods which have marshalling descriptors
19641         are not blittable either. Fixes #47842.
19642
19643 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19644
19645         * driver.c mini.c: Use an environment variable instead of a global 
19646         variable. Also fix the build.
19647
19648         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19649         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19650         reporting this. 
19651
19652         * driver.c mini.c: Added --with-valgrind option to turn off some
19653         code which prevents mono from running under valgrind.
19654
19655         * mini.c (mono_emit_call_args): Fixed warning.
19656
19657         * mini.c (mono_emulate_opcode): Fixed warning.
19658
19659 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19660
19661         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19662         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19663         regalloc.c, regalloc.h: specify available registers in arch-specific
19664         code and support floats in the regallocator (patch by Laurent Morichetti 
19665         <l_m@pacbell.net>)
19666
19667 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19668
19669         * mini.c: mono_thread_current() can be called only after
19670         mono_runtime_init(): rearrange code to not call it early on.
19671
19672 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19673
19674         * mini.c: allocate jump tables in the code mempools.
19675
19676 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19677
19678         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19679         freed.
19680
19681 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19682
19683         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19684         12 to 16.  This fixes bug #47453.
19685
19686
19687 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19688
19689         * mini-ppc.c: fixed indexed load and unsigned compares.
19690
19691 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19692
19693         * mini.c: reenabled installation of handler for
19694           thread abort signal.
19695
19696 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19697
19698         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19699         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19700         until it's fixed and actually useful.
19701
19702 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19703
19704         * inssel-long32.brg: couple more opcodes implemented.
19705
19706 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19707         
19708         * mini-sparc.c: Even more opcodes implemeted.
19709
19710 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19711
19712         * mini-sparc.c: More opcodes implemented.
19713
19714 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19715
19716         * mini-sparc.c: More opcodes implemented.
19717
19718 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19719
19720         * inssel-sparc.brg: Add some needed rules.  Direct
19721         copy from PPC.
19722         * Makefile.am: Use inssel-sparc.brg
19723         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19724         an assert happy for now.
19725
19726 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19727
19728         * mini-sparc.c: Fixed compile errors.
19729         * exceptions-sparc.c: Same.  We now produce a mono binary 
19730         on sparc-linux.  Yea.
19731
19732 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19733
19734         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19735         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19736         They compile, but do not work.
19737
19738 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19739
19740         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19741         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19742         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19743         (ct@gentoo.org).
19744
19745 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19746
19747         * mini.c: more opcodes implemented and better support for generics.
19748
19749 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19750
19751         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19752         * mini.c, mini.h: first cut at generics support: some new instructions 
19753         added and changed the behaviour of some of the existing ones.
19754
19755 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19756
19757         * mini.c: Removed definition of metadata_shared mutex here.
19758
19759 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19760
19761         * mini-x86.c: make vararg calls work for instance methods.
19762
19763 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19764
19765         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19766         returns the arguments in a separte list, now.
19767
19768 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19769
19770         * aot.c, mini.c: updates for array type representation changes.
19771
19772 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19773
19774         * mini.c: register function to perform jit shutdown.
19775
19776 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19777
19778         * mini.c: use a faster allocator if possible.
19779
19780 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19781
19782         * aot.c: some cleanups and portability changes.
19783
19784 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19785
19786         * mini.c: use faster allocation for CEE_BOX if possible.
19787
19788 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19789
19790         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19791         Moved inlined mempcy code to its own function so that is can be
19792         reused. Added an inline memset function as well (optimized initobj).
19793         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19794
19795 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19796
19797         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19798
19799 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19800
19801         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19802         arch code can setup the cpu for CLR execution, if needed.
19803         We use it on x86 to set the precision of FP operations.
19804
19805 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19806
19807         * mini.c: disable some optimizations if we can guess they'll cost too
19808         much for a given method.
19809
19810 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19811
19812         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19813         
19814 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19815         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19816         info collection support.
19817
19818 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19819
19820         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19821         is now implemented in the profiling API. Get rid of a couple of
19822         unnecessary global variables.
19823
19824 2003-06-15  Nick Drochak <ndrochak@gol.com>
19825
19826         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19827         * cpu-g4.md: add op_bigmul and op_bigmul_un
19828         * cpu_pentium.md: add op_bigmul_un
19829         * inssel-long32.brg: add rule for unsigned bigmul
19830         * mini-ops.h: define OP_BIGMUL_UN
19831         * mini-x86.c: THE BUG: handle (un)signed properly
19832         * mini.c: choose unsigned opcode if needed.
19833         This set of patches fixes bug #44291
19834
19835 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19836
19837         * mini.c (optimize_branches): improved to handle all kinds of
19838         conditional branches.
19839
19840 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19841
19842         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19843         don't raise exceptions.
19844
19845 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19846
19847         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19848         to arch-specific files.
19849
19850 2003-06-09  Martin Baulig  <martin@ximian.com>
19851
19852         * Makefile.am (libs): Added $(LIBGC_LIBS).
19853
19854 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19855
19856         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19857         and OP_ATAN (fixes bug#44293).
19858
19859 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19860
19861         * Makefile.am, mini-x86.c: rename cpu description array to
19862         pentium_desc, since some compilers define the 'pentium' preprocessor
19863         symbol.
19864
19865 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19866
19867         * mini.c (mini_select_instructions): add explicit branch if the
19868         following block is not the false target of a conditional branch -
19869         we need this with any optimization that reorder or remove bblocks
19870
19871         * mini.c (optimize_branches): bug fixes
19872
19873 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19874
19875         * mini.c (mono_method_to_ir): inline static readonly fields
19876
19877         * ssa.c (fold_tree): start cfold support for long (very simple
19878         cases only)
19879
19880         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19881
19882 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19883
19884         * inssel.brg: fixed memcpy (bug #44219).
19885
19886 2003-06-05  Dick Porter  <dick@ximian.com>
19887
19888         * driver.c: Set the glib log levels to not abort if g_message
19889         recurses.
19890
19891         g_set_prgname() has to happen before mini_init() so that the
19892         process handle gets the info.
19893         
19894 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19895
19896         * driver.c: add intrins to the default optimizations to get wider
19897         exposure.
19898
19899 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19900
19901         * mini.h: some large basic blocks will overflow a 16-bit
19902         integers for symbolic registers.
19903
19904 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19905
19906         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19907         (mono_arch_output_basic_block): fix bug 43499 
19908
19909 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19910
19911         * mini.c: kill duplicated definition of mono_debug_format.
19912
19913 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19914
19915         * mini-x86.c, arrays.cs: fixed register allocation bug.
19916
19917 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19918
19919         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19920
19921         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19922
19923 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19924
19925         * mini.c:
19926         (print_method_from_ip): also print source location information if
19927         available.
19928
19929 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19930
19931         * mini.c (mono_find_block_region): bug fix in region code
19932         (mini_method_compile): enable removing unreachable code again, but
19933         only in methods without exception clauses.
19934
19935 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19936
19937         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19938         Implemented arglist opcode and handling of TypedReference type.
19939         Fixed x86 call convention when a structure is returned.
19940         Minimal support for calling static vararg methods.
19941
19942 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19943
19944         * mini.c (mini_method_compile):  always remove unreachable code,
19945         because the code in them may be inconsistent  (access to dead
19946         variables for example).
19947
19948 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19949
19950         * driver.c, debug-mini.c: warning fixes.
19951
19952 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19953
19954         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19955
19956 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19957
19958         * mini.c: thread-static fields are registered in mono_class_vtable(),
19959         so ensure the function is called before checking for them.
19960
19961 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19962
19963         * mini.c (optimize_branches): fix for bug 43586
19964
19965         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19966         overflow (fixes Bug #43639)
19967
19968 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19969
19970         * mini.c, objects.cs: allow the use of stobj for primitive types.
19971
19972 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19973
19974         * mini.c: be less strict about argument checking until we support
19975         running the verifier.
19976
19977 2003-05-27  Nick Drochak <ndrochak@gol.com>
19978
19979         * basic-long.cs: tests for (ulong)int * (ulong)int also
19980         * mini.c: use the same trick for (ulong)int * (ulong)int
19981
19982 2003-05-27  Nick Drochak <ndrochak@gol.com>
19983
19984         * basic-long.cs: add regression test for (long)int * (long)int
19985         * cpu-pentium.md: add op_bigmul specification
19986         * inssel-long32.brg: add OP_BIGMUL rule
19987         * mini-ops.h: add OP_BIGMUL
19988         * mini-x86.c: register allocator: handle case where src1 needs to be
19989         in EAX.
19990         * mini.c: substitute special BIGMUL opcode in the tree for 
19991         (long)int * (long)int
19992
19993 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19994
19995         * jit-icalls.c: call the type ctor on field access if needed.
19996
19997 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19998
19999         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20000         to a method (including results of ldelema, bug#43207).
20001
20002 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20003
20004         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20005         colors to show exception handler blocks.
20006
20007         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20008         (fix for pinvoke7.cs).
20009
20010 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20011
20012         * mini.h, mini.c: ensure correct initialization order for types that
20013         require it. Prepare for lazy compilation of jit icall wrappers.
20014         Provide a name for opcode emulation to reduce unneeded mallocing.
20015
20016 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20017
20018         * mini-x86.c: better register restoring code and profiling
20019         support for tail calls.
20020
20021 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20022
20023         * mini.h, driver.c: prepare for leaf methods optimization.
20024
20025 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20026
20027         * mini.c: get targets of branches before converting a method.
20028
20029 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20030
20031         * mini.c (optimize_branches): added some experimental code (disbaled) 
20032
20033 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20034
20035         * mini.c (optimize_branches): fix branch to branch optimization 
20036
20037         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20038
20039         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20040
20041         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20042
20043         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20044         if needed.
20045
20046 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20047
20048         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20049         enable use of interface variables again.
20050
20051         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20052         I1 to registers because there is no simply way to sign extend 8bit
20053         quantities in caller saved registers on x86.
20054
20055         * inssel-float.brg: set costs of some rules to 2 so
20056         that monobure always select the arch. specific ones if supplied,
20057         regardless of the order we pass the files to monoburg.
20058
20059 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20060
20061         * mini.c, mini-x86.c: since the magic trampoline for jumps
20062         can't patch the code directly, we do it as soon as the
20063         method gets compiled.
20064
20065 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20066
20067         * mini-x86.c, mini.h: introduce a new patching method
20068         to support CEE_JMP and tail calls.
20069         * mini.c: obey tail.call. Don't precompile methods target
20070         of CEE_JMP.
20071         * tramp-x86.c: new trampoline code to handle methods
20072         reached through a jump.
20073
20074 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20075
20076         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20077         bit values to registers
20078
20079 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20080
20081         * mini.c (mono_compile_get_interface_var): share interface
20082         variables if possible.
20083
20084 2003-05-16  Martin Baulig  <martin@ximian.com>
20085
20086         * debug-mini.c (mono_init_debugger): New function to initialize
20087         the debugger.  This is not in the debugger since it needs to
20088         access some of mini's internals.
20089
20090 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20091
20092         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20093
20094 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20095
20096         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20097         for value type handling.
20098
20099 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20100
20101         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20102         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20103
20104 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20105
20106         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20107           the constructor through a proxy.
20108
20109 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20110
20111         * jit-icalls.c, inssel.brg: fixes to array element address
20112         calculations.
20113
20114 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20115
20116         * mini-x86.c (is_regsize_var): allocate pointer to registers
20117
20118 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20119
20120         * driver.c: fixed typo, added intrins to the set of optimizations
20121         tested with regressions.
20122
20123 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20124
20125         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20126         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20127         test case.
20128
20129 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20130
20131         * inssel.brg: remove some common pop instructions without side effects
20132
20133 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20134
20135         * inssel-x86.brg: fixed thinko in int to double conversions.
20136
20137 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20138
20139         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20140
20141 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20142
20143         * inssel-long32.brg: two more missing instructions.
20144
20145 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20146
20147         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20148         if not already set.
20149
20150 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20153         correctly.
20154
20155         * basic-float.cs: Added tests for negative zero.
20156
20157 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20158
20159         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20160         a couple of missing operations for long casts, with test cases.
20161
20162 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20163
20164         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20165
20166 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20167
20168         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20169         code size estimation.
20170
20171 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20172
20173         * mini.c (mono_jit_create_remoting_trampoline): make it work with
20174         abstract methods (fix bug 42542)
20175
20176         * aot.c: add ability to handle array types
20177         
20178 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
20179
20180         * mini.c: Call the _specific versions of the object allocation
20181         functions if possible.
20182
20183 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20184
20185         * driver.c: call setlocale ().
20186
20187 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20188
20189         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
20190         windows build.
20191
20192 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20193
20194         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
20195
20196         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
20197         wrappers (fix bug 42122)
20198
20199 2003-05-04  Martin Baulig  <martin@ximian.com>
20200
20201         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
20202
20203         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
20204         s/mini_set_defaults/mono_set_defaults/g.
20205
20206 2003-05-04  Martin Baulig  <martin@ximian.com>
20207
20208         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
20209
20210 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20211
20212         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
20213         (reported by Don Roberts).
20214
20215 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20216
20217         * mini.c: temporarily work around two bugs for this release.
20218
20219 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20220
20221         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
20222         that contains -export-dynamic and it makes using the ld script
20223         useless.
20224         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
20225
20226 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20227
20228         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
20229         specific cpu.
20230
20231 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20232
20233         * mini.c: make sure leave calls all the needed finally blocks,
20234         even when the target jumps out of multiple exception clauses.
20235
20236 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20237
20238         * ldscript, Makefile.am: add linker script to reduce the number of
20239         exported symbols (should also fix the issues with libwine defining
20240         some of the same symbols in io-layer).
20241
20242 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
20243
20244         * driver.c (mini_main): Avoid assertion when no file name is given on 
20245         the command line.
20246
20247 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
20248
20249         * driver.c: added --version/-V command line option.
20250         Added the inline optimization in the regression tests.
20251
20252 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20253
20254         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
20255         to the type in the method signature (fixes bug#42134).
20256
20257 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
20258
20259         * mini.c: when inlining, check this is not null only when needed (bug #42135).
20260
20261 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
20262
20263         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
20264
20265 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20266
20267         * driver.c: fixed bug #42100.
20268
20269 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20270
20271         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
20272
20273 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20274
20275         * mini.c: moved most of the code required to do inlining to its own
20276         function so it can be reused. Inline also ctors if appropriate.
20277
20278 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20279
20280         * Makefile.am: Link with -export-dynamic so shared libs loaded by
20281         the runtime can call mono API functions.
20282
20283 2003-04-27  Martin Baulig  <martin@ximian.com>
20284
20285         * debug-mini.c (mono_debug_init_method): Added
20286         `guint32 breakpoint_id' argument; if the method has a breakpoint,
20287         send a notification to the debugger.
20288
20289         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
20290         running in the Mono Debugger, just pass the breakpoint number to
20291         mono_debug_init_method().
20292
20293         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
20294
20295 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
20296
20297         * mini.c: allow some more unsafe compares.
20298
20299 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20300
20301         * mini-x86.c, Makefile.am: make distcheck works (partially from
20302         a patch by Richard Lee <r.h.lee@attbi.com>).
20303         * regset.c, regset.h: removed, they are unused.
20304
20305 2003-04-25  Dick Porter  <dick@ximian.com>
20306
20307         * driver.c: Usage reports the name as 'mono' not 'mini'
20308         * exceptions-x86.c: Build and run on freebsd
20309
20310 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20311
20312         * Makefile.am: install the program with the 'mono' name and
20313         the library as libmono instead of mini and libmini.
20314
20315 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20316
20317         * driver.c: provide the APIs for the embedding interface of the old jit.
20318
20319 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
20320
20321         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
20322
20323 2003-04-23  Martin Baulig  <martin@ximian.com>
20324
20325         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
20326
20327         * driver.c: Added `--debug' command line argument to enable
20328         debugging support.
20329
20330 2003-04-23  Martin Baulig  <martin@ximian.com>
20331
20332         * debug.[ch]: Removed.  The code is now in
20333         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
20334
20335         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
20336         last six months.
20337
20338 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20339
20340         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
20341
20342 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20343
20344         * mini.c:
20345         (mini_cleanup): moved mono_runtime_cleanup call after the call to
20346         mono_domain_finalize.
20347         (mini_method_compile): use mono_method_profile* if the the option is
20348         enabled.
20349
20350 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20351
20352         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20353         methods with their wrapper.
20354
20355         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20356         methods with their wrapper.
20357
20358         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
20359         their wrapper.
20360
20361         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
20362         wrapper.
20363
20364         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
20365         methods.
20366
20367 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
20368
20369         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
20370
20371 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
20372
20373         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
20374         of the mempool. This is slightly faster and uses less memory
20375
20376 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20377
20378         * mini.c: avoid O(n) allocation for variables.
20379
20380 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20381
20382         * mini.c: handle items on the stack after inlining methods.
20383
20384 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20385
20386         * mini.c: make the method->opcode optimization dependent
20387         on MONO_OPT_INSTRINS and do it lazily.
20388
20389 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20390
20391         * driver.c: print overall results at the end of regression run.
20392
20393 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20394
20395         * inssel.brg: don't overwrite symbolic registers.
20396
20397 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20398
20399         * inssel-x86.brg: fix conversion from long to float.
20400
20401 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
20402
20403         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
20404
20405 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20406
20407         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
20408
20409         * driver.c: Added --print-vtable option as in the old JIT.
20410
20411 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20412
20413         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
20414
20415 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20416
20417         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
20418
20419 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * mini.c regalloc.c regalloc.h: Fix memory leak.
20422
20423 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
20424
20425         * aot.c (mono_aot_get_method): register all used strings
20426
20427 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20428
20429         * mini.c: always intern strings references with ldstr at compile time.
20430
20431 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20432
20433         * Makefile.am: add BUILT_SOURCES.
20434
20435 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20436
20437         * driver.c: give a better error message when the assembly to execute
20438         doesn't have an entry point.
20439
20440 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20441
20442         * Makefile.am: added hack for automake
20443
20444         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20445         correct sematics.
20446
20447         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20448
20449 22003-04-07  Martin Baulig  <martin@ximian.com>
20450
20451         * Makefile.am: Added Makefile.am.
20452
20453         * debugger-main.c: Removed, this is now in the debugger where it
20454         belongs.
20455
20456         * mini.pc.in: Call this package `mini' for the moment.
20457
20458
20459
20460
20461
20462
20463
20464
20465
20466
20467
20468
20469
20470
20471