2009-04-16 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5
6 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7
8         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
9         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
10
11         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
12
13         * liveness.c (visit_bb): Remove a needless assert.
14
15 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
16
17         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
18         full aot support to the arch specific code.
19
20         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
21
22         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
23
24         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
25         
26         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
27         collect information about the delegate invoke impl trampolines.
28
29         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
30         to save trampolines during full-aot mode.
31
32         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
33         creation function which returns a trampoline which sets the rgctx
34         argument.
35         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
36         wrapper if possible.
37         (mono_delegate_trampoline): Ditto.
38
39         * mini.c (mono_jit_runtime_invoke): Ditto.
40
41         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
42         
43         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
44
45         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
46         
47 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
48
49         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
50         just setting the opcode to OP_NOP.
51
52 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
53
54         * mini.c (mini_method_compile): Put the last change inside an 
55         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
56         
57         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
58         and extend live ranges to cover the whole method when using xdb.
59
60         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
61         do it in the trampolines.
62
63         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
64         needed.
65
66         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
67         
68         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
69         call code in full-aot mode since IMT is disabled there.
70         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
71         new JIT no longer has that restriction.
72
73         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
74
75         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
76         a more compact format.
77         (mono_aot_wrapper_name): New function to return a unique name for a
78         wrapper method, also used by the AOT runtime.
79
80         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
81         aot-compiler.c.
82
83         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
84         when a ICollection<T> etc is encountered.
85         (add_generic_instances): Process method arguments/locals too.
86         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
87         trampoline names.
88
89         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
90         
91 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
92
93         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
94
95         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
96
97         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
98         representing the result of the decomposition. Nullify instructions
99         instead of setting them to OP_NOP since nops can't have registers
100         set.
101
102 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
103
104         * aot-compiler.c (mono_compile_assembly): Split this huge function into
105         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
106         info. Strip 'mapping symbols' on ARM.
107
108         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
109         
110         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
111         this with the native genmdesc.
112
113 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
114
115         * aot-runtime.c:  Fixing the MSVC build.
116
117         Code is contributed under MIT/X11 license.
118
119 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
120
121         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
122         JITted code depends on it.
123
124 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
125
126         * aot-compiler.c: Use new MonoGenericParam accessors.
127
128 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
129
130         Reduce memory usage and improve correctness wrt MonoGenericParam
131         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
132         handing.  Avoid allocating MonoGenericParams, but use the ones in
133         the container itself.
134
135 2009-04-07  Miguel de Icaza  <miguel@novell.com>
136
137         * tasklets.c: Return exceptions in the out argument.
138
139 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
140
141         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
142         opcode. Use pointer types in more places instead of casting them to 
143         integers.
144
145         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
146         optimizations.
147         (mono_llvm_optimize_method): New helper function to optimize a method.
148
149         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
150         widening code so it could be called from more places.
151         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
152         code paths in the call opcodes.
153
154 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
155
156         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
157
158 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
159
160         * dwarfwriter.c: Use _ to separate class name 
161         components as gdb can't handle '.'. Represent reference variables
162         as 'class <NAME>&'.
163         
164         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
165
166         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
167         
168         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
169
170         * gc-test.cs: New file with GC stack marking tests.
171         
172         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
173         negative numbers for vfp.
174
175         * basic-float.cs: Add a test.
176         
177 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
178
179         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
180
181 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
182
183         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
184         part of tasklet/continuation support.
185
186 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
187
188         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
189         amd64 opcodes inside an ifdef.
190
191         * dwarfwriter.c: Emit inheritance information for classes, emit fields
192         of complex types.
193         
194         * dwarfwriter.c (emit_type): Emit the class info for classes.
195
196 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
197
198         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
199
200         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
201
202         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
203
204         * ssa.c (mono_ssa_compute): Fix some memory leaks.
205
206 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
207
208         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
209
210         * mini-llvm.c: Update comments.
211
212         * mini.h (COMPILE_LLVM): New macro.
213
214         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
215
216         * ssa.c (mono_ssa_compute): Ditto.
217         
218         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
219         the unwind ops from a DWARF FDE.
220
221         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
222         methods by extracting the dwarf unwind ops from the unwind info generated
223         by LLVM.
224         
225         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
226         calls.
227
228         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
229         addressing modes.
230
231 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
232
233         * Makefile.am (llvm_sources): Enable this.
234
235         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
236         failing back to the JIT if something cannot be handled.
237
238         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
239         compiling with LLVM.
240
241         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
242         compiling with LLVM.
243
244         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
245         compiling with LLVM.
246
247         * mini-ops.h: Add a few opcodes needed by LLVM.
248
249         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
250         has no unwind info.
251
252         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
253         backend.
254
255         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
256
257         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
258
259 2009-04-01  Mark Probst  <mark.probst@gmail.com>
260
261         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
262         ridiculously large methods.
263
264 2009-03-31  Martin Baulig  <martin@ximian.com>
265
266         * debug-debugger.c (debugger_remove_breakpoint): Call
267         mono_debugger_remove_class_init_callback ().
268
269 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
270
271         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
272         right before emitting code, not at the start.
273
274         * mini.c (mono_postprocess_patches): Extract this into a separate function
275         from mono_codegen ().
276
277         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
278         byref types correctly.
279
280 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
281
282         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
283         by the last change.
284
285 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
286
287         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
288         indirect calls, this avoids problems where get_vcall_slot () would get
289         confused by the native code for the instruction preceeding the call.
290         (mono_arch_get_vcall_slot): Simplify this.
291         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
292
293         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
294         register allocator now seems to depend on them instead of the data in
295         cpu-<ARCH>.md.
296
297         * mini.c (mini_method_compile): Throw the correct type of exception if
298         mono_method_get_header () fails because of a loading error.
299
300 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
301
302         * mini.c (mini_method_compile): Clear the loader error if the method
303         header cannot be decoded.
304
305         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
306         interface methods on proxies correctly.
307
308         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
309         this argument for vtype methods. Add precise liveness info for arguments.
310
311         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
312         LIVERANGE_START/END opcodes.
313
314         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
315         for arguments and values in registers.
316
317 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
318
319         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
320         return a valuetype. Fixes #487518.
321
322         * iltests.il: Add a test.
323         
324         * aot-compiler.c: Use mono_thread_create () to create helper threads.
325
326         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
327         closed over a null reference correctly.
328
329 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
330
331         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
332
333 2009-03-25  Mark Probst  <mark.probst@gmail.com>
334
335         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
336         allocated to the same registers as fixed sregs.
337
338 2009-03-24  Mark Probst  <mark.probst@gmail.com>
339
340         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
341         ATOMIC_CAS_IMM ops.
342
343         * method-to-ir.c: Handle more cases for
344         Interlocked.CompareExchange.
345
346         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
347         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
348         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
349
350 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
351
352         * aot-runtime.c (decode_method_ref): Fix a warning.
353
354         * unwind.c (mono_unwind_frame): Ditto.  
355
356 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
357
358         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
359         (mono_compile_assembly): Enable the binary writer for full-aot as well.
360
361         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
362         fix the handling of large values in the ALU_PC_G0_NC relocation.
363
364 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
365
366         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
367
368 2009-03-22  Mark Probst  <mark.probst@gmail.com>
369
370         * method-to-ir.c (mono_spill_global_vars): Support for ternary
371         ops.
372
373 2009-03-22  Mark Probst  <mark.probst@gmail.com>
374
375         * method-to-ir.c: MINI_OP3 needs a comma.
376
377         * method-to-ir.c, mini.h, mini.c: Remove
378         mono_init_op_sreg_counts ().
379
380 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
381
382         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
383         OP_JMP.
384         
385         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
386         assertion.
387
388         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
389
390         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
391         code somewhat.
392
393 2009-03-21  Mark Probst  <mark.probst@gmail.com>
394
395         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
396         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
397         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
398         operations.
399
400 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
401
402         * driver.c: Change location of gc_wrapper.h.
403
404         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
405         inside finally clauses correctly. Fixes #485721.
406
407         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
408         after the change above.
409
410         * exceptions.cs: Add a test.
411         
412 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
413
414         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
415
416         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
417         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
418         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
419
420         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
421         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
422
423 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
424
425         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
426         Simplify logic for ensure_method_is_allowed_to_call_method. 
427         Handle wrappers on callers.
428
429 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
430
431         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
432         them don't run yet.
433
434         * basic-simd.cs: Fix the names of some test methods.
435
436 2009-03-18  Geoff Norton  <gnorton@novell.com>
437
438         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
439
440 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
441
442         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
443
444 2009-03-17  Jb Evain  <jbevain@novell.com>
445
446         * driver.c: remove now uneeded call to mono_gc_base_init before
447         mono_profiler_load.
448
449 2009-03-17  Jb Evain  <jbevain@novell.com>
450
451         * dwarfwriter.c (token_handler): handle more cases.
452
453 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
454
455         * method-to-ir.c: Remove more dead code (that was required only
456         because of method_is_safe). Fix compiler warnings.
457
458 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
459
460         * method-to-ir.c: Remove unneeded/useless method_is_safe
461         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
462
463 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
464
465         * mini.c (mini_method_compile): Print the method been compiled with
466         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
467         for people not familiar with the runtime.
468
469 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
470
471         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
472         a managed object which is later put into a GList. Return its class instead.
473
474         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
475         stack slots when using sgen.
476
477 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
478
479         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
480
481 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
482
483         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
484         > so it works on the first vreg as well.
485
486 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
487
488         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
489         trigger randomly.
490
491         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
492         
493         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
494         implement GArray.
495
496 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
497
498         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
499         native->IL offset mapping.
500
501 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
502
503         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
504
505         * basic.cs: Add a test.
506
507 2009-03-11  Mark Probst  <mark.probst@gmail.com>
508
509         * mini-x86.c (mono_arch_output_basic_block): Use different
510         registers in case the ones we want to overwrite are used by the
511         other operand.  Fixes regression in #480807.
512
513 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
514
515         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
516
517         * dwarfwriter.c (emit_line_number_info): The line number info for
518         IL code was off by one. Fix that.
519
520         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
521         stack.
522
523 2009-03-09  Mark Probst  <mark.probst@gmail.com>
524
525         Contributed under the terms of the MIT/X11 license by Steven
526         Munroe <munroesj@us.ibm.com>.
527
528         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
529         Fixes #483462.
530
531 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
532
533         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
534         as well.
535
536 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
537
538         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
539         the delegate ctor handling code. Fixes #482638.
540         
541         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
542         #481458.
543
544         * iltests.il.in: Add a test.
545         
546         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
547         mini-posix.c.
548
549 2009-03-05  Mark Probst  <mark.probst@gmail.com>
550
551         * mini-trampolines.c (mono_create_jump_trampoline): If the method
552         is shared generic code, return the trampoline, even if the method
553         has already been compiled.  Fixes #479763.
554
555         * mini.c, mini.h: New function
556         mono_jit_find_compiled_method_with_jit_info() which is the same as
557         mono_jit_find_compiled_method() but also returns the jit info.
558
559 2009-03-05  Mark Probst  <mark.probst@gmail.com>
560
561         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
562         for methods which actually have one.  For all other methods, make
563         sure the this argument var is live the whole method.
564
565         * mini.c (mini_method_compile): Every shared method has a
566         this/vtable/mrgctx info.  Fixes #480807.
567
568 2009-03-05  Mark Probst  <mark.probst@gmail.com>
569
570         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
571         generic/imt thunks where some entries branch through the vtable,
572         while other entries branch directly.
573
574 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
575
576         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
577
578         * mini-windows.c: Ditto.
579         
580         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
581         ctors.
582
583 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
584
585         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
586         down an assert.
587
588 2009-03-04  Mark Probst  <mark.probst@gmail.com>
589
590         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
591         #481403.
592
593 2009-03-04  Mark Probst  <mark.probst@gmail.com>
594
595         * exceptions-x86.c: Include debug-mini.h - fixes build.
596
597 2009-03-04  Martin Baulig  <martin@ximian.com>
598
599         * debug-mini.c: Clean up the exception API and add documentation.
600         (mono_debugger_handle_exception): New public method; this is
601         called when throwing an exception or encountering an unhandled one.
602         (mono_debugger_call_exception_handler): Formerly known as
603         mono_debugger_handle_exception(); this is used to tell the
604         debugger that we're about to invoke an exception handler.
605
606 2009-03-04  Martin Baulig  <martin@ximian.com>
607
608         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
609         ../metadata/mono-debug-debugger.c; save and reset exception state.
610
611 2009-03-02  Martin Baulig  <martin@ximian.com>
612
613         * debug-mini.c: Moved the debugger exception handling here from
614         ../metadata/mono-debug-debugger.c.
615
616         * debug-mini.h
617         (MonoDebuggerExceptionAction): New exception typedef.
618
619         * debug-mini.c
620         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
621
622         * exceptions-amd64.c
623         (mono_amd64_throw_exception): Use the new debugger exception
624         handling code.
625
626         * mini-exceptions.c
627         (mono_handle_exception_internal): Don't call
628         mono_debugger_unhandled_exception() here.
629
630 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
631
632         * mini.c aot-compiler.c: Update after the changes to 
633         mono_marshal_get_runtime_invoke ().
634
635         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
636         Virtual generic methods might not have method->slot set, work around
637         that.
638
639         * generics.cs: Add a test.
640
641 2009-03-02  Geoff Norton  <gnorton@novell.com>
642
643         * mini.c:
644         * driver.c: Allow signal chaining of SIGFPE as well.
645
646 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
647
648         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
649         this since it now receives the method not its generic context in the
650         IMT reg.
651
652         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
653         generic/imt thunks where some entries branch through the vtable, while
654         other entries branch directly.
655
656         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
657
658         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
659         support for interface methods as well.
660
661         * mini-trampolines.c: Add support for virtual generic methods in interfaces
662         using the normal IMT thunks.
663
664         generics.cs: Add new tests.
665         
666         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
667         the generic inst to the generic imt thunks. This fixes AOT support, 
668         improves consistency with the normal IMT thunks, and makes it easier to
669         add support for interface generic virtual methods later.
670
671         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
672         
673 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
674
675         * driver.c (mono_set_signal_chaining): New public API function to enable
676         signal chaining on POSIX platforms.
677
678         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
679         (si@lindenlab.com) to implement signal chaining. The original patch was
680         contributed under the MIT X/11 license:
681         https://bugzilla.novell.com/show_bug.cgi?id=318894
682
683 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
684
685         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
686         too until it can be made to run on amd64.
687
688 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
689
690         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
691         to  get_generic_context_from_code () + get_call_info () if possible.
692
693 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
694
695         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
696         suspend-on-sigsegv functionality.
697
698         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
699         to suspend when a native SIGSEGV is received. This is useful for debugging
700         crashes which don't happen under gdb, since a live process contains more
701         information than a core file.
702
703         * mini-exceptions.c (mono_print_thread_dump): Use 
704         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
705
706         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
707
708         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
709         
710         * basic-float.cs: Disable the tests which currently fail on amd64.
711
712         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
713         value to mono_arch_patch_callsite () to fix crashes.
714         
715         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
716
717 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
718
719         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
720         nop code by patching the call address to point to the nullified class init
721         trampoline, as the former does not seem to be safe on SMP machines.
722
723 2009-02-23  Mark Probst  <mark.probst@gmail.com>
724
725         * mini-ops.h: Fix the argument types for a few x86 opcodes where
726         they were wrong.
727
728 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
729
730         * basic-float.cs basic-calls.cs: Fix warnings.
731
732 2009-02-22  Mark Probst  <mark.probst@gmail.com>
733
734         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
735         correct frame pointer in the LMF.  Should fix #478394.
736
737 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
738
739         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
740
741         * image-writer.c: Make the binary writer less verbose.
742
743 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
744
745         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
746         are called from runtime invoke wrappers.
747
748 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
749
750         * cpu-ppc.md (store_memindex): Increase the size of this.
751
752 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
753
754         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
755
756         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
757
758         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
759         OP_LCONV_TO_R_UN.
760
761         Last fix for of #467201.
762
763
764 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
765
766         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
767
768         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
769         and long_conv_to_r8_2:
770
771         Fixed part of #467201.
772
773 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
774
775         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
776
777         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
778         conversion to 32 bits.
779
780         * cpu-x86.md: Increase the size of int_conv_to_r4.
781
782         * basic-float.cs: Add a test for this.
783
784         Fixed part of #467201.
785
786 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
787
788         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
789
790         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
791         conversion to 64 bits.
792
793         * basic-float.cs: Add a test for this.
794
795         Fixed part of #467201.
796
797 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
798
799         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
800
801         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
802         This behavior is compatible with MS.
803
804         * iltest.il.in: Add a test for this.
805
806         Fixed part of #467201.
807
808 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
809
810         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
811
812         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
813         change the precision of the value.
814
815         * cpu-x86.md: Define len for float_conv_to_r4.
816
817         * basic-float.cs: Add a test for this.
818
819         Fixed part of #467201.
820
821 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
822
823         * mini.c: Adjust locking order to the new semantics where the loader lock
824         comes first.
825
826 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
827
828         * aot-runtime.c:
829         * mini-amd64.c:
830         * mini-arm.c:
831         * mini-ia64.c:
832         * mini-mips.c:
833         * mini-ppc.c:
834         * mini-sparc.c:
835         * mini-trampolines.c:
836         * mini-x86.c:
837         * mini.c:
838         * tramp-alpha.c:
839         * tramp-amd64.c:
840         * tramp-arm.c:
841         * tramp-hppa.c:
842         * tramp-ia64.c:
843         * tramp-mips.c:
844         * tramp-ppc.c:
845         * tramp-s390.c:
846         * tramp-s390x.c:
847         * tramp-sparc.c:
848         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
849
850 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
851
852         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
853         as it is incorrect.
854
855 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
856
857         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
858         for cctors if needed.
859
860 2009-02-17  Mark Probst  <mark.probst@gmail.com>
861
862         * mini-ppc.c: Fix build on Darwin.
863
864 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
865
866         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
867         version instead of 3 as valgrind doesn't like version 3.
868
869         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
870
871         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
872         usable for hashing methods.
873         (emit_extra_methods): Use the new hash to avoid putting every method in the
874         same hash bucket.
875
876         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
877
878         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
879         whenever a method ref could match a method.
880         
881         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
882         test to fail.
883         
884         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
885         methods refs.
886
887         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
888
889         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
890         the encoding buffer.
891
892         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
893         mono_method_get_header () on inflated methods as an optimization.
894
895 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
896
897         * ssa.c (fold_ins): Fix another crash if the instruction following the
898         switch was optimized away.
899
900 2009-02-16  Mark Probst  <mark.probst@gmail.com>
901
902         Contributed under the terms of the MIT/X11 license by Steven
903         Munroe <munroesj@us.ibm.com>.
904
905         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
906
907 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
908
909         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
910         around the mono_domain_alloc calls, it is now done by the functions
911         themselves.
912
913         * aot-compiler.c (compile_method): Only add wrappers referenced by
914         the method if compiling with full AOT.
915         (mono_compile_assembly): Error out if --aot=full is specified on
916         a platform where it is not supported.
917
918         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
919         on ARM too.
920
921         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
922         AOT support.
923
924         * aot-runtime.c (load_named_code): Handle 
925         mono_arm_throw_exception_by_token.
926
927         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
928
929         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
930         unaligned.
931
932         * Makefile.am (fullaotcheck): Exit if a test fails.
933
934         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
935         on ARM.
936         (mono_compile_assembly): Handle the assembler failing.
937
938         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
939         accepting subsections of .bss.
940
941         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
942         was optimized away.
943
944         * aot-compiler.c: Remove some unused includes.
945         
946         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
947         now in MonoImageWriter.
948
949         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
950         code sequence which matches a non-virtual call. Fixes #472654.
951
952 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
953
954         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
955         xdebug code.
956         
957         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
958         use the image/dwarf writers directly.
959
960         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
961         field.
962
963         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
964         MonoDwarfWriter.
965
966         * image-writer.h: Fix some typos.
967
968         * dwarfwriter.h dwarfwriter.c: New files.
969         
970         * aot-compiler.c: Extract the DWARF info writing functionality into a 
971         separate module.
972
973         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
974         argument to return unwind info.
975
976         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
977
978         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
979         
980         * aot-runtime.c (decode_method_ref): Add a case for 
981         MONO_AOT_METHODREF_WRAPPER_NAME.
982
983         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
984         for AOT.
985
986         * aot-compiler.c (encode_method_ref): Use the new constants.
987
988         * aot-runtime.c (decode_method_ref): Ditto.
989
990         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
991         be compiled, not the icall itself.
992
993 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
994
995         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
996         using decode_method_ref ().
997
998         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
999         convert it to an in32. Fixes #475859.
1000
1001         * arrays.cs: Add a test.
1002
1003 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
1006         OP_LCONV_TO_U2.
1007
1008         * basic-long.cs: Add a test.
1009
1010 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1011
1012         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
1013         remove the frame pointer in leaf methods which don't receive any
1014         arguments, don't throw exceptions and don't do dynamic stack
1015         allocations.
1016
1017 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1018
1019         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
1020         the fail_tramp changes. Hopefully fixes #475132.
1021
1022 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1023
1024         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
1025         instead of mono_metadata_signature_dup_full.
1026
1027 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
1030         for processing jump tables. Fixes #473787.
1031
1032 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1033
1034         * mini-generic-sharing.c: mini_method_get_context() just calls
1035         mono_method_get_context_general() now.
1036
1037         * mini.c, mini.h: Moved get_object_generic_inst(),
1038         construct_object_context_for_method() and
1039         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
1040
1041 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1042
1043         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
1044         basic block fell through to its successor bblock without a branch. Fixes
1045         #474718.
1046
1047         * iltests.il.in: Add a test.
1048         
1049         * aot-compiler.c (encode_method_ref): Encode methods of array types.
1050         (can_encode_patch): We can now handle arrays of generic parameters and
1051         array methods.
1052
1053         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
1054
1055         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
1056         the AOT file to avoid some #ifdefs in aot-runtime.c
1057
1058         * mini.h: Bump AOT file format version.
1059
1060 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1061
1062         * Makefile.am (fullaotcheck): Make this run the tests.
1063
1064         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
1065
1066 2009-02-10  Mark Probst  <mark.probst@gmail.com>
1067
1068         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
1069         individually.  Fixes #473482.
1070
1071 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1072
1073         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
1074
1075 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
1076
1077         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
1078         (mono_compile_assembly): Hush compile warnings about
1079         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
1080         code path.
1081
1082 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
1085
1086         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
1087
1088         * aot-compiler.c: Fix arm support.
1089
1090         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
1091         img_writer_emit_unset_mode () function.
1092
1093         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
1094         (mono_unwind_get_dwarf_pc_reg): Ditto.
1095
1096         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
1097         Move almost all platform specific code to a set of arch_ functions, 
1098         and document them to ease porting.
1099         
1100         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
1101
1102         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
1103
1104         * aot-compiler.c: Extract the image writing functionality into a separate
1105         module to reduce the size of this file.
1106
1107 2009-02-09  Geoff Norton  <gnorton@novell.com>
1108
1109         * mini-s390.c: Fix the signature of emit_sig_cookie.
1110
1111 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
1114
1115         * aot-runtime.c (is_shared_got_patch): Ditto.
1116
1117         * aot-runtime.c (load_named_code): Cope with the fact that 
1118         decode_got_entry () won't decode the patch fully if its corresponding got
1119         entry is already filled.
1120         
1121         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
1122         Initialize *ji.
1123         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1124
1125         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
1126         as the moving pointer instead of 'buf' for consistency with the rest of the
1127         codebase.
1128         (mono_arch_create_monitor_exit_trampoline): Ditto.
1129
1130         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
1131         generic_class_init trampolines.
1132         (add_generic_class): Extract some code from add_generic_instances () into a
1133         separate function so it can be called from other places too.
1134         (compile_method): Call add_generic_class () for the classes of inflated methods
1135         referenced by the method.
1136         (can_encode_patch): Allow references to generic parameters.
1137
1138         * aot-runtime.c: Add support the patches required by the new trampolines.
1139         
1140         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
1141         support.
1142
1143         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
1144         full-aot support.
1145
1146         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
1147         this from get_throw_pending_exception, make the signature full aot compatible.
1148
1149         * Makefile.am (fullaotcheck): New target to run full-aot tests.
1150
1151         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
1152
1153         * exceptions.cs: Add a test.
1154
1155 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1158         use the DWARF_DATA_ALIGN constant instead.
1159
1160         * exception-<ARCH>.c: Update after the above change.
1161
1162         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1163         dwarf unwinder.
1164
1165         * mini-arm.c: Enable the dwarf unwinder.
1166
1167         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1168         instead of mono_class_setup_vtable ().
1169
1170 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1171
1172         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1173         dwarf unwinder.
1174
1175         * mini-x86.h: Enable the dwarf unwinder.
1176
1177 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1178
1179         Fix mcs/tests/test-7.cs
1180         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1181         2009-02-03.
1182
1183 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * mini.c (print_jit_stats): Remove some unused statistics.
1186
1187 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1190
1191 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1192
1193         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1194         the method we get from mono_object_get_virtual_method() because
1195         that function does it properly, now.
1196
1197 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1198
1199         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1200         opcodes. Fixes #472775.
1201
1202 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1203
1204         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1205         fact that mono_find_jit_info() sometimes returns the context
1206         corresponding to the jit info in new_ctx.  Fixes #472600.
1207
1208 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1209
1210         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
1211         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
1212         klass->enum_basetype directly.
1213
1214         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
1215         enum subtypes.
1216
1217         * unwind.c: Avoid 0 sized arrays.
1218
1219 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1220
1221         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1222         size on systems with 64k pages. Fixes #471389.
1223
1224 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1225
1226         Contributed under the terms of the MIT/X11 license by Steven
1227         Munroe <munroesj@us.ibm.com>.
1228
1229         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1230         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1231         necessary.
1232
1233 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1234
1235         Contributed under the terms of the MIT/X11 license by Steven
1236         Munroe <munroesj@us.ibm.com>.
1237
1238         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1239         comparison fix.
1240
1241         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1242         The trampoline can be longer on PPC64.
1243
1244 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1245
1246         Contributed under the terms of the MIT/X11 license by Steven
1247         Munroe <munroesj@us.ibm.com>.
1248
1249         * mini-ppc.c: Compiler warning fixes and trivial code
1250         simplifications.
1251
1252 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1255         ins->dreg which could be a hardware register, not a vreg.
1256
1257         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1258         
1259         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1260         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1261
1262         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1263         
1264         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1265         ->dreg, that is not the vreg we are looking for.
1266
1267         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1268
1269         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1270         LIVERANGE_END.
1271
1272         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1273         strange crashes.
1274
1275 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1276
1277         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1278
1279         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1280         the line diff is 0.
1281
1282         * aot-compiler.c: Add xdebug support on x86.
1283
1284         * unwind.c: Add x86 support.
1285         
1286         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1287         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1288
1289         * mini.c (mini_method_compile): Ditto.
1290         
1291         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1292         the variable index.
1293
1294         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1295         which mimic .push_section/.pop_section in GAS.
1296         
1297         * aot-compiler.c: Emit precise live range information for variables.
1298
1299         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1300
1301         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1302         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1303         them.
1304
1305         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1306         the live ranges of variables.
1307
1308         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1309         of the variable in terms of native offsets.
1310
1311 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1312
1313         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1314         
1315 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1316
1317         Contributed under the terms of the MIT/X11 license by Steven
1318         Munroe <munroesj@us.ibm.com>.
1319
1320         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1321         order (offset then base reg) for ppc_load_multiple_regs.
1322         (emit_save_saved_regs) Correct operand order for
1323         ppc_store_multiple_regs.
1324         (mono_arch_get_call_filter): Correct operand order for
1325         ppc_load_multiple_regs.
1326
1327         * mini-ppc.c (emit_memcpy): Fix operand order for
1328         ppc_load_reg_update and ppc_store_reg_update.
1329         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1330         (mono_arch_emit_epilog): Correct operand order for
1331         ppc_load_multiple_regs.
1332
1333         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1334         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1335
1336 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1337
1338         * cpu-ppc64.md: Fixed storer4_memindex length.
1339
1340 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1341
1342         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1343         line number info.
1344         
1345         * aot-compiler.c (emit_line_number_info): Optimize this.
1346
1347 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1348
1349         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1350         
1351         * aot-compiler.c: Add debug info for methods without debug info by
1352         emitting an IL file and having the line number info referencing that file.
1353
1354         * aot-compiler.c: Optimize the size of the generated line number info.
1355
1356         * aot-compiler.c: Emit line number info in xdebug mode.
1357
1358         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1359         million arguments.
1360
1361 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1362
1363         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1364
1365         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1366         is used.
1367
1368 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1369
1370         * basic-calls.cs: Test for the weird crash found on arm.
1371         
1372 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1373
1374         * cpu-arm.md: Increase the size of storer8_membase_reg and
1375         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1376
1377         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1378         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1379         reg to LR otherwise we'll be loading/storing from just the offset.
1380
1381 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1382
1383         Question: if we are storing gint32's inside the "*native_offset",
1384         should we change the signature to "gint32 *native_offset" to
1385         ensure that we do not have type definition problems?
1386         
1387         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1388         an int * as this is what the other function expects, causes
1389         problems with Freescale's compiler that defined int32_t to be a
1390         long and makes int incompatible 
1391
1392 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1393
1394         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1395         filename conflict with bjam.
1396
1397 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1398
1399         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1400         as it might use decomposed ops.
1401
1402 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1405
1406         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1407         is defined.
1408
1409         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1410
1411         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1412         offsets.
1413
1414         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1415         way registers are stored in MonoContext on arm.
1416
1417         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1418         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1419
1420         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1421
1422         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1423
1424         * mini.c (mini_init): Register mono_isfinite.
1425
1426         * jit-icalls.c (mono_isfinite): New jit icall.
1427
1428         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1429         
1430         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1431         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1432         the parent frame.
1433
1434 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1435
1436         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1437         separate frame and stack pointers, so we must use FP to find the register
1438         spill area.
1439         The FP reg is retrieved from the MonoContext::regs array.
1440
1441 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1442
1443         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1444         as FPA requires it.
1445
1446 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1447
1448         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1449         return R4 and R8 when not running under softfloat.
1450
1451         Fixes basic-calls.exe
1452
1453 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1454
1455         * mini-arm.c: Implement some overflow opcodes.
1456
1457 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1458
1459         * ssa.c: handle another alloca.h
1460
1461         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1462         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1463         MONO_ARCH_USE_SIGACTION. 
1464
1465         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1466         capability defines.
1467
1468         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1469
1470         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1471         PPC targets as sigaction does not exist on all platforms, define
1472         this on a per-platform basis.
1473
1474         Instead of erroring out if the platform is not defined, include
1475         mini-ppc-os.h, and expect that the OS specific setting provides
1476         the required information.   
1477
1478 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * aot-compiler.c: Fix --enable-minimal=aot.
1481
1482 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1483
1484         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1485         previous change.
1486
1487 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * exceptions-arm.c: Fix warnings.
1490
1491         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1492         ARM.
1493
1494         * mini-x86.c: Fix --enable-minimal=jit build.
1495
1496         * mini.c: Really fix --enable-minimal=jit build.
1497         
1498         * mini.c (construct_object_context_for_method): Move this outside
1499         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1500
1501         "Backported" of r124984 from 2.0 branch.
1502         
1503         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1504
1505         "Backport" of r124977 + r124978 from 2.0 branch.
1506         
1507         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1508         to avoid calling mono_exception_from_token () from the throw trampoline.
1509         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1510         for throwing corlib exceptions, this fixes full-aot support for corlib
1511         exceptions.
1512
1513         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1514
1515 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1516
1517         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1518         part of the changes to split the code in mini into operating
1519         system specific files.
1520
1521         This patch was done by copying mini.c to the respective files to
1522         preserve SVN history.
1523
1524 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1527
1528 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1531         remoting-invoke-with-check wrappers of shared methods.
1532
1533         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1534
1535 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1536
1537         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1538         optimization if the top of stack is the last instruction in the
1539         bblock.  Otherwise it might have been used after its definition.
1540         Fixes #469742.
1541
1542 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1545         method as well when get_vcall_slot () fails to match a code sequence.
1546
1547         * mini-arm.c: Fix the android build, which doesn't have
1548         __aeabi_read_tp.
1549
1550 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1553         the s390x build.
1554
1555 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1556
1557         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1558
1559 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1562         and put its id into jinfo->used_regs. This is only used on amd64,
1563         which is currently the only platform generating unwind info.
1564
1565         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1566         the dwarf unwinder. This is required to correctly handle async exceptions
1567         like thread abort and stack overflows, which can happen while a method
1568         is in the middle of its prolog or epilog.
1569         
1570         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1571         the unwind info belonging to an AOTed method.
1572
1573         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1574         into cfg->unwind_ops.
1575         
1576         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1577
1578         * mini.c (mini_init): Call mono_unwind_init ().
1579         (mini_cleanup): Call mono_unwind_cleanup ().
1580
1581         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1582         unwind info to be shared between methods.
1583
1584         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1585         saved in the LMF.
1586
1587         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1588         get_throw_pending_exception () to avoid initialization races.
1589
1590         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1591         mono_arch_exceptions_init () function.
1592
1593         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1594
1595 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * mini.c (mono_get_domain_intrinsic): New helper function.
1598         (mono_get_thread_intrinsic): Ditto.
1599
1600         * mini-arm.c mini-ia64.c: Use the new helper functions.
1601         
1602         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1603         the last constrained_call change, since it is needed in the non-AOT
1604         case as well.
1605
1606         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1607         
1608         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1609         mono_get_lmf_addr () on arm eabi linux.
1610
1611 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1614         code sequence which matches a non-virtual call.
1615
1616 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1617
1618         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1619         stack pointer (r1).
1620
1621 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1622
1623         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1624         runtime-invoke wrappers, since they are also shared based on signature.
1625
1626 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1627
1628         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1629         info from the (correct) context.
1630
1631 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1634         
1635         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1636         using dwarf unwinding info. Not yet used.
1637
1638         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1639
1640 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1641
1642         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1643         descriptors.
1644
1645         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1646         special case and handle mono_arch_delegate_invoke_impl() returning
1647         function descriptors.
1648
1649         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1650         trampolines return function descriptors, too.
1651
1652 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1655         out_of_line optimization.
1656
1657 2009-01-21  Martin Baulig  <martin@ximian.com>
1658
1659         * mini.h
1660         (MonoCompile): Added `disable_deadce_vars' to disable removing
1661         unused variables.
1662
1663         * mini.c
1664         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1665         inside the debugger.
1666
1667         * liveness.c (mono_analyze_liveness): Don't remove any unused
1668         variables if `cfg->disable_deadce_vars' is set.
1669
1670 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1671
1672         * method-to-ir.c: Only apply exception constructor optimization if
1673         the the method actually belongs to an exception class.  Fixes
1674         #467456.
1675
1676 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1677
1678         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1679         change inside a #ifdef __mono_ppc64__.
1680
1681         * aot-compiler.c (compile_method): Remove the previous limitation.
1682
1683         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1684         on type variables in AOTed code.
1685         
1686         * aot-compiler.c (compile_method): Skip generic methods having type 
1687         constraints on their generic parameters.
1688
1689         * aot-compiler.c (compile_method): Check for methods which cannot be
1690         encoded inside RGCTX_FETCH patches as well.
1691
1692         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1693         build.
1694
1695 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1696
1697         * method-to-ir.c: Force the vtable variable in shared generic code
1698         for the case that they might show up on a stack trace where they
1699         are needed.
1700
1701         * mini-exceptions.c: Save and use generic sharing info as well as
1702         IP in stack traces to resolve shared generic instantiations.
1703
1704 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1707         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1708
1709 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1710
1711         * method-to-ir.c: Do generic sharing for array constructors.
1712
1713 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1714
1715         * mini-exceptions.c (mono_print_thread_dump): Add information
1716         about the thread state using wapi_current_thread_desc.
1717
1718 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1719
1720         * basic-simd.cs: Tests for the new constructors. 
1721
1722 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1723
1724         * mini-ops.h: Added OP_EXPAND_*
1725
1726         * cpu-x86.md: Same.
1727
1728         * mini-x86.c (mono_arch_output_basic_block): Same.
1729         
1730         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1731
1732 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1733
1734         * iltests.il.in: Add a test for #467385.
1735
1736 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1737
1738         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1739         thread been cleaned up is not the same currently in execution.
1740
1741         Fixes appdomain-unload crashes on windows, osx and linux variants
1742         without the __thread keyword.
1743
1744 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1747         (koush@koushikdutta.com). Implement this for android.
1748
1749         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1750         begins with a digit.
1751
1752         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1753         mono_marshal_get_write_barrier ().
1754
1755 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1756
1757         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1758         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1759         that pass them on a register pair.
1760
1761         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1762         test was crashing due to that.
1763
1764 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1765
1766         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1767         trampoline code. Include ucontext.h only if available.
1768
1769 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1770
1771         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1772         and doesn't check whether it's sharable, like it was before
1773         removing the shared generics hash.  This brings IronPython
1774         performance back to what it was before that change.
1775
1776 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1777
1778         * method-to-ir.c: Handle delegate invocation optimization earlier,
1779         otherwise it would be handled (much more slowly) by the
1780         final/sealed optimization.
1781
1782 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1785         domain is not set. Fixes #465864.
1786
1787 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1788
1789         * method-to-ir.c: Don't stop sharing of generic methods with catch
1790         clauses - we already handle those.
1791
1792 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1793
1794         * mini.c, mini.h: lookup_generic_method() is now
1795         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1796         making the shared_generics_hash obsolete.
1797
1798 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1799
1800         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1801         use the red zone.  Make room on the stack first and then use it,
1802         not the other way around.
1803
1804 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1805
1806         * mini.c (mini_init): Call mono_xdebug_init ().
1807
1808         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1809
1810 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1811
1812         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1813
1814         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1815         trampolines.
1816
1817         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1818         debug+unwind info for trampolines.
1819
1820         * mini.c (mono_create_unwind_op): New helper function.
1821
1822         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1823
1824 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * aot-compiler.c: Fix the build.
1827
1828 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * Makefile.am: Update dtrace-prelink.sh location.
1831
1832 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1835         optimization. Fixes #464520.
1836
1837 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1838
1839         * mini-amd64.c : Adding code to save/restore non-volatile registers
1840            on Winx64.
1841
1842         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1843           registers on Winx64.
1844
1845         Contributed under MIT/X11 license.
1846
1847 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1850         __GNUC_MINOR__ which can break when the major version changes.
1851
1852 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1853
1854         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1855
1856 2009-01-07  Geoff Norton  <gnorton@novell.com>
1857
1858         * helpers.c:  Allow mono -v -v -v to work on darwin.
1859
1860 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1861
1862         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1863           pattern. 
1864
1865         Contributed under MIT/X11 license.
1866
1867 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
1870         instead of directly accessing type->data.klass. Fixes #462016.
1871         (mono_allocate_stack_slots_full): Ditto.
1872
1873         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
1874         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
1875
1876         * aot-compiler.c (emit_plt): Fix ARM build.
1877
1878 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
1881         
1882         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
1883         change.
1884
1885         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
1886         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
1887         #463357.
1888
1889         * iltests.il.in: Add a regression test.
1890
1891 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1892
1893         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
1894
1895 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1896
1897         * basic-simd.cs: Add a regression test for #462457.
1898
1899 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1900
1901         * mini-ops.h: Add a definition of XPHI.
1902
1903         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
1904
1905         * ssa.c (op_phi_to_move): Handle XPHI.
1906
1907         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
1908
1909         Fixes #462457
1910
1911 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1912
1913         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
1914
1915 2008-12-31  Geoff Norton  <gnorton@novell.com>
1916
1917         * mini-ppc.c: The prolog size allocated can be too small for darwin
1918         ppc32 under certain circumstances.  Also fix a small logic bug.
1919
1920 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
1923         while loading AOT methods.
1924
1925         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
1926         since only the former is nulled out after a successful cast. This prevents
1927         crashes with rethrown exceptions when using --debug=casts.
1928
1929 2008-12-24  Mark Probst  <mark.probst@gmail.com>
1930
1931         * mini.h: New macro for checking whether a method is final,
1932         i.e. whether the method or its class is marked final.
1933
1934         * method-to-ir.c: Use the new macro for all final-checks
1935         consistently.  Fixes the crash in the System.ServiceModel tests.
1936
1937 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1938
1939         * mini-exceptions.c (get_exception_catch_class): Corrected another
1940         overly strict assertion.
1941
1942 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1943
1944         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
1945         Clobbering it is not allowed because the caller might use it as
1946         the vtable register in the interface call.
1947
1948 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1949
1950         * mini-exceptions.c (get_exception_catch_class): Corrected an
1951         overly strict assertion.
1952
1953 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
1954         
1955         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
1956
1957         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
1958
1959         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
1960
1961         * cpu-mips.md: correct lengths for certain long_ opcodes.
1962
1963         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
1964
1965         * 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().
1966         
1967 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1968
1969         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
1970         
1971 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1972         
1973         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
1974         
1975 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
1976
1977         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
1978         next basic block.
1979         
1980 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
1981
1982         * 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
1983
1984         * 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)
1985         
1986 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
1987         
1988         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
1989         
1990 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
1993         gshared code. Fixes #458947.
1994
1995         * generics.cs: Add a test.
1996
1997 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1998         
1999         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2000         
2001         * mini-mips.c: first pass n32 code generation.
2002
2003         * mini-mips.h: datatypes and defines for n32 support.
2004
2005         * exceptions-mips.c: first pass n32 code generation.
2006         
2007         * tramp-mips.c: first pass n32 code generation.
2008         
2009         * cpu-mips.md: add long_ opcodes.
2010         
2011 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2012
2013         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2014
2015         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2016         
2017         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2018         
2019         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2020
2021         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2022
2023         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2024
2025         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2026
2027         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2028
2029         * helpers.c: for mips/n32, don't pass -mips32 to objdump
2030
2031 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
2034
2035 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
2036
2037         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
2038
2039 2008-12-12  Mark Probst  <mark.probst@gmail.com>
2040
2041         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
2042         descriptors for helper functions directly in front of the code.
2043
2044 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2045
2046         * method-to-ir.c: Removed an unnecessary assertion.
2047
2048 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2049
2050         * method-to-ir.c: Merge SGEN changes from the old JIT.
2051
2052 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * driver.c (compile_all_methods_thread_main): Handle failure of
2055         mono_get_method ().
2056
2057 2008-12-10  Mark Probst  <mark.probst@gmail.com>
2058
2059         * mini-ppc.c: Merged with mini-ppc64.c.
2060
2061         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
2062
2063         * Makefile.am: Use the same sources for PPC and PPC64.
2064
2065         * mini-ppc64.c: Removed.
2066
2067 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2068
2069         * branch-opts.c (remove_block_if_useless): Extract fall through detection
2070         code to mono_bb_is_fall_through.
2071         
2072         * branch-opts.c (mono_remove_critical_edges): Same.
2073
2074 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2075
2076         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
2077         expect that an OP_BR_REG will be there.
2078
2079 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2080
2081         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
2082         for the many branch ops. The original check miss OP_BR_REG.
2083
2084         Fixes #457574.
2085         
2086 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2087
2088         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
2089
2090 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2091
2092         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
2093         while holding the aot lock.
2094
2095 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2096
2097         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
2098         
2099 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2100
2101         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
2102           to release all runtime callable wrappers held by the runtime.
2103
2104         Contributed under MIT/X11 license.
2105
2106 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2107
2108         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
2109           for Winx64.
2110
2111         Contributed under MIT/X11 license.
2112
2113 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
2116         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
2117
2118 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2119
2120         * cpu-mips.md: fix ckfinite length
2121
2122         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
2123         (mono_arch_lowering_pass): cleanup, rearrange for clarity
2124         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
2125         
2126 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
2127
2128         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
2129         
2130 2008-12-08  Geoff Norton  <gnorton@novell.com>
2131
2132         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
2133         size by 8 bytes as well.
2134
2135 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * basic-simd.cs: Fix method names for Vector16b.
2138         
2139 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2140
2141         * basic-simd.cs: Fix method names for Vector16sb.
2142
2143 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2144
2145         * basic-simd.cs: Fix method names for Vector8us.
2146         
2147 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2148
2149         * basic-simd.cs: Fix method names for Vector8s.
2150         
2151 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2152
2153         * basic-simd.cs: Fix method names for Vector4ui.
2154
2155 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2156
2157         * basic-simd.cs: Fix method names for Vector2l.
2158
2159 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2160
2161         * basic-simd.cs: Fix method names for Vector2d.
2162
2163 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2164
2165         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2166         that are extension methods.
2167
2168 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2169
2170         * basic-simd.cs: Fix method names for Vector4f.
2171
2172 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2175         as such. Fixes #456669.
2176
2177 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2178
2179         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2180         
2181 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2182
2183         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2184         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2185         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2186         (mips_adjust_stackframe): handle FP spills
2187                 
2188         * mini-ops.h: add mips_mtc1_s2
2189         
2190         * cpu-mips.md: add mips_mtc1_s2
2191         
2192 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2193
2194         * unwind.c: New file, move the unwind info encoding functions here from
2195         aot-compiler.c, so they could be used at runtime too.
2196
2197 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2198
2199         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2200         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2201         
2202 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2203
2204         * mini-mips.c: cleanup warnings
2205         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2206         (mips_adjust_stackframe): handle case of taking the address of stack locals
2207         
2208 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * aot-compiler.c: Implement a few functions missing from the asm writer.
2211         (emit_method_code): Only write symbols for methods when using the bin
2212         writer, since the assembler can't deal with the characters in our method
2213         names.
2214
2215         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
2216
2217         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
2218         call.
2219
2220         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
2221         a bit to also restore %rax.
2222
2223 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2224
2225         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2226
2227 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2230         arguments.
2231
2232 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2233
2234         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2235
2236         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2237         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2238
2239         * exceptions-ppc64.c: Removed.
2240
2241         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2242
2243 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2244
2245         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2246         tramp-ppc64.c.
2247
2248         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2249
2250         * tramp-ppc64.c: Removed.
2251
2252 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2255         the TYPESPEC table.
2256
2257 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2258
2259         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2260
2261         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2262         mini-ppc.h instead of mini-ppc64.h.
2263
2264         * mini-ppc64.h: Removed.
2265
2266 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2267
2268         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2269         
2270         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2271         
2272 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2273
2274         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2275         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2276         code easier.
2277
2278 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2279
2280         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2281
2282 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2283
2284         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2285
2286 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2287
2288         * basic-simd.cs: Tests for operator == and != on Vector4f.
2289
2290 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2291
2292         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2293
2294         * simd-intrinsics.c: Kill useless enum.
2295
2296 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2297
2298         * cpu-mips.md: add long_conv_to_ovf_i4_2
2299         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2300
2301 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2302
2303         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2304         
2305         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2306
2307 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2308
2309         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2310         
2311 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2312
2313         * basic-simd.cs: Add tests for new methods.
2314
2315 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2316
2317         * simd-intrinsics.c: Add support for operator == and !=
2318         on Vector4(u)i.
2319
2320         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2321
2322 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2323
2324         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2325
2326 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2329
2330         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2331         MONO_PATCH_INFO_ICALL_ADDR.
2332
2333         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2334
2335         * aot-compiler.c: Resurrect full-aot support.
2336
2337 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2338
2339         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2340         
2341 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2342
2343         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2344         
2345 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2346
2347         * basic-simd.cs: Fix tests to work under ppc.
2348         Remove tests for methods that will be removed.
2349
2350 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2351
2352         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2353         generic type (via a typedef or typeref) correctly.
2354
2355 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2358         diagnose an assertion failure.
2359
2360 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2361
2362         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2363         Fix trampoline size.
2364
2365         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2366         conversion opcodes are implemented natively instead via emulation.
2367
2368 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2369
2370         * cpu-mips.md: remove mips_xori
2371
2372         * mini-ops.h:  remove mips_xori
2373
2374         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2375
2376         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2377         
2378         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2379         
2380 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2381
2382         * cpu-mips.md: fix instruction lengths.
2383
2384         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2385
2386         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2387
2388         * mini-ops.h: fix slti / sltiu op profiles.
2389         
2390 2008-12-02  Martin Baulig  <martin@ximian.com>
2391
2392         * method-to-ir.c (mono_method_to_ir): Disable debugging
2393         information for the init locals block to make the debugger stop
2394         after all locals have been initalized.
2395
2396 2008-12-02  Martin Baulig  <martin@ximian.com>
2397
2398         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2399         running inside the debugger.
2400
2401 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2402
2403         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2404         is enabled.
2405
2406         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2407         alu->alu imm optimization which only shows if deadce is disabled.
2408
2409         * aot-compiler.c: Rename the function names for the binary and asm writers
2410         so they can coexist in the same process. Rework the xdebug code to use the
2411         asm writer. This avoids the need to call into the runtime to dump the
2412         debugging info. Add more debugging info for types.
2413
2414         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2415
2416         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2417         cpu description tables, they can't occur in cpu-<ARCH>.md.
2418
2419         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2420         the stack in CEE_LDFLDA. Fixes #450542.
2421
2422         * generics.cs: Add a new test.
2423
2424 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2425
2426         * mini-ops.h: updated MIPS opcodes
2427         * mini-mips.c: decompose long opts
2428         * mini-mips.h: decompose long opts
2429         
2430 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2431
2432         * cpu-mips.md: fix length on int_rem_un
2433         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2434         
2435 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2438
2439         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2440
2441 2008-11-29  Martin Baulig  <martin@ximian.com>
2442
2443         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2444         mono_debug_using_mono_debugger() in addition to the
2445         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2446
2447 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2448
2449         * mini-ops.h: updated more MIPS opcodes
2450         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2451         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2452         
2453 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2454
2455         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2456
2457 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2458
2459         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2460         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2461         * mini-ops.h: correct selected mips opcode entries
2462         
2463 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2464
2465         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2466         make them work.
2467
2468 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2469
2470         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2471
2472 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2473
2474         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2475         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2476         * mini-mips.h: disable IMT
2477         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2478         
2479 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2480
2481         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2482
2483 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2484
2485         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2486
2487 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2490         consistency.
2491
2492 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2493
2494         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2495         for Set/GetVector aligned versions.
2496
2497 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * basic-simd.cs: Add tests for Get/SetVector.
2500
2501 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2502
2503         * mini.c: Removed g_slist_append_mempool().  Now in
2504         metadata/mempool.c.
2505
2506 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2507
2508         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2509         size properly and make the bounds check optional.
2510
2511         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2512         for SetVector and IsAligned.
2513
2514 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * mini.c: Remove unused mono_normalize_opcodes () function.
2517
2518 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2519
2520         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2521         using the new atomic add ops now.
2522
2523         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2524         add.
2525
2526 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2527
2528         * mini-ppc64.c: Several fixes.
2529
2530 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2531
2532         * cpu-mips.md: added jump_table
2533         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2534
2535 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2536
2537         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2538
2539 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2540
2541         * mini-ops.h: corrected a handful of MIPS opcodes.
2542
2543 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2544
2545         * aot-compiler.c: MIPS to use ELF writer
2546
2547 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2548
2549         * mini-codegen.c: remove MIPS specific assert.
2550
2551 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2552
2553         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2554         fixes.  PPC64 now passes most of the runtime regressions.
2555
2556 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2559         volatile intervals a bit.
2560
2561 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2562
2563         * basic-long.cs: New test case.
2564
2565 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2566
2567         * mini.c (mini_method_compile): Disable globalra for large methods for 
2568         now.
2569
2570         * regalloc2.c (order_moves): Add fp support.
2571
2572         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2573         source bblock ends with an OP_BR_REG.
2574
2575         * ratests.cs: Add a new test.
2576
2577 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2578
2579         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2580         sharing.  PPC64 now passes generics.exe.
2581
2582 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2583
2584         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2585
2586 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2589         memory when mono_jit_info_table_find () can't find the method in the
2590         LMF case.
2591
2592         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2593         AOTed code too.
2594         
2595         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2596         writer too.
2597
2598 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2599
2600         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2601         Several fixes.  PPC64 now runs exceptions.exe and
2602         devirtualization.exe.
2603
2604 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2605
2606         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2607         arrays.exe and basic-math.exe.
2608
2609 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2610
2611         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2612         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2613
2614 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2615
2616         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2617
2618 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2619
2620         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2621
2622         * ir-emit.h: Move macros from method-to-ir.c to here.
2623
2624 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2625
2626         * mini-ops.h: Correct the long simd ops to use LREG.
2627
2628 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2629
2630         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2631         
2632         * mini-ops.h: Correct the dreg type of a few long opcodes.
2633
2634         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2635         Add netbsd support.
2636
2637 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2638
2639         * mini-ppc.c: remove negative stack references in epilog
2640         for platforms that don't support the red zone.
2641
2642 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2643
2644         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2645         point regs.  Now PPC64 passes basic-calls.exe.
2646
2647 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2648
2649         * basic-simd.cs: Add tests for accessors of Vector2l.
2650
2651 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2652
2653         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2654
2655         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2656         
2657         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2658
2659 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2660
2661         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2662         PPC64 passes basic-long.exe.
2663
2664 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2665
2666         * decompose.c: Decompose carry and overflow add on PPC64 like on
2667         other 64 bit archs.  Don't decompose sub at all on PPC64.
2668
2669         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2670         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2671         basic-long.exe.
2672
2673 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2674
2675         * basic-simd.cs: Add tests for accessors of Vector2d.
2676
2677 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2678
2679         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2680
2681         * cpu-x86.md: Same.
2682
2683         * mini-x86.c (mono_arch_output_basic_block): Same.
2684         
2685         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2686
2687 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2688
2689         * basic-simd.cs: Add tests for accessors of Vector4f.
2690
2691 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2692
2693         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2694
2695         * cpu-x86.md: Same.
2696
2697         * mini-x86.c (mono_arch_output_basic_block): Same.
2698         
2699         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2700
2701 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2702
2703         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2704
2705 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2706
2707         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2708
2709         * cpu-x86.md: Same.
2710
2711         * mini-x86.c (mono_arch_output_basic_block): Same.
2712         
2713         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2714
2715 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2716
2717         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2718
2719 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2720
2721         * simd-intrinsics.c: Enable setters for Vector16sb.
2722
2723 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2724
2725         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2726
2727         * cpu-x86.md: Same.
2728
2729         * mini-x86.c (mono_arch_output_basic_block): Same.
2730         
2731         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2732
2733 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2734
2735         * simd-intrinsics.c: Implement setter for Vector8us.
2736
2737 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2738
2739         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2740         for dead variables.
2741
2742 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2743
2744         * mini-ppc.c: remove references to the red zone in the prolog
2745         (for systems that don't support it).
2746
2747 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2748
2749         * cpu-ppc64.md: Fixed a few instruction lengths.
2750
2751         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2752         now.
2753
2754 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2755
2756         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2757         basic.exe now.
2758
2759 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2760
2761         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2762
2763 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2764
2765         * mini-ops.h: Added OP_INSERT_I2.
2766
2767         * cpu-x86.md: Same.
2768
2769         * mini-x86.c (mono_arch_output_basic_block): Same.
2770         
2771         * simd-intrinsics.c: Implement setter for Vector8s.
2772
2773         * simd-methods.h: Add the names of get setters of Vector8s.
2774
2775 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2776
2777         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2778         
2779         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2780         parameters.
2781
2782         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2783
2784 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2785
2786         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2787         for PPC64.  An empty program runs now.
2788
2789 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2792
2793         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2794         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2795         info for JITted code is emitted into a shared library, loadable into gdb.
2796
2797 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2798
2799         * Makefile.am: Changes to build PPC64.
2800
2801         * mini-arch.h: Include mini-ppc64.h on PPC64.
2802
2803 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2804
2805         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2806         in PPC code up to r119147.
2807
2808 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2809
2810         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2811         cpu-ppc64.md: Changes for PPC64.
2812
2813         Based on code submitted by andreas.faerber@web.de at
2814         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2815         X11/MIT license.
2816
2817 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2818
2819         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2820         cpu-ppc64.md: Copied from the corresponding PPC files from
2821         r118846.
2822
2823 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2824
2825         * mini-ops.h: Added OP_ROUND.
2826
2827         * cpu-x86.md: Added round.
2828
2829         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2830
2831         * basic-math.cs: Added test_0_round to test rounding.
2832
2833         Contributed under MIT/X11 license.
2834
2835 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2836
2837         * aot-compiler.c : Fix the Winx64 build.
2838
2839         Contributed under MIT/X11 license.
2840
2841 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2842
2843         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2844         in OP_EXTRACT_R8 to avoid possible stack corruption.
2845
2846 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2847
2848         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2849
2850         * cpu-x86.md: Added extract_r8.
2851
2852         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2853         
2854         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2855         a couple of OP_EXTRACT_I4.
2856
2857         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2858
2859         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2860
2861 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2862
2863         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2864         and not 4.1. 
2865
2866 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
2869         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
2870
2871         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
2872         are not needed any more.
2873
2874         * mini.h: Remove the unused INS_LIST macros.
2875
2876         * mini.c (mini_method_compile): Remove a disable globalra case which is no
2877         longer needed.
2878
2879         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
2880         ir-emit.h.
2881
2882         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
2883         mono_alloc_ireg () instead.
2884
2885         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
2886         macros.
2887
2888         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
2889         on amd64.
2890
2891         * aot-runtime.c (load_aot_module): Disable AOT when running under
2892         CAS.
2893
2894         * mini-amd64.h: Change the monitor fastpath defines to check for
2895         !PLATFORM_WIN32 so they work on *bsd too.
2896
2897         * mini.h mini.c mini-hhpa.c: Remove more unused code.
2898
2899         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
2900
2901         * mini.h (MonoCompile): Remove new_ir flag.
2902
2903         * regalloc.h regalloc.c: Remove unused code.
2904
2905         * cpu-*.md: Remove more unused opcodes.
2906
2907         * simple-cee-ops.h simple-mini-ops.h: Removed.
2908
2909         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
2910         
2911 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * aliasing.h: Removed.
2914
2915         * *.c: Remove references to aliasing.h and inssel.h.
2916
2917         * mini.c: Remove additional unused functions.
2918
2919         * mini-ops.h cpu-*.md: Remove unused opcodes.
2920
2921 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2922
2923         Remove the old JIT code.
2924
2925         * inssel*.brg: Removed.
2926
2927         * ssa.c abcremoval.c aliasing.c: Removed.
2928
2929         * ssa2.c: Renamed to ssa.c.
2930
2931         * abcremoval2.c: Renamed to abcremoval.c.
2932
2933         * *.c: Removed all !cfg->new_ir code.
2934
2935         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
2936         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
2937
2938         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
2939         
2940 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
2943         to simplify the code and cut back on the number of global symbols in the AOT
2944         file.
2945         
2946         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
2947
2948 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
2949
2950         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
2951         with the got/got_info tables.
2952
2953         * mini.h: Bump AOT file format version.
2954         
2955         * unwind.h: New file, contains definitions for stack unwinding.
2956
2957         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
2958         to cfg->unwind_ops.
2959         
2960         * aot-compiler.c: Generalize the emitting of unwind information to use the
2961         information in cfg->unwind_ops.
2962
2963         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
2964
2965         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
2966         AOT method frames. Enable writing symbols for methods by default.
2967
2968 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
2969
2970         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
2971         and make it work with vectors of element sizes 1, 2 and 4.
2972
2973         * simd-intrinsics.c: Enable getter for all vectors with element size
2974         1, 2 or 4.
2975
2976         * simd-methods.h: Add the names of other getters.
2977
2978         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
2979
2980         * cpu-x86.md: Same.
2981
2982         * mini-x86.c: Same.
2983
2984 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
2985
2986         * mini-ppc.h: portability fix.
2987
2988 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2989
2990         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
2991         buggy and will overwrite it.
2992
2993 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2994
2995         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
2996         Use it to emit local symbols for all methods so AOTed methods show up with
2997         their full name in gdb/valgrind output.
2998
2999 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
3000
3001         * mini-ppc.c: portability fixes.
3002
3003 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3004
3005         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
3006         entries out of the if (!generic_shared...) code so it is always done.
3007         (mono_class_init_trampoline): Do the patching when running under valgrind
3008         too, newer versions of valgrind have no problems with it.
3009
3010 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3011
3012         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
3013         further sections.
3014
3015 2008-11-13  Mark Probst  <mark.probst@gmail.com>
3016
3017         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
3018         filters.
3019
3020 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3021
3022         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
3023
3024 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3025
3026         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
3027
3028         * cpu-x86.md: Same.
3029
3030         * mini-x86.c: Same.
3031
3032         * simd-intrinsics.c: Same.
3033
3034 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3035
3036         * simd-intrinsics.c: Enable constructor intrinsics for all types.
3037
3038 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3039
3040         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
3041         to work with more Vector types.
3042
3043 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3044
3045         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
3046         store the elemens directly instead of using and intermediate.
3047
3048 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
3051
3052         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
3053         to preserve %eax for aot plt trampolines.
3054
3055         * aot-compiler.c (compile_method): Don't skip synchronized methods.
3056         (encode_method_ref): Flag synchronized methods so they won't go through
3057         the AOT trampoline.
3058
3059         * aot-compiler.c: Additional work to support AOTing synchronized methods/
3060         wrappers.
3061
3062         * cpu-ia64.md (jmp): Increase max length.
3063
3064 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3065
3066         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
3067         open generic classes.
3068
3069         * aot-compiler.c: Enable the ELF writer on ELF platforms.
3070
3071         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
3072         box+brtrue optimization since it causes test failures on x86.
3073
3074 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3075
3076         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
3077
3078         * cpu-x86.md: Same.
3079
3080         * mini-x86.c: Same.
3081
3082         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
3083         for simd ctor values. 
3084
3085         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
3086         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
3087
3088 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3089
3090         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
3091         LogicalRightShift.
3092
3093         * simd-instrincs.c: Same.
3094
3095         * basic-simd.cs: Same.
3096
3097 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3098
3099         * ratests.cs: Add more tests.
3100
3101         * regalloc2.c (add_spill_code): Handle more corner cases.
3102
3103 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3104
3105         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
3106         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
3107         both the source an destination of an instruction.
3108
3109 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3110
3111         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
3112         wapihandles.c: more portability changes.
3113
3114 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
3115
3116         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
3117         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
3118         safe to execute in a signal handler and the kernel provides better
3119         the info in /proc/self/smaps. Avoid the assert on sigaction during
3120         cleanup.
3121
3122 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3123
3124         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
3125         do the bblock linking hack if it is actually needed.
3126
3127         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
3128         up linking.
3129
3130         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
3131         crash problem is fixed.
3132
3133         * branch-opts.c (mono_remove_critical_edges): Link up newly added
3134         bblocks.
3135
3136         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
3137         for catch clauses.
3138         (mini_method_compile): Set the starting value of next_vreg to 
3139         MAX_IREGS + MAX_FREGS when using globalra.
3140
3141         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
3142         filter clauses with BB_EXCEPTION_HANDLER.
3143
3144         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
3145
3146 2008-11-10  Mark Probst  <mark.probst@gmail.com>
3147
3148         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
3149         space for stdcall.  Fixes regressions on Win32.
3150
3151 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
3152
3153         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
3154         bblocks.
3155         (linear_scan): Remove an assert which doesn't seem to be needed.
3156
3157         * local-propagation.c (mono_local_deadce): Avoid a call to
3158         MONO_DELETE_INS which would screw up the instruction linking.
3159
3160         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3161
3162         * regalloc2.c: Upgrade to work the current JIT code.
3163
3164 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3165
3166         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3167         case.
3168
3169         * aot-runtime.c: Remove some dead code.
3170
3171         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3172         consistency.
3173         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3174
3175         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3176         trampolines using sscanf since atoi doesn't work on large unsigned values.
3177
3178         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3179         Initialize code_size.
3180
3181 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3182
3183         * method-to-ir.c (mini_emit_inst_for_method): Make
3184         Interlocked.CompareExchange work for Int arguments on 32 bit
3185         archs, as well.
3186
3187 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3188
3189         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3190
3191 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3192
3193         * main.c Fix MSVC build.
3194
3195         Contributed under MIT/X11 license.
3196
3197 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3198
3199         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3200         alignment larger than 8 bytes are aligned correctly, too.
3201
3202         * mini.c: Honor the min_align field of MonoClass when laying out
3203         the stack.
3204
3205 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3206
3207         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3208
3209         * aot-compiler.c (emit_plt): Fix a warning.
3210         
3211         * aot-compiler.c: Implement ARM support in the binary writer.
3212
3213 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3214
3215         * basic-simd.cs: Add test for getter with byref arg.
3216         Fix the naming of a few tests.
3217         Add missing checks to a test.
3218
3219 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3222
3223         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3224         most of the full-aot support for monitor enter/exit trampolines.
3225
3226         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3227         enter/exit trampoline creation functions.
3228
3229         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3230         make dist.
3231
3232 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3233
3234         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3235         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3236         implement the needed functionality without adding crap to the runtime.
3237
3238 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3241         non-x86 builds.
3242
3243         * mini.c (mono_build_date): New global version holding the build date in
3244         string format.
3245         
3246         * Makefile.am (buildver.c): Generate a file containing the build date.
3247
3248         * main.c: Set the build date from the generated file.
3249
3250         * mini.c (mono_get_runtime_build_info): New helper function returning build
3251         information in a string format.
3252         
3253         * driver.c (mono_main): Print the build date in --version.
3254
3255         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3256         file when the bind-to-runtime-version option is used.
3257
3258 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3259
3260         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3261
3262 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3263
3264         * simd-methods.h: Rename prefetch methods.
3265
3266         * simd-intrinsics.c: Same.      
3267
3268 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3269
3270         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3271         sizes.
3272
3273 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3274
3275         * aot-compiler.c: Use the bundled elf header files instead of depending on
3276         the system one.
3277         
3278         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3279         mempool.
3280
3281         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3282         on every call.
3283
3284 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3285
3286         * cpu-x86.md: Add store nta ops.
3287
3288         * mini-ops.h: Same.
3289
3290         * mini-x86.c: Same.
3291
3292         * mini.h: Add an enum for simd prefetch modes.
3293
3294         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3295         of store. Use the changed code to support store nta.
3296
3297         * simd-intrinsics.c: Add prefetch ops for all vector types.
3298
3299 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3300
3301         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3302         threads.
3303         
3304         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3305         names.
3306
3307         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3308         trampolines.
3309
3310 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3311
3312         * mini-x86.c: Fixed commit.
3313
3314 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3315
3316         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3317
3318 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3319
3320         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3321         and MONITOR_EXIT, for the ASM fastpaths.
3322
3323         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3324         available.
3325
3326         * mini.c, patch-info.h: Signature and patch infos for
3327         Monitor.Enter/Exit trampolines.
3328
3329         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3330
3331         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3332         Monitor.Enter/Exit ASM fastpath for Linux.
3333
3334 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3335
3336         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3337
3338         * objects.cs: Add a new test.
3339         
3340         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3341
3342         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3343         if MONO_LOG_LEVEL is set.
3344
3345         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3346
3347         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3348
3349         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3350         
3351         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3352         of file offsets. Align the sections belonging to the data segment to 
3353         PAGESIZE.
3354
3355 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3358         elf.h. Port it to amd64.
3359
3360 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3361
3362         * driver.c: Enable SIMD by default.
3363
3364 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3365
3366         * cpu-x86.md: Add prefetch op.
3367
3368         * mini-ops.h: Same.
3369
3370         * mini-x86.c: Same.
3371
3372         * mini.h: Add an enum for simd prefetch modes.
3373
3374         * simd-methods.h: Add prefetch function names.
3375
3376         * simd-intrinsics.c: Add prefetch ops for all vector types.
3377
3378 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3379
3380         * aot-compiler.c (emit_bytes): Speed this up a little.
3381
3382 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3383
3384         * aot-compiler.c: Add JIT time etc. statistics.
3385         
3386         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3387
3388         * mini.h (MonoCompile): Add 'got_offset' field.
3389
3390         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3391         method_got_offsets array.
3392
3393         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3394         wrappers.
3395
3396         * aot-compiler.c (compile_method): Add generic method instances referenced
3397         by the method to the list of methods to be compiled, this is required so if
3398         A<T> references B<T>, and another assembly references A<int>, then it will
3399         also get a copy of B<int>.
3400
3401         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3402         when checking for monitor enter/exit.
3403
3404 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3405
3406         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3407         for Monitor.Enter and Monitor.Exit if enabled.
3408
3409         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3410         Solaris.
3411
3412 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3415         of an OP_MOVE. Fixes #440046.
3416
3417         * basic-long.cs: Add a new test.
3418
3419 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3420
3421         * mini.h: Add synchronization note for the managed counter-part.
3422
3423         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3424         returns the simd caps of the current cpu.
3425
3426 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3427
3428         * basic-simd.cs: Remove Console.WriteLine.
3429
3430 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3431
3432         * basic-simd.cs: New tests for Vector2ul.
3433
3434 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3435
3436         * simd-intrinsics.c: Add new vector type Vector2ul.
3437
3438 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3439
3440         * basic-simd.cs: New tests for Vector2l.
3441
3442 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3443
3444         * cpu-x86.md: Add long version of most packed int ops.
3445
3446         * mini-ops.h: Same.
3447
3448         * mini-x86.h: Same.
3449
3450         * simd-intrinsics.c: Add new vector type Vector2l.
3451
3452 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3453
3454         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3455
3456         * simd-methods.h: Remove SN_op_BitwiseXor.
3457
3458 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3461         alignment.
3462
3463 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3464
3465         * basic-simd.cs: Test for Vector2d.
3466
3467         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3468         value.
3469
3470 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3471
3472         * cpu-x86.md: Add double version of all packed float ops.
3473
3474         * mini-ops.h: Same.
3475
3476         * mini-x86.h: Same.
3477
3478         * simd-intrinsics.c: Add new vector type Vector2d.
3479
3480         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3481
3482         * simd-methods.h: Add Duplicate.
3483
3484 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3485
3486         * basic-simd.cs: Test for packing with signed saturation.
3487
3488 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3489
3490         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3491         found in the TYPESPEC table.
3492
3493 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3494
3495         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3496         too.
3497
3498         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3499
3500         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3501         instead of the RVA, since the RVA can be changed by tools like the cil 
3502         stripper.
3503
3504         * method-to-ir.c (mono_method_to_ir2): Ditto.
3505
3506         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3507         (deserialize_variable): Ditto.
3508
3509 2008-10-25  Martin Baulig  <martin@ximian.com>
3510
3511         * debug-mini.c (write_variable): Use
3512         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3513
3514 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3515
3516         * cpu-x86.md: Add unsigned variants of packd and packw.
3517
3518         * mini-ops.h: Same.
3519
3520         * mini-x86.h: Emit the right instruction for packd and packw.
3521         Add unsigned variants of packd and packw.
3522
3523         * simd-intrinsics.c: Packd and packw were used in place of their
3524         unsigned variants. Change that.
3525         Add intrinsics for (Signed)PackWithSignedSaturation.
3526
3527         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3528
3529 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3530
3531         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3532
3533 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3534
3535         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3536
3537         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3538
3539         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3540         sse instructions.
3541
3542         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3543
3544 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3545
3546         * method-to-ir.c, mini.c: Special casing for the synchronized
3547         wrapper for the ldtoken+GetTypeFromHandle case.
3548
3549 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3550
3551         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3552
3553         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3554         created/split bblocks.
3555
3556 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * mini-ops.h: Add packed signed mul high.
3559         
3560         * cpu-x86.md: Same.
3561
3562         * mini-x86.c (mono_arch_output_basic_block): Same.
3563
3564         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3565
3566         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3567
3568 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3569
3570         * basic-simd.cs: Tests for Vector16sb.
3571
3572 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3573
3574         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3575
3576 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3577
3578         * mini-ops.h: Add packed signed min, max and compare greater.
3579         
3580         * cpu-x86.md: Same.
3581
3582         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3583         saturation.
3584
3585         * simd-methods.h: Add CompareGreaterThan.
3586
3587         * simd-methods.h: Remove CompareEquals.
3588
3589         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3590
3591         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3592
3593         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3594         CompareEqual.
3595
3596 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3597
3598         * basic-simd.cs: Fix tests due to change in the API.
3599
3600 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3601
3602         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3603
3604 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3605
3606         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3607
3608         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3609         inst_offset as this has invalid values for LDADDR.
3610
3611 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3612
3613         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3614
3615         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3616
3617 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3620         for accessing field->data.
3621
3622 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3623
3624         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3625
3626 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3627
3628         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3629
3630         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3631
3632 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3635         from the cfg mempool.
3636
3637 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3638
3639         * basic-simd.cs: Tests for new methods in Vector8us.
3640
3641 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3642
3643         * mini-ops.h: Add multiply and store high.
3644         
3645         * cpu-x86.md: Same.
3646
3647         * mini-x86.c (mono_arch_output_basic_block): Same.
3648
3649         * simd-methods.h: Same.
3650
3651         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3652         and CompareEqual.
3653
3654 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3655
3656         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3657         mono_class_setup_vtable ().
3658
3659         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3660         mono_class_get_vtable_entry () for accessing klass->vtable.
3661
3662         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3663
3664         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3665         found.
3666
3667         * method-to-ir.c (mono_save_token_info): Don't save references made from
3668         wrappers.
3669
3670         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3671         of generic instances.
3672
3673         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3674
3675 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3676
3677         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3678         OP_JMP depends on the method signature.  Calculate it properly.
3679
3680 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3681         
3682         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3683         called directly.
3684
3685         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3686         instances.
3687         (emit_extra_methods): Add another table mapping method indexes to 
3688         offsets in the extra_method_info table.
3689
3690         * mini.h: Bump AOT file format version.
3691         
3692         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3693         and mono_aot_get_method_from_token () into one function.
3694
3695 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3696
3697         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3698         separate counter.
3699
3700 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3701
3702         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3703         methods.
3704
3705         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3706         disable_aot.
3707
3708         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3709
3710         * mini.h: Bump aot file format version.
3711
3712         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3713         AOT file can contain native code for methods which are not in the METHOD
3714         table. Generate code for non-sharable generic instances of generic methods
3715         found in the METHODSPEC table.
3716         
3717         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3718         encoding generic type handles.
3719
3720         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3721         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3722
3723         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3724         macros + MONO_ADD_INS.
3725
3726         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3727         context as well.
3728
3729         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3730
3731         * mini.h: Bump aot file format version.
3732
3733         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3734
3735 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3736
3737         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3738         platforms, with definable stack alignment value.  Set to 16 now
3739         for all platforms.
3740
3741         * mini.c, mini.h, driver.c: Command line option for disabling
3742         stack alignment.
3743
3744 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3745
3746         * basic-simd.cs: Tests for new methods in Vector4ui.
3747
3748 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3749
3750         * mini-ops.h: Add packed int shuffle.
3751         
3752         * cpu-x86.md: Same.
3753
3754         * mini-x86.c (mono_arch_output_basic_block): Same.
3755
3756         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3757         extract mask, max, min, shuffle.
3758
3759         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3760
3761 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3762
3763         * basic-simd.cs: Tests for new methods in Vector8us.
3764
3765 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3766
3767         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3768         RuntimeTypeHandle, not a TypedReference.
3769
3770 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3771
3772         * simd-intrinsics.c: remove relocations.
3773
3774 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3777         optimizations from the x86 backend.
3778
3779 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3780
3781         * simd-methods.h, simd-intrinsics.c: debloat method names and
3782         prepare for no relocations.
3783
3784 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3785
3786         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3787         
3788         * cpu-x86.md: Same.
3789
3790         * mini-x86.c (mono_arch_output_basic_block): Same.
3791
3792         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3793         extract mask, max, min and sum of absolute differences.
3794
3795         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3796         method name.
3797
3798 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3799
3800         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3801         Renamed one test for consistency.
3802
3803 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3804
3805         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3806         fix to the code that deal with other blocks.
3807
3808 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3809
3810         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3811
3812 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3813
3814         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3815         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3816         able to process the source reg.
3817
3818 2008-10-16  Martin Baulig  <martin@ximian.com>
3819
3820         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3821
3822         * inssel.brg: Add `OP_HARD_NOP'.
3823
3824         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3825
3826         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3827         `OP_HARD_NOP' instruction when running inside the debugger.
3828
3829         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3830         `OP_HARD_NOP' instruction when running inside the debugger.
3831
3832 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3833
3834         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3835         now works. The issue with the regalloc tripping up no longer
3836         happens.
3837
3838         * simd-intrinsics.c (load_simd_vreg): Same.
3839
3840 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3841         
3842         * basic-simd.cs: Tests for new Vector8ui methods.
3843
3844 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3845
3846         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3847         only for type. This fixes crashes where MonoInst::klass is checked
3848         for ops of type != VTYPE or OBJ.
3849
3850         * simd-intrinsics.c (load_simd_vreg): Same.
3851
3852 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3853
3854         * mini-ops.h: Add ops for packed shuffle/max/avg and
3855         extract mask.
3856         
3857         * cpu-x86.md: Same.
3858
3859         * mini-x86.c (mono_arch_output_basic_block): Same.
3860
3861         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3862         extract mask.
3863
3864         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3865         to emit extract mask op.
3866
3867         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
3868         to emit word shuffles.
3869
3870 2008-10-15  Mark Probst  <mark.probst@gmail.com>
3871
3872         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
3873         the largest alignment needed by a variable, but at least
3874         sizeof(gpointer).
3875
3876 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3877
3878         * basic-simd.cs: Tests for the fixes in the last commit.
3879
3880 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3881
3882         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
3883         no longer handles STACK_PTR input.
3884
3885         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
3886
3887         * simd-intrinsics.c (load_simd_vreg): New function that works like 
3888         get_simd_vreg   but handles STACK_PTR input.
3889
3890         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
3891         as the input can be an arbitrary pointer.
3892
3893         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
3894         LDADDR local optimization directly otherwise use a store op.
3895
3896 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3897
3898         * basic-simd.cs: Tests for dup low and dup high.
3899
3900 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3901
3902         * mini-ops.h: Add dup low and dup high ops.
3903         
3904         * cpu-x86.md: Same.
3905
3906         * mini-x86.c (mono_arch_output_basic_block): Same.
3907
3908         * simd-intrinsics.c (vector4f_intrinsics): Same.
3909
3910 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3911
3912         * basic-simd.cs: Tests for recently added functionality.
3913
3914 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3915
3916         * mini-ops.h: Add remaining sse1 fp ops.
3917         
3918         * cpu-x86.md: Add remaining sse1 fp ops.
3919
3920         * mini-x86.c (mono_arch_output_basic_block): Same.
3921
3922         * mini.h: Add enum for simd FP compare conditions.
3923
3924         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
3925
3926         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
3927         so the backed can generate the appropriate op.
3928
3929 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3930         This patch squeese one more byte from the SimdIntrinsc struct.
3931
3932         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
3933         a a shift amount intead of simply or'ing it.
3934
3935         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
3936
3937         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
3938         byte so we can have an aditional flags field without increasing struct size.
3939
3940         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
3941         against the simd_supported_versions bitmask.
3942
3943         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
3944
3945 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
3946
3947         * mini.c: remove rawbuffer code (the only use here is unsafe because
3948         it takes locks during signal handling and the kernel now provides much
3949         better info in proc/pid/smaps these days).
3950
3951 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3952
3953         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
3954         OP_X86_PUSH_OBJ. Fixes #434620.
3955
3956         * objects.cs: Add a test.
3957         
3958 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
3959
3960         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
3961         that the packuswb/packusdw don't work with unsigned numbers for what
3962         would be negative numbers in signed format.
3963
3964         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
3965         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
3966
3967         * mini-ops.h: Add doubleword forms of many ops and packing ones.
3968
3969         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
3970
3971         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
3972
3973         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
3974
3975         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
3976         add more ops.
3977
3978         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
3979         version as the enum in mini.h.
3980
3981         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
3982         for sse3 ops, check the simd_version field if present. This way the code
3983         works with all versions of sse.
3984
3985 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3986
3987         * simd-intrinsics.c: Fixed intrinsic name typo.
3988
3989         * mini.h: Added missing simd exported function.
3990
3991         * basic-simd.cs: Added tests for Vector4ui.
3992         Fixed broken test for Vector16b.
3993
3994 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3995
3996         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
3997         the max length to 64.
3998
3999 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4000
4001         * method-to-ir.c: Only do the fast virtual generic method call for
4002         non-wrapper methods.
4003
4004         * mini.h, mini-trampolines.c: The new generic virtual remoting
4005         trampoline handles virtual method calls via the vtable (as done by
4006         the fast virtual generic method calls) to remoting proxies.
4007
4008         * mini.c (mono_jit_create_remoting_trampoline): For generic
4009         methods reate a generic virtual remoting trampoline.
4010
4011         * mini-amd64.h: Enable fast virtual generic method calls again.
4012
4013 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4014
4015         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
4016         restore registers when doing tail calls.
4017
4018 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4019
4020         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
4021         Vector4ui.
4022
4023 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4024
4025         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
4026
4027 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4028
4029         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
4030
4031 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4032
4033         * basic-simd.cs: Retrofit for API changes.
4034
4035 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4036
4037         * mini-ppc.c: Handle integer stack arguments for tail calls.
4038
4039 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4040
4041         * optflags-def.h: Removed sse3 optimization.
4042
4043         * driver.c: Same.
4044
4045         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
4046         sse3.
4047
4048         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
4049
4050         * mini.h: Added enumeration with simd versions.
4051
4052         * simd-intrinsics.c (emit_intrinsics): Use the new static var
4053         for detecting SSE3.
4054
4055         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
4056
4057         * mini.c (mini_init): Call mono_simd_intrinsics_init.
4058
4059 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4060
4061         * basic-simd.cs: Added tests for Vector8u and Vector16u.
4062
4063         * basic-simd.cs: Fixed test naming.
4064
4065 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4066
4067         * mini-ops.h: Added ops for packed and saturated math, shifts
4068         and packing/unpacking.
4069
4070         * cpu-x86.md: Added descriptors for the above ops.
4071
4072         * mini-x86.c: Added code to emmit the above ops.
4073
4074         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
4075
4076 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * aot-compiler.c (compile_method): Enable AOT for generic code.
4079
4080         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
4081
4082 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
4083
4084         * mini.c: add a workaround for a common screwup that ends up blamed
4085         to mono (other processes blocking signal delivery).
4086
4087 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
4090         in the LDFLD/STFLD opcodes. Fixes #432673.
4091
4092         * iltests.il.in: Add a new test.
4093
4094 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
4095
4096         * mini-arm.c: attach the thread in unmanaged->managed transitions
4097         using delegates (bug #433148).
4098
4099 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4100
4101        * basic-simd.cs: Use new ShuffleSel constants.
4102
4103 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4104
4105         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
4106
4107         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
4108         only disable simd intrinsics if no sse2 is detected.
4109
4110         * optflags-def.h: Added sse3.
4111
4112         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
4113         is disabled.
4114
4115 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4116
4117         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
4118         when adding delegate-invoke wrappers.
4119
4120 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * Makefile.am: Reenable the simd tests.
4123
4124 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4125
4126         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
4127           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
4128           other vreg is allocated to that hreg.
4129
4130         Contributed under MIT/X11 license.
4131
4132 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
4135         yet checked in.
4136
4137 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4138
4139         * basic-simd.cs: New test suite for SIMD intrinsics.
4140
4141         * Makefile.am: Added new tests.
4142
4143 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4144
4145         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
4146
4147         * mini-ops.h: Same.
4148
4149         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
4150
4151         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
4152         using SSE2 aware opcodes.
4153
4154         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
4155         is enabled, this code path is only reachable if conversion ops are emmited after
4156         mono_method_to_ir.
4157
4158         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4159
4160         This optimization saves 6 bytes per conversion against the old version.
4161
4162 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * aot-compiler.c (compile_method): Don't skip methods referencing 
4165         generic methods without a corresponding entry in token_info_hash, since
4166         encode_method_ref () can handle all generic methods now.
4167
4168         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4169         generic context is set.
4170         
4171         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4172         generic sharing of LDTOKEN.
4173
4174 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4175
4176         * mini-amd64.h: Temporarily disabled fast virtual generic method
4177         calls because it breaks the System.Runtime.Remoting tests.
4178
4179 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4182
4183         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4184         so inlining actually works.
4185         (check_inline_caller_method_name_limit): Ditto.
4186
4187 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4188
4189         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4190         64 bit safety (from Olaf Hering and Andreas Färber).
4191
4192 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4193         
4194         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4195         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4196         unused virtual call support code.
4197
4198         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4199         
4200         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4201         which can't use aot trampolines.
4202         (decode_patch): Don't create aot trampolines for methods which can't use
4203         them.
4204
4205         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4206         use aot trampolines.
4207
4208         * mini.h: Bump AOT image format version.
4209         
4210 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
4211
4212         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
4213         to save_token_info () since cmethod is inflated for constrained calls.
4214
4215         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
4216
4217 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
4218
4219         * Makefile.am: Add build rules for ppc64.
4220         This avoids the build failing at pedump with unresolved symbols
4221         due to lack of arch_sources. Instead it will now fail earlier
4222         due to lack of cpu-ppc64.md.
4223
4224         Contributed under MIT/X11 license.
4225
4226 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4227
4228         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4229         tail calls.
4230
4231         * iltests.il.in: Add test case for tail call with many arguments.
4232
4233 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4234
4235         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4236         to the fast virtual generic method code until the aot case is fixed.
4237
4238 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4239
4240         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4241
4242 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4243
4244         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4245         thunks.
4246
4247 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4248         
4249         * simd-intrinsics.c: Forgot to add this one.
4250
4251         * mini-codegen.c: Fix macro in case SIMD is not supported.
4252
4253 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4254         
4255         This patch land initial JIT support for simd intrinsics.
4256
4257         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4258
4259         * Makefile.am: Added simd-intrinsics.c
4260
4261         * simd-intrinsics.c: New file with simd instrinsic related
4262         code.
4263
4264         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4265
4266         * cpu-x86.md: Add simd related instructions.
4267
4268         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4269
4270         * driver.c: Added two new --regression variants.
4271
4272         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4273
4274         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4275
4276         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4277         extract some complicated logic to helper functions.
4278
4279         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4280
4281         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4282
4283         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4284         the specialized simplification pass.
4285
4286         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4287
4288         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4289
4290         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4291         table.
4292
4293         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4294         if MONO_ARCH_NEED_SIMD_BANK is defined.
4295
4296         * mini-ops.h: Added the new simd ops.
4297
4298         * mini-x86.c: Added mono_arch_xregname.
4299
4300         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4301
4302         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4303
4304         * mini-x86.h: Define simd related MONO_ARCH macros.
4305
4306         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4307
4308         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4309
4310         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4311         MONO_CLASS_IS_SIMD to deal with simd related IR.
4312
4313         * mini.h (MonoInst): Added spill_var to the backend union.
4314
4315         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4316
4317         * mini.h: Added forward declarations of the new simd fuctions.
4318
4319         * optflags-def.h: Added new optimization names SIMD.
4320
4321         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4322
4323         * regalloc.h: Added support for working with 3 register banks.
4324
4325         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4326
4327         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4328
4329 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4330
4331         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4332
4333 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4336         instead of one on 64 bit systems.
4337
4338         * method-to-ir.c: Remove unused includes.
4339
4340 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4341
4342         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4343         cfg->used_int_regs, since the two are different on arm.
4344
4345 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4346
4347         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4348         mono_method_get_vtable_index() to get the vtable index.
4349
4350 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4351
4352         * method-to-ir.c (mono_method_to_ir2): Don't create native
4353         wrappers for array methods, because they're never called (and if
4354         they were called they wouldn't work).
4355
4356 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4357
4358         * method-to-ir.c (mono_method_to_ir2): Array methods are
4359         special-cased and must not be invoked indirectly via the (M)RGCTX
4360         when generic sharing is turned on.  Fixes #431413.
4361
4362 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4363
4364         * method-to-ir.c: When generic sharing is active, call
4365         non-interface virtual generic methods via the standard trampoline.
4366
4367         * mini-trampolines.c: Handle virtual generic shared methods.
4368
4369         * mini.h, mini-x86.c, mini-x86.h: New argument for
4370         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4371         method thunks and which is the trampoline to call if the lookup
4372         fails.  Enable the virtual generic method thunk for x86.
4373
4374         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4375         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4376         argument but assert that it's NULL, because these archs don't yet
4377         implement the virtual generic method thunk.  Changes in the IMT
4378         thunk data structures.
4379
4380 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4381
4382         * aot-compiler.c (emit_globals): Avoid invalid characters in
4383         the static linking symbol.
4384
4385         * objects.cs: Add a test for the range check optimization. Fix warnings.
4386
4387         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4388         optimization from the current JIT.
4389
4390         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4391         later in decompose_array_access_opts () to allow more optimizations.
4392
4393         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4394         mono_decompose_soft_float () for consistency.
4395
4396         * mini-ops.h: Fix arguments of OP_STRLEN.
4397
4398         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4399         into a separate function.
4400         (reset_cast_details): Ditto.
4401         (handle_unbox): Save cast details. Fixes #431254.
4402
4403         * method-to-ir.c: Remove some obsolete FIXMEs.
4404
4405 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4406
4407         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4408
4409 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4410
4411         * mini-codegen.c: More work on macros to make them
4412         ready for multiple regbanks.
4413
4414 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4415
4416         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4417
4418         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4419
4420 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4421
4422         * mini-codegen.c (mono_spillvar_offset): Proper support for
4423         multiple regbanks.
4424
4425 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4426
4427         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4428         the stack overflow changes.
4429
4430 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4431
4432         * mini-codegen.c: Make all bank macros depend on reg_bank.
4433
4434         * mini-codegen.c (mono_local_regalloc): Make free mask
4435         initialization regbank aware.
4436
4437 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4438
4439         * mini-codegen.c (mono_local_regalloc): Extract callee
4440         mask selection to a function and make it regbank aware.
4441
4442 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4443
4444         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4445         code to deal with many regbanks.
4446
4447 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4448
4449         * mini-codegen.c: More fp->regbank changes.
4450
4451 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4452
4453         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4454         of a hardcoded constant.
4455
4456 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4457
4458         * method-to-ir.c (type_from_stack_type): Fix typo.
4459
4460 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4461
4462         * mini-ia64.c (emit_move_return_value): Convert float return values to
4463         double.
4464
4465         * objects.cs: Add a new test.
4466         
4467         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4468         VARARG methods to fix an assert later.
4469
4470         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4471         end so it at least compiles.
4472
4473 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4474
4475         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4476
4477 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4478
4479         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4480         optimization to a new function (emit_optimized_ldloca_ir) and enable
4481         it for both ldloca and ldloca_s.
4482
4483 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4484
4485         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4486         gshared CASTCLASS code.
4487
4488         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4489         amd64, where the libc stack unwinder encounters stack frames referring to
4490         native code in unmapped memory.
4491
4492         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4493         sharing.
4494
4495         * generics.cs: Add new test.
4496
4497 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4498
4499         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4500         add a check that one of the ARM_FPU_ constants is defined.
4501
4502         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4503         
4504         * mini-exceptions.c: Fix build on non-altstack platforms.
4505
4506         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4507         sharing of vtypes.
4508
4509         * ir-emit.h: Add a comment to NEW_PCONST.
4510
4511         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4512
4513         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4514
4515         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4516         after the changes to MonoJitDomainInfo.
4517
4518 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4519
4520         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4521
4522 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4523
4524         * mini-ppc.c: Compiler warning fixes.
4525
4526 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4527
4528         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4529         for pinvokes.
4530
4531 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4532
4533         * exceptions-ppc.c, mini-ppc.h: Compile
4534         mono_arch_handle_altstack_exception() on Darwin, too.
4535
4536 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4537
4538         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4539         work on archs which don't have generic sharing implemented, only
4540         without the vtable_arg.
4541
4542 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4543
4544         * mini.c: Added comment explaining why delegate ctor icall
4545         wrappers are compiled.
4546
4547 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4548
4549         * mini.c: Don't produce trampolines to delegate ctor icall
4550         wrappers but compile them upfront.
4551
4552 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4553
4554         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4555         runtime-set function when going back to managed code. Currently this
4556         is used to set back the protection on the soft ovf pages and/or to
4557         throw the stack overflow exception that happened in unmanaged code.
4558
4559 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4560
4561         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4562         runtime-set function when going back to managed code. Currently this
4563         is used to set back the protection on the soft ovf pages and/or to
4564         throw the stack overflow exception that happened in unmanaged code.
4565
4566 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4567
4568         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4569         the support code for restoring stack protection after stack overflows
4570         that happen in unmanaged code. Don't set the exec permission on the
4571         soft overflow area.
4572
4573 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4574
4575         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4576         delegate->method_ptr is set. Fixes #428054.
4577
4578 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * tests.cs: Rename to ratests.cs.
4581
4582         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4583         emit_get_rgctx_... functions.
4584
4585 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4586
4587         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4588
4589 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4590
4591         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4592         before asserting that method is sharable.
4593
4594 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4595
4596         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4597         whether method needs a static RGCTX wrapper used instead of
4598         complex conditions.
4599
4600         * generic-sharing.c, mini.h: A few functions moved to
4601         metadata/generic-sharing.c.
4602
4603 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4604
4605         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4606         Generic code sharing for value types, which essentially means
4607         treating value type methods like static methods.  The RGCTX is
4608         passed in the same way.
4609
4610 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4611
4612         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4613         opcode when creating multi-dimensional arrays of open types.
4614
4615         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4616         open generic types.
4617
4618         * generics.cs: Add a test.
4619
4620         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4621
4622 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4625
4626         * mini.c (mini_method_compile): Set it when running under the debugger. 
4627
4628         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4629         vreg optimization if the flag is set.
4630
4631         * driver.c (mono_main): Add --attach= option to pass options to
4632         the attach agent.
4633
4634         * mini.c (sigquit_signal_handler): Start the attach agent.
4635
4636         * ssapre.c: Disable this to save space since it is not yet ported to
4637         linear IR.
4638
4639         * regalloc2.c: Disable this to save space.
4640
4641         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4642
4643 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4644
4645         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4646         the -v option useful again.
4647
4648 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4649
4650         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4651         --break-at-bb.
4652
4653         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4654         arrays of arrays. Fixes #428406.
4655
4656         * method-to-ir.c (mini_emit_castclass): Ditto.
4657
4658         * objects.cs: Add new test.
4659         
4660 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4661
4662         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4663         was wrong at it choked against target_type_is_incompatible for byref types.
4664
4665 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4666
4667         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4668         places.
4669
4670 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4671
4672         * mini-exceptions.c: update a few more exceptions-related counters.
4673
4674 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4675
4676         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4677         new functions to allocate from persistent mempools.
4678
4679 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4680
4681         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4682         multiple register banks in the future.
4683
4684         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4685
4686 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4689
4690         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4691
4692         * mini.h: Export type_to_eval_stack_type.
4693
4694         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4695         is only ins->klass of byref types.
4696
4697 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4698
4699         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4700         (mini_emit_memcpy2): Ditto.
4701
4702         * mini-amd64.c: Fix a warning.
4703
4704 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4705
4706         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4707         linking.
4708
4709 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4710
4711         * method-to-ir.c: Extract stloc micro-optimization to a
4712         function and apply it to all cases.
4713
4714 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4715
4716         * method-to-ir.c: Don't fail generic code sharing in cases we
4717         already support.
4718
4719 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4720
4721         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4722
4723 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4724
4725         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4726         implementation.
4727
4728 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4729
4730         * trace.c: make tracing more useful and correct, with per-thread
4731         id and indent info.
4732
4733 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4734
4735         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4736         doing a method call and the argument is an R4.
4737
4738 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4739
4740         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4741         generic methods.
4742
4743 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4744
4745         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4746
4747 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4748
4749         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4750         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4751
4752 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4753
4754         * driver.c: Add a --agent argument (not supported yet) to load managed
4755         agent assemblies before loading the main assembly, similarly to how the
4756         Java VM handles agents.
4757
4758 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4759
4760         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4761         function to do stack layout of local variables.
4762
4763 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4764
4765         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4766         calculation.
4767
4768 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4769
4770         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4771         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4772         JIT if DISABLE_JIT is defined.
4773
4774         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4775         defined.
4776
4777 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4778
4779         * iltests.il.in: Disable the fconv test on PPC (the result is
4780         undefined according to ECMA).
4781
4782 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4783
4784         * iltests.il.in: Enable tail call tests for PPC.
4785
4786         * mini.h: Add variable for storing incoming valuetype argument
4787         addresses for tail calls.
4788
4789         * mini-ppc.c: Implement valuetype arguments and return values for
4790         tailcalls on Linux.
4791
4792 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4793
4794         * mini-ppc.c: Partially implement tail calls (struct arguments and
4795         return values not supported).
4796
4797         * method-to-ir.c: Enable tail calls on PPC.
4798
4799 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4800
4801         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4802         runtime-invoke wrappers to work around the problem of them getting
4803         assigned to a random class.
4804
4805         * aot-runtime.c (mono_aot_get_method): Ditto.
4806         
4807 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4810         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4811
4812 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4813
4814         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4815         until they're implemented properly.
4816
4817         * exceptions-ppc.c: Use arch-independent exception-handling code
4818         instead of custom one.
4819
4820         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4821         for Linear IR.
4822
4823         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4824
4825         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4826         applies when __powerpc__ is defined.
4827
4828 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4829
4830         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4831         methods to their code to avoid computing the full name of wrappers and
4832         doing a lookup in a string hash table.
4833
4834 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4837         we identify bblocks before method_to_ir () is ran.
4838
4839         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4840         Also avoid optimizing branches pointing to themselves.
4841
4842         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4843
4844 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4845
4846         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4847
4848 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4851         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4852         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4853         'buf'.
4854
4855         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4856         jumped to the same entry in plt_jump_table.
4857
4858 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4859
4860         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4861         dynamic images.
4862
4863 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4864
4865         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4866         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4867         #421807.
4868
4869 2008-08-29  Geoff Norton  <gnorton@novell.com>
4870
4871         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
4872         segment, and doesn't properly handle .space as .text.  Fixes
4873         AOT Mach/ARM
4874
4875 2008-08-29  Geoff Norton  <gnorton@novell.com>
4876
4877         * mini.c: Disable the mach exception handler when running on 
4878         ARM
4879
4880 2008-08-29  Geoff Norton  <gnorton@novell.com>
4881
4882         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
4883         globals on Darwin/ARM
4884
4885 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4886
4887         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
4888         since too many things depend on it. Instead, call 
4889         mono_runtime_set_no_exec ().
4890         
4891         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
4892         the new JIT.
4893
4894         * aot-compiler.c: Add an 'asm-only' AOT option.
4895
4896         * mini.c: Avoid initializing the runtime when doing AOT compilation.
4897                 
4898         * aot-compiler.c (compile_method): Disable gshared support for now as it
4899         doesn't yet work.
4900
4901 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4902
4903         * mini-amd64.h : Fix a compiler warning.
4904
4905         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
4906           Changed to use a callback function to retrieve the unwind info.
4907           This avoids problems observed when code blocks were removed by
4908           unloading an app domain.
4909
4910         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
4911           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
4912           to work properly.
4913
4914         Contributed under MIT/X11 license.
4915
4916 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4917
4918         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
4919           case to keep the stack aligned to 8.
4920
4921         Contributed under MIT/X11 license.
4922
4923 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
4924
4925         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
4926         avoid repeated linear searches.
4927
4928 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4929
4930         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
4931         methods it can't handle.
4932         
4933         * aot-compiler.c (add_method): Avoid adding a method twice.
4934         (add_wrappers): Add runtime invoke wrappers for all methods.
4935
4936         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
4937         function to create an aot-compatible version of this trampoline.
4938
4939         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
4940
4941 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
4944
4945         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
4946         with a generic sharing failure.
4947
4948         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
4949
4950         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
4951         CEE_RETHROW. Fixes #419634.
4952
4953         * mini.c (mono_method_to_ir): Ditto.
4954
4955         * exceptions.cs: Add a new test.
4956         
4957         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
4958         to mono_type_stack_size_internal () since some callers might not pass in
4959         an rgctx.
4960
4961         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
4962         instrument_prolog. Fixes #419878.
4963
4964         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
4965         doubles in soft float mode volatile.
4966
4967 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4968
4969         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
4970
4971         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
4972         to handle soft float correctly.
4973
4974         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
4975         the fast path.
4976
4977         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
4978
4979         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
4980         to sp, since the generics catch code requires it.
4981
4982         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
4983         copying.
4984
4985         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
4986         mono_arch_emit_imt_argument ().
4987
4988         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
4989
4990         * mini-arm.c tramp-arm.c: Generic sharing updates.
4991
4992 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4993
4994         * mini-arm.c: Fix the arm build.
4995
4996         * generic-sharing.c (mini_type_get_underlying_type): New helper function
4997         handling enums, generic instances and generic sharing.
4998         (mini_type_stack_size_full): Ditto.
4999
5000         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
5001         
5002         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
5003
5004         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
5005
5006         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
5007         trampolines.
5008
5009         * mini-arm.c: Various small generic sharing changes.
5010
5011         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
5012         this for x86.
5013         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
5014         custom code.
5015
5016         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
5017         helper function to return a generic class init trampoline.
5018
5019         * method-to-ir.c mini.c: Use it.
5020         
5021         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
5022         arch-specfic function to return a generic class init trampoline.
5023
5024         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
5025         the GENERIC_CLASS_INIT custom code.
5026
5027         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
5028         a fatal error, not a sharing failure.
5029
5030         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
5031         needed.
5032
5033         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
5034         trampoline argument from MONO_ARCH_VTABLE_REG.
5035
5036         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5037         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5038         argument, and pass the vtable in VTABLE_REG.
5039
5040         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5041         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5042         argument, and pass the vtable in VTABLE_REG.
5043         (mono_arch_create_trampoline_code_full): Remove some special casing for
5044         the rgctx fetch trampoline.
5045
5046         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
5047         Fixes #419273.
5048
5049         * iltests.il: Add a test for it.
5050
5051 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5052
5053         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
5054
5055         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
5056         no longer needed.
5057
5058         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
5059         use mono_jit_info_table_find () to avoid recursion.
5060         (mono_delegate_trampoline): Add a sync wrapper here.
5061
5062         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
5063         here.
5064
5065         * mini.c (mono_method_to_ir): Ditto.
5066         
5067         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
5068         add_sync_wrapper argument. Don't add a sync wrapper here.
5069         (mono_create_jump_trampoline): Don't add a sync wrapper here.
5070
5071         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
5072         
5073 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5074
5075         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
5076           of nonvolatile registers back from MonoContext to CONTEXT.
5077
5078         Contributed under MIT/X11 license.
5079
5080 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5081
5082         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
5083           arguments on Winx64 there are only 4 argument registers.  For this
5084           logic to work the last argument must be pulled from the stack.  
5085
5086         Contributed under MIT/X11 license.
5087
5088 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5089
5090         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5091
5092         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
5093         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
5094         encode/decode_method_ref ().
5095
5096         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
5097
5098         * aot-runtime.c (decode_patch): Ditto.  
5099
5100         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
5101         MONO_PATCH_INFO_METHOD.
5102
5103         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
5104         MonoGenericJitInfo.
5105
5106         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
5107         MonoGenericJitInfo.
5108
5109         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
5110
5111         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
5112         one from the caller.
5113
5114         * aot-runtime.c (decode_generic_inst): New function to decode and
5115         return a interned generic inst.
5116         (decode_klass_ref): Use it.
5117         (decode_method_ref): Ditto.
5118
5119         * aot-compiler.c (emit_exception_debug_info): Save 
5120         jinfo->has_generic_jit_info too.
5121
5122 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5123
5124         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
5125
5126         * iltests.il.in: Add a test for fconv_to_i.
5127
5128         * liveness.c: Disable the liveness2 pass for now to save space.
5129
5130         * regalloc2.c: Include mempool-internals.h to fix warnings.
5131
5132         * aot-compiler.c (encode_method_ref): Encode the context of generic
5133         instance methods.
5134
5135         * aot-runtime.c (decode_method_ref): Inflate generic methods using
5136         the context saved in the aot file.
5137
5138         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5139
5140         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5141
5142         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
5143         volatile so they won't be optimized away.
5144
5145 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
5146
5147         * ssa.c:
5148         * ssa2.c:
5149         * mini.c:
5150         * regalloc2.c:
5151         * dominators.c: Remove duplicated functions that now are in
5152         mempool-internals.h.
5153
5154 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * aot-compiler.c: Fix warnings.
5157
5158         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5159
5160         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5161
5162         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5163         as the patch type.
5164
5165         * mini.c (mono_resolve_patch_target): Ditto.
5166         
5167         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5168         (encode_klass_ref): Add support for encoding VARs/MVARs.
5169
5170         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5171
5172         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5173         the handling of the got entries into a separate 'decode_got_entry' function.
5174         Add support for RGCTX_FETCH.
5175
5176         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5177         clobbered by the trampoline code.
5178
5179         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5180         not clobbered by the indirect calling code.
5181
5182 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5183
5184         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5185         to fix the build.
5186
5187 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5190         signature using the compilation mempool otherwise we would leak it.
5191
5192 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5195         mono_emit_abs_call ().
5196
5197         * patch-info.h: Add GENERIC_CLASS_INIT.
5198
5199         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5200
5201         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
5202         as their target as a near call.
5203
5204         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5205         ABS handling code.
5206         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5207
5208         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
5209         call to a runtime function described by a patch.
5210
5211         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
5212         mono_emit_abs_call, this has the advantage that the ABS handling code in
5213         mono_codegen () can handle them both, and can handle other stuff in the
5214         future without additional code.
5215
5216         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
5217         entry.
5218         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
5219         abs addresses.
5220
5221         * mini.h: Add missing bblock related prototypes.
5222
5223         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5224         reverse_inst_list_len fields.
5225
5226         * mini.c: Refactor this file a bit by moving branch optimizations to 
5227         branch-opts.c.
5228
5229         * method-to-ir.c: Merge generic sharing changes missed earlier.
5230
5231         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5232
5233         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5234         shared patches. Process METHODCONST as a shared patch.
5235
5236         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5237         as it crashes on the 2.0 mscorlib.
5238
5239         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5240         to cause crashes.
5241         
5242         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5243         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5244         by IMT.
5245
5246         * aot-compiler.c: Reorganize the got handling code to be a bit more
5247         understandable.
5248
5249 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5250
5251         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5252         mono_patch_info_equals/hash, and use it to massively simplify
5253         get_plt_index ().
5254
5255         * mini.c (mono_patch_info_hash): Simplify this and add support for
5256         more patch types.
5257
5258         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5259
5260         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5261         handling code, since an offset is not enough to identify a trampoline.
5262
5263         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5264
5265 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5266
5267         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5268
5269         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5270
5271         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5272
5273         * decompose.c: PPC decompositions for various ops.
5274
5275         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5276
5277 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5280         call the generic trampoline code using a call, instead of a jump, to
5281         remove some special casing from the generic trampoline code.
5282
5283         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5284         (mono_codegen): Ditto.
5285
5286         * aot-compiler.c aot-runtime.c: Ditto.
5287
5288         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5289
5290         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5291         helper function to find the offset corresponding to a lazy fetch trampoline.
5292
5293         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5294         when doing generic sharing.
5295
5296         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5297         places.
5298         
5299         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5300         mini-trampolines.c to be with the other trampoline creation functions.
5301
5302         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5303         as it is equal to method->signature in most cases, add a 
5304         mono_emit_method_call_full variant which takes a signature and an imt
5305         argument as well.
5306
5307 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5308
5309         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5310         to this function, since it could be computed easily from the method 
5311         argument.
5312         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5313         more.
5314
5315         * method-to-ir.c mini.c: Remove references to 
5316         compile_generic_method_wo_context.
5317
5318         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5319         generic method calls.
5320         
5321         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5322         dimensional non-szarrays.
5323
5324         * mini.c (mini_init): Register mono_array_new_1.
5325
5326         * jit-icalls.c (mono_array_new_1): New jit icall.
5327
5328         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5329         pointing to the method.
5330
5331         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5332         method addresses belonging to METHOD_JUMP patches in the 
5333         jump_target_got_slot_hash.
5334         (mono_aot_load_method): Ditto.
5335
5336         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5337         METHOD_JUMP patches.
5338
5339         * mini.c (mini_create_jit_domain_info): New helper function which 
5340         initializes/frees domain->runtime_info.
5341         (mini_free_jit_domain_info): Ditto.
5342         (mini_init): Install the domain hook functions with the runtime.
5343
5344         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5345         information maintained by the JIT.
5346
5347         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5348         insertion into jump_table_hash into mono_codegen (), also implement proper
5349         locking.
5350
5351         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5352         tail calls, it is already done by the aot code.
5353         
5354         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5355         mechanism on amd64.
5356
5357         * iltests.il.in: Make the jmp test a bit more complex.
5358
5359         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5360         generic instances which doesn't have a token.
5361
5362         * aot-runtime.c (decode_method_ref): Ditto.
5363         
5364         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5365         can handle this case now.
5366         (handle_box): Ditto.
5367
5368 2008-08-15  Geoff Norton  <gnorton@novell.com>
5369
5370         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5371         debugging check.
5372
5373 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5374
5375         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5376         calling generic methods.
5377
5378         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5379
5380         * aot-runtime.c (decode_patch_info): Ditto.
5381
5382         * mini.c (mono_resolve_patch_target): Ditto.
5383         
5384         * patch-info.h: Add METHOD_RGCTX.
5385
5386         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5387
5388 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5389
5390         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5391         arguments in registers.
5392
5393         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5394         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5395
5396         * mini.c (mini_method_compile): Abort aot compilation for generic
5397         methods if generic sharing is disabled.
5398         
5399         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5400         an mrgctx.
5401
5402         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5403         requiring an mrgctx.
5404
5405         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5406         store instructions when converting a vcall to a normal call.
5407
5408         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5409         mono_arch_find_jit_info.
5410
5411 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5412
5413         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5414         avoid calling mono_method_full_name () for every method even if the
5415         env var is not set.
5416         (check_inline_caller_method_name_limit): Ditto.
5417
5418 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5419
5420         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5421         assemblies in one run.
5422
5423         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5424         skipped methods if it is not 0.
5425
5426         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5427
5428 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5429
5430         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5431           MONO_ARCH_HAVE_UNWIND_TABLE.
5432
5433         Contributed under MIT/X11 license.
5434
5435 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5436
5437         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5438           from default optimizaton list on Winx64.
5439
5440         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5441
5442         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5443           the LMF from the MonoJitTlsData structure.
5444
5445         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5446
5447         Contributed under MIT/X11 license.
5448
5449 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5450
5451         * mini.c (sigsegv_signal_handler): Fix the build.
5452
5453         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5454         assembly->aot_module.
5455
5456         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5457         hash table. This simplifies and speeds up a lot of code, and fixes support
5458         for .netmodules.
5459
5460         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5461         with the runtime.
5462
5463         * mini-exceptions.c: Ditto.
5464         
5465         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5466         'native_offset' argument, since these are computed in the 
5467         mono_find_jit_info () function.
5468
5469         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5470         is used by exceptions-ppc.c.
5471
5472         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5473         mono_arch_find_jit_info ().
5474         
5475         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5476         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5477         generic code in mini-exceptions.c.
5478
5479 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5480
5481         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5482
5483         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5484         
5485         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5486         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5487         called while holding the loader lock. Fixes #415608.
5488         (mono_aot_get_method_from_token_inner): Ditto.
5489
5490 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5491
5492         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5493         to reduce differences between this and the generic implementation in
5494         mini-exceptions.c.
5495         (ves_icall_get_frame_info): Ditto.
5496
5497         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5498
5499         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5500         longer neccesarry.
5501
5502         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5503         mono_arch_get_call_filter () and make it non-static, for consistency with the
5504         other architectures.
5505
5506 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * mini.c:
5509         * local-propagation.c:
5510         * mini-x86.c: Correct the name of arch defines.
5511
5512 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5513
5514         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5515         NO_EMULATE_LONG_SHIFT_OPS define.
5516
5517 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5520         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5521
5522         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5523         MACH fixes. Merged from the 2.0 branch.
5524
5525         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5526
5527         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5528         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5529
5530         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5531
5532         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5533         mono_marshal_get_native_wrapper () signature changes.
5534
5535 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5536
5537         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5538         conversion bug under arm.
5539
5540 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5541
5542         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5543
5544         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5545         with overflow checking.
5546
5547 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5548
5549         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5550         to the genmdesc.pl file
5551
5552 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5553
5554         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5555         arg_array in the soft-float versions of the LOAD/STORE macros.
5556
5557         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5558         implementation.
5559
5560         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5561
5562 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5565         a float HFA. Fixes #413621.
5566
5567 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5568
5569         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5570         frame_size to args_size. Fixes build.
5571
5572 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5573
5574         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5575         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5576
5577         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5578         the stack are not unaligned. Fixes #413247.
5579         
5580 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5581
5582         * mini.c: update jitted methods performance counters.
5583
5584 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5585
5586         * mini-exceptions.c: increase the exceptions thrown performance
5587         counter in mono_handle_exception ().
5588
5589 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5590
5591         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5592         can work with netmodules.
5593
5594 2008-07-28  Geoff Norton  <gnorton@novell.com>
5595
5596         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5597         regression tests.
5598
5599 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5602         correct place.
5603
5604 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5605
5606         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5607           The float param registers and other param registers must be the 
5608           same index on Windows x64.
5609
5610         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5611           ArgValuetypeAddrInIReg argument case.  Setting the argument
5612           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5613
5614         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5615           variable computed above as the copy length for arguments of storage
5616           type ArgValuetypeAddrInIReg.
5617
5618         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5619           ArgValuetypeAddrInIReg argument case.  This case will rely on
5620           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5621
5622         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5623           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5624           jump and tail call instructoins as they do not follow the typical call behavior.
5625
5626         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5627           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5628           local variable and pass the local variable by reference to the called method.
5629
5630         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5631           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5632           of a struct is passed in a register it must be saved with the other
5633           volatile argument on the stack.
5634
5635         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5636           frame pointer the stack adjustment value must be saved to the unwind 
5637           info structure.
5638
5639         Contributed under MIT/X11 license.
5640
5641 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5642
5643         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5644         which got lost in the merge.
5645
5646 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5649         build.
5650
5651         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5652         
5653         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5654         icalls, since they won't be patched.
5655
5656         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5657         different code sequence when running under valgrind to prevent some valgrind
5658         errors.
5659
5660         * iltests.il.in: Add new regression test.
5661
5662         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5663         end with a throw.
5664
5665         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5666         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5667
5668         * iltests.il.in: Add new test.
5669
5670         * aot-compiler.c: Fix some warnings.
5671
5672         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5673         Fixes #412494.
5674
5675 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5676
5677         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5678         (mini_usage_jitdeveloper): Add a missing --wapi option.
5679
5680 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5681
5682         * mini-codegen.c: Simplify the is_fp macros.
5683         (free_up_ireg): Remove, use free_up_reg instead.
5684         (free_up_reg): Fix the fp case.
5685
5686 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5689         lowered earlier.
5690
5691         * exceptions-x86.c: Merge some changes which seemed to have got lost
5692         in the linear-ir merge.
5693
5694         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5695
5696         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5697         long vreg volatile even if the variable was already created.
5698
5699         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5700         volatile variables.
5701
5702 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5703
5704         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5705
5706         * mini.c (mono_jit_compile_method_inner): Add support for 
5707         MONO_EXCEPTION_BAD_IMAGE.
5708
5709         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5710         mini_method_get_context () returns NULL. Fixes #356531.
5711
5712         * mini.c (mono_method_to_ir): Ditto.
5713         
5714         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5715         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5716
5717 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5718
5719         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5720         in the LDFTN implementation.
5721
5722 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5723
5724         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5725         code, patch calls to icalls, too, even if they're not in the
5726         shared generic code hash.  Fixes #411962.
5727
5728 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5729
5730         * cpu-x86.md: Increase the length of the fcall opcodes.
5731
5732         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5733         calls returning floats.
5734
5735         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5736         on NEWARR.
5737         
5738         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5739         missed earlier.
5740
5741         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5742         into the domain->method_code_hash.
5743
5744         * aot-compiler.c: Fix win32 build.
5745
5746         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5747         
5748         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5749         gshared NEWARR implementation.
5750
5751         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5752
5753         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5754         can be used outside of method_to_ir.
5755
5756         * mini.h (MonoCompile): Add arg_types field.
5757
5758         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5759         
5760         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5761         the values of the local arg_array and param_types array.
5762
5763 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5764
5765         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5766         got accesses might only get generated later when NEWOBJ is decomposed.
5767         
5768         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5769         looking up the native code of the target method when a delegate is called
5770         for the first time.
5771
5772         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5773         optimization.
5774
5775         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5776
5777         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5778         AOT work on platforms without a working dlsym implementation.
5779
5780         * mini.h: Bump AOT image format version.
5781         
5782 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5783
5784         * mini-exceptions.c: Free a MonoType with
5785         mono_metadata_free_type() instead of g_free().
5786
5787         * aot-runtime.c: Free a MonoType.
5788
5789 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5790
5791         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5792         optimization.
5793
5794         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5795         fp stack on x86.
5796
5797 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5798         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5799         profiler hook.
5800
5801 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5802
5803         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5804         NEWOBJ calls on valuetypes.
5805
5806         * iltests.il.in: Add new test.
5807
5808         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5809
5810 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5813         is no longer needed.
5814
5815         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5816         non register sized integer arguments.
5817         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5818         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5819         emit_memcpy2 ().
5820
5821         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5822         CEE_MONO_RETOBJ.
5823         
5824         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5825         two a binop with different sized arguments is emitted.
5826
5827         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5828         instruction in the ins==NULL case.
5829
5830 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5833
5834         * mini-x86.c: Fix osx build.
5835
5836         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5837         opcodes as well.
5838
5839         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5840         instruction for non int sized variables.
5841
5842         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5843         implementation.
5844
5845 2008-07-23  Robert Jordan  <robertj@gmx.net>
5846
5847         * method-to-ir.c: Fix MSVC build.
5848
5849 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5852         a non int sized type, widen it to an int since newer versions of gcc seem to
5853         generate code which needs this.
5854
5855         * ssa2.c abcremoval2.c: Fix warnings.
5856
5857         * *: Merge the Linear IR branch.
5858
5859         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5860         the ChangeLog file there describes all the changes done over the years. 
5861         Further documentation can be found at www.mono-project.com/Linear_IL.
5862
5863 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5864
5865         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5866           The float param registers and other param registers must be the 
5867           same index on Windows x64.
5868
5869         Contributed under MIT/X11 license.
5870
5871 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
5872
5873         * mini.c: Make the previous fix GC safe.
5874
5875 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
5876
5877         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
5878
5879 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5880
5881         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
5882           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
5883           ArgValuetypeAddrInIReg instead.
5884
5885         Contributed under MIT/X11 license.
5886
5887 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
5888
5889         * mini-codegen.c (get_register_spilling): Fix a warning.
5890
5891 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
5892
5893         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
5894         for types which the initialization fails. Raises the provided exception
5895         at the right stop after cleanup.
5896
5897 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
5898
5899         * aot-compiler.c: Free most of the memory allocated during compilation.
5900
5901         * mini.c (mini_parse_debug_options): Fix a leak.
5902         
5903         * mini.c (mini_method_compile): Don't add the method to the jit info tables
5904         during aot compilation.
5905
5906 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
5907
5908         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
5909         it has too much register pressure.
5910
5911 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5912
5913         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
5914
5915 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5916
5917         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5918         on x86.
5919
5920         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5921         on amd64 similar to the way it is done on arm.
5922
5923         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5924
5925         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
5926         consistency, normalize error messages, avoid loading aot-only modules in
5927         normal mode.
5928
5929         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
5930         for consistency.
5931
5932         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
5933
5934 2008-07-11  Martin Baulig  <martin@ximian.com>
5935
5936         * debug-debugger.h
5937         (MonoDebuggerInfo): Add `interruption_request'.
5938
5939 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5940
5941         * aot-compiler.c (emit_plt): Remove some dead code.
5942
5943         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
5944
5945         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
5946         return the plt info offset belonging to a given plt entry.
5947
5948         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
5949         mono_aot_get_plt_info_offset.
5950         
5951         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
5952         similar to the amd64 code by makeing jumps through a separate jump table 
5953         instead of embedding the jump addresses into the code.
5954
5955 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
5956
5957         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
5958         method.
5959
5960 2008-07-10  Martin Baulig  <martin@ximian.com>
5961
5962         * mini.c (mini_method_compile): Disable generics sharing when
5963         running in the debugger.
5964
5965 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5966
5967         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
5968
5969         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
5970         the local register allocator from running out of registers on x86 when 
5971         using aot.
5972
5973 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
5974
5975         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
5976         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
5977         C4146.
5978
5979         Contributed under MIT/X11 license.
5980
5981 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
5984         speed up the assembler.
5985
5986 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5987
5988         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
5989         support.
5990
5991         * mini.c: Move the soft float handling macros a bit earlier, add 
5992         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
5993         place.
5994
5995         * mini.h: Add prototype for mono_arch_fixup_jinfo.
5996
5997         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
5998         read-only to help catch code allocation requests.
5999         
6000         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
6001         and turn it off when using --aot-only or when compiling with --aot=full.
6002
6003         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
6004         jump table for switches from the normal domain mempool, not the code
6005         manager.
6006
6007         * mini-trampolines.c (get_unbox_trampoline): New function to return an
6008         unbox trampoline which handles aot-only mode too.
6009
6010         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
6011         an AOTed unbox trampoline.
6012
6013         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
6014
6015 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6016
6017         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
6018         ""
6019
6020         Contributed under MIT/X11 license.
6021
6022 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6023
6024         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
6025           the unwind information for the method at the end of the allocated block.
6026           
6027         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
6028           MonoCompileArch to hold the unwind info for SEH on Winx64
6029         
6030         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
6031           frame pointer info for the method being compiled.
6032           
6033         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
6034           the call to mono_exception_from_token.
6035           
6036         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
6037           storing the method prolog information in a format that the Winx64 SEH can understand.  This
6038           information is stored a the end of the method block because it is all 32-bit offset based.
6039
6040         Contributed under MIT/X11 license.
6041
6042 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6043
6044         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
6045
6046         * wapihandles.c: Fix warnings.
6047
6048         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
6049         mode.
6050
6051         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
6052         mono_jit_compile_method in aot-only mode since that calls the type 
6053         initializer.
6054         
6055         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
6056         get_delegate_invoke_impl in aot-only mode.
6057
6058         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
6059
6060 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
6061
6062         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
6063
6064         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
6065         is on by default.
6066
6067         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
6068
6069         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
6070         init trampoline from the AOT file as well.
6071
6072         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
6073         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
6074         code.
6075
6076         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
6077         mono_init.
6078
6079         * exceptions-amd64.c: Add _full variants for the remaining exception code
6080         creation functions as well, allow emission of relocatable code, remove
6081         caching since that is now done by the caller.
6082
6083         * mini-exceptions.c: Add _full variants for the remaining exception code
6084         creation functions as well, add aot-only support.
6085
6086         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
6087         if we can determine a proper token for them.
6088         (add_wrappers): Add a few more wrappers.
6089         (emit_method_code): Remove some dead code.
6090         (emit_trampolines): Emit exception code too.
6091
6092         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
6093
6094         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
6095         mono_array_new_va which avoids varargs.
6096
6097         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
6098
6099         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
6100         mono_arch_create_specific_trampoline () in all places.
6101
6102         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
6103         a bit so it can be used for other things as well.
6104         
6105         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
6106         on demand as well.
6107
6108         * exceptions-amd64.c: Rename the caching from the exception code creation
6109         functions, it is done by the caller instead.
6110         
6111         * exceptions-amd64.c: Change the signature of the exception code creation 
6112         functions to allow the creation of relocatable code later.
6113
6114         * mini-exceptions.c: Add a set of functions to query the various 
6115         runtime-generated exception functions.
6116
6117         * mini.c mini-exceptions.c: Use the newly added functions instead of the
6118         mono_arch_.. () functions.
6119         
6120 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6121
6122         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
6123
6124         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
6125
6126         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
6127         (mini_get_vtable_trampoline): Ditto.
6128
6129         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
6130         code in the AOT case by returning the code size and a list of relocations to
6131         the caller.
6132
6133         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
6134
6135 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6136
6137         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
6138           clean the stack.
6139
6140         Contributed under MIT/X11 license.
6141
6142 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6143
6144         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
6145         so the buffer size can be computed correctly. Fixes #404735.
6146
6147         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
6148         normally as cfg->debug_info is already freed.
6149
6150 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6151
6152         * mini-amd64.c: For calls returning vtypes in registers, don't store
6153         the return address on the stack, instead allocate a separate local for
6154         it. Fixes #404729.
6155
6156 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6157
6158         * mini-trampolines.c, mini.h: Add an argument to
6159         mono_create_jit_trampoline_in_domain() for turning off the adding
6160         of the sync wrapper.
6161
6162         * mini.c: Use the JIT trampoline without sync instead of
6163         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6164         be patched.
6165
6166 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6167
6168         * driver.c: Turn on GSHARED optimization by default.
6169
6170 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6173         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6174
6175         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6176         create a variant of the generic trampoline code callable from AOTed trampolines.
6177
6178         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6179         trampoline code callable from AOTed trampolines.
6180
6181         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6182
6183 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6184
6185         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6186         pass-through manner.
6187
6188         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6189         and don't fail sharing for them anymore.
6190
6191         * mini-exceptions.c: Handle exceptions in shared generic methods.
6192
6193         * generic-sharing.c: When checking the context of a generic
6194         method, also check its class's context.  Don't treat wrappers as
6195         sharable.
6196
6197         * mini-trampolines.c: Some code factored out to
6198         metadata/generic-sharing.c.  Handle the MRGCTX case.
6199
6200         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6201         we must deal with the method being of another instantiation of the
6202         class.  Add static rgctx invoke wrappers to generic methods.
6203
6204 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6205
6206         * mini.c: Provide all jit infos of generic shared methods with a
6207         generic jit info.
6208
6209         * mini-exceptions.c: Handle the new situation that a generic info
6210         might be available, but not info about the this/vtable/mrgctx
6211         variable.
6212
6213 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6214
6215         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
6216         generic methods.
6217
6218 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * dominators.c (check_dominance_frontier): Fix a warning.
6221
6222         * mini.h: Add some missing prototypes.
6223
6224         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6225
6226         * driver.c (mono_jit_init_version): Correct the comments since the first
6227         argument should be the name of the root domain, not a filename.
6228
6229         * aot-runtime.c (make_writable): Error out if this is called while running
6230         with --aot-only.
6231         (load_aot_module): Ditto.
6232
6233         * aot-compiler.c: Really fix the computation of method indexes.
6234
6235         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6236         optimizations as this is no longer called frequently.
6237
6238         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6239         method and the invoke impl code and pass it to the delegate trampoline instead of
6240         just the delegate class.
6241
6242 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * aot-compiler.c: Fixup the computation of method indexes.
6245         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6246         the method builder infrastructure.
6247
6248         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6249         has no header.
6250
6251         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6252         mode, load the method right away instead of creating a trampoline.
6253
6254         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6255
6256         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6257         some checks a bit.
6258
6259 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6260
6261         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6262         (mono_aot_load_method): Use method_index instead of method->token.
6263
6264         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6265         can handle icalls etc. properly.
6266
6267         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6268
6269         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6270
6271         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6272         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6273         JIT_ICALL_ADDR patch type.
6274
6275         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6276
6277         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6278         request flag.
6279         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6280
6281         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6282
6283 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6284
6285         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6286         domain->jit_code_hash.
6287
6288 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6291
6292 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6293
6294         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6295         get_this_arg_from_call, let it compute it when needed.
6296
6297         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6298         gsctx from code only when needed.
6299
6300         * mini-trampolines.c (get_generic_context): Rename this to 
6301         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6302         it can be called by the arch backends.
6303
6304         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6305
6306 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6307
6308         * driver.c (mono_main): Add experimental --aot-only command line option.
6309
6310         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6311         set.
6312
6313 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
6314
6315         * driver.c (DllMain): Remove mono_module_handle.
6316
6317         Contributed under MIT/X11 license.
6318
6319 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6320
6321         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6322         for emitting methods which are not in the source assembly. Detect and report
6323         failure of assembling+linking.
6324         
6325         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6326
6327         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6328
6329 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6330
6331         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6332
6333 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6334
6335         * mini.h: Remove some obsolete prototypes.
6336
6337         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6338
6339 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6340
6341         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6342         supported by Visual Studio, so use alloca().
6343
6344 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6347         Fixes #402585.
6348
6349 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6350
6351         * mini.c: Fail sharing of a generic method if it contains an open
6352         catch clause (because we don't pass MRGCTXs yet).
6353
6354 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6355
6356         * mini.c: When compiling a method with generic sharing, insert the
6357         method instantiated with an all-Object generic context into the
6358         jit info table, instead of the context of the first instantiation
6359         of the method we happen to compile.
6360
6361 2008-06-18  Martin Baulig  <martin@ximian.com>
6362
6363         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6364         `major_version' and `minor_version'.
6365
6366 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6367
6368         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6369         mono_method_is_generic_sharable_impl() takes an additional
6370         argument specifying whether to treat type variables as reference
6371         types.
6372
6373 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6374
6375         * mini.h: Removed obsolete prototypes.
6376
6377 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6378
6379         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6380         already handle them.
6381
6382 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6383
6384         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6385         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6386         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6387         tramp-x86.c: Added a MonoGenericContext* argument to
6388         mono_arch_get_unbox_trampoline() so that it can call other
6389         functions which require it.
6390
6391 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6392
6393         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6394         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6395         mono_arch_get_this_arg_from_call() takes a
6396         MonoGenericSharingContext* as well.
6397
6398 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6399
6400         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6401         implement generic sharing of unbox.
6402
6403 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6404
6405         * mini.c: Don't compute the vtable to determine whether a field is
6406         special static, because it might not work for open types.
6407
6408 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6409
6410         * mini.c: Removed the unused token_type and token_source arguments
6411         from get_runtime_generic_context_ptr().
6412
6413 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6414
6415         * mini.c (ADD_BINOP): fix the build
6416
6417 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6418
6419         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6420         a widening op.
6421
6422 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6423
6424         * mini.h: Removed class relations enum that's not used anymore.
6425
6426 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6427
6428         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6429
6430         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6431         the lazy fetch trampoline access code.
6432
6433 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6434
6435         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6436
6437 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6438
6439         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6440
6441         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6442
6443         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6444
6445 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6448         intrinsics.
6449
6450         * mini-ops.h: Add MIN/MAX_UN opcodes.
6451
6452         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6453         intrinsics.
6454
6455         * basic-math.cs: Add more min/max tests.
6456
6457         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6458
6459 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6460
6461         * mini.c: Small fix in the prologue of emit_castclass.
6462
6463 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6464
6465         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6466
6467         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6468         do not work even for unsigned types. Fixes #400014.
6469
6470         * basic-math.cs: Add regression tests for unsigned Min/Max.
6471
6472 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6473
6474         * mini.c: Added additional context_used argument to several
6475         functions, which will be needed for sharing generic methods.  Use
6476         GET_RGCTX macro wherever appropriate.  Declare only one
6477         context_used in mono_method_to_ir().
6478
6479 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6480
6481         * mini.c, generic-sharing.c: Removed generic class relations.
6482
6483         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6484         functions due to MRGCTX changes.
6485
6486 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6487
6488         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6489         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6490         with calculated IMT.
6491
6492         * mini.c: Generic sharing of calls via generic interfaces.
6493
6494         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6495         generic method with non-constant MonoGenericContext*.  Instead,
6496         the context is taken out of the method itself.
6497
6498 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6499
6500         * mini.c: Generic sharing of ldvirtftn.
6501
6502 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6503
6504         * mini.c: Generic sharing of ldftn.
6505
6506 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6507
6508         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6509
6510 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6511
6512         * mini.c: Generic sharing of the special case of ldtoken followed
6513         by a call to GetTypeFromHandle.
6514
6515 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6516
6517         * mini.c: Generic sharing of box for nullable types.
6518
6519 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6520
6521         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6522         are passed on the stack. Fixes #324807.
6523
6524 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6525
6526         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6527         for the ArgValuetypeAddrInIReg case.
6528
6529         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6530         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6531
6532         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6533         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6534         local variable and pass the local variable by reference to the called method.
6535           
6536         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6537         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6538
6539         Contributed under MIT/X11 license.
6540
6541 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6542
6543         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6544
6545         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6546         everything.
6547
6548 2008-06-10  Martin Baulig  <martin@ximian.com>
6549
6550         * debug-mini.c
6551         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6552
6553 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
6554
6555         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6556         possible error when no arguments are passed.
6557
6558         Contributed under MIT/X11 license.
6559
6560 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6561
6562         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6563         where the file name is NULL.
6564
6565 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6566
6567         * mini.c: Fix s390 build.
6568
6569 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6570
6571         * trace.c (mono_trace_parse_options): Fix warnings.
6572
6573         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6574
6575 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * mini.c (remove_block_if_useless): Avoid printing the method name.
6578         
6579         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6580         MONO_INST_NEW.
6581
6582         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6583         LMF. Not yet used.
6584
6585         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6586         translated code after it has been patched.
6587
6588 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6591         avoid problems during code patching on SMP systems.
6592         (emit_call): Avoid adding a patch info which is already added by 
6593         emit_call_body.
6594         (mono_arch_emit_exceptions): Ditto.
6595
6596 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6597
6598         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6599         MONO_TYPE_ISSTRUCT already checks for it.
6600
6601 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6602
6603         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6604           structs with floats on Winx64 the float registers are not used.  
6605           The integer registers are always used..
6606         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6607           only one register will be used and only if the size of the struct 
6608           is 1,2,4, or 8 bytes.
6609
6610         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6611           to work for Winx64.
6612
6613         Contributed under MIT/X11 license.
6614
6615 2008-06-05  Martin Baulig  <martin@ximian.com>
6616
6617         * debug-debugger.c (debugger_lookup_class): Also call
6618         mono_class_setup_methods() here; we're only called from RTI.
6619
6620 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6621
6622         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6623         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6624         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6625         Post-process object files and add dtrace-generated object, if necessary.
6626
6627         Contributed under MIT/X11 license.
6628
6629 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6630
6631         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6632         element class.
6633
6634         * mini.c: Generic sharing for unbox.any and castclass.
6635
6636 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6637
6638         * mini.c: Ignore tailcall prefix in shared generic code and when
6639         doing calls which require a vtable/rgctx argument.
6640
6641 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6642
6643         * mini.c: Don't free the JIT info.
6644
6645         * driver.c: Changes in the JIT info table testing code.
6646
6647 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6648
6649         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6650         interruption. Fix some warnings.
6651
6652         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6653         interruption_checkpoint.
6654
6655 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6656
6657         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6658         from embedding applications.
6659
6660 2008-06-02  William Holmes  <billholmes54@gmail.com>
6661
6662         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6663           reserving 32 bytes on the stack when making calls. 
6664
6665         Contributed under MIT/X11 license.
6666
6667 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6668
6669         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6670         the linear IL branch.
6671
6672         * driver.c: Print out more information for --version on arm.
6673
6674 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6675
6676         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6677         bb_exit instead, since out of line bblocks might not actually be emitted
6678         out-of-line.
6679         
6680         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6681         maximum epilog size for out of line bblocks if tracing is enabled.
6682
6683         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6684
6685 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6688
6689 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6690
6691         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6692         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6693         opcodes.
6694
6695 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6696
6697         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6698         the 'value' to store is a constant.
6699
6700         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6701
6702         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6703         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6704
6705 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6706
6707         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6708         for accessing method->generic_container.
6709
6710 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6713         
6714         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6715
6716         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6717
6718         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6719         fails.
6720
6721 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6722
6723         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6724
6725         * mini.c: Handle the case when mono_class_vtable () fails.
6726
6727 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6728         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6729         the stat profiler.
6730
6731 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6732
6733         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6734         together with domain sharing.
6735
6736 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6737
6738         * mini.c: Treat callvirts to final methods like non-virtual calls
6739         when doing generic sharing, i.e. look them up in the runtime
6740         generic context.
6741
6742 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6743
6744         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6745         with computed types (for generic sharing).
6746
6747         * mini.c: Generic sharing for mkrefany and refanyval.
6748
6749 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6750
6751         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6752         possible.
6753
6754         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6755         the generic sharing code.
6756         
6757         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6758         when needed.
6759
6760 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6761
6762         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6763
6764 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6765
6766         * driver.c: updated copyright date
6767
6768 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6771         needed.
6772
6773 2008-05-19  Martin Baulig  <martin@ximian.com>
6774
6775         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6776         pointing to the new `_mono_debug_using_mono_debugger' variable.
6777
6778         * driver.c
6779         (mono_main): Check mono_debug_using_mono_debugger() rather than
6780         the `MONO_INSIDE_MDB' environment variable to check whether we're
6781         inside the debugger.
6782
6783 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6784
6785         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6786         argument.
6787
6788 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6789
6790         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6791
6792         * mini.c: Added mini_assembly_can_skip_verification. This
6793         function checks if the assembly requested to skip verification. 
6794         Fixes part of #387274.
6795
6796 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6797
6798         * mini.c (mini_get_method): Disable the check for open generic classes when
6799         using generic sharing.
6800
6801         * generics.cs: Add a test for #387034.
6802
6803         * mini.c (mini_get_method): Check whenever the method class is an open generic
6804         type, and return NULL in that case, causing a verification error. Fixes
6805         #384123.
6806
6807 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6808
6809         * driver.c (mono_main): Revert r102623. The right
6810         thing to do is to enable the verifier under verifiable
6811         unless a --security flag was passed.
6812
6813         We need this non-trivial behavior for --verify-all otherwise
6814         mcs-compileall won't be able to use it. As it needs everything to
6815         be verified under validil.
6816
6817 2008-05-06  Martin Baulig  <martin@ximian.com>
6818
6819         Fix #383749.
6820
6821         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6822         (mono_debugger_thread_cleanup): Likewise.
6823         (mono_debugger_extended_notification): Likewise.
6824
6825 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6826
6827         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6828         against both inflated and non-inflated methods. We need to check against the
6829         generic definition for cases where the instantiated method is not visible.
6830         We need to check against the inflated types for cases where the instantiation
6831         changes any super type. This fixes #382986.
6832
6833         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6834         that check for visibiliy as generic params only appears as the type subject
6835         of tokens on call opcodes. Field manipulation and ldftn must always
6836         target an exact type.
6837
6838 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6839
6840         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6841         if no related --security flag is passed.
6842
6843 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6844
6845         * mini-arch.h: Prepare support for ppc64.
6846
6847         Contributed under MIT/X11 license.
6848
6849 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6850
6851         * aot-runtime.c: Prepare support for ppc64.
6852
6853         Contributed under MIT/X11 license.
6854
6855 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6856
6857         * mini-ops.h: Prepare support for ppc64.
6858
6859         Contributed under MIT/X11 license.
6860
6861 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
6862
6863         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6864
6865         Contributed under MIT/X11 license.
6866
6867 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
6868
6869         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
6870         assemblies, since aot_name is not a full path, causing us to load MS.NET 
6871         assemblies on windows.
6872
6873 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6874
6875         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
6876         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
6877         * main.c: Use UTF-8 encoded command line instead of Windows default code
6878         page on Windows to support Unicode.
6879         * driver.c (DllMain): New function for mixed-mode assembly support.
6880         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
6881         export __stdcall functions without decoration.
6882
6883         Contributed under MIT/X11 license.
6884
6885 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6886
6887         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
6888         saving it very early.
6889
6890 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6891
6892         * mini.h, mini.c: Lots of code for accessing the old RGCTX
6893         deleted.  The only way to access the new RGCTX is via the
6894         trampline.
6895
6896         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
6897         vtable instead of the RGCTX to static methods.
6898
6899         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
6900         accessing the new RGCTX.
6901
6902         * generic-sharing.c: There is no separation between self, type
6903         arguments and other types in the RGCTX anymore.
6904
6905 2008-04-25  Jonathan Chambers <joncham@gmail.com>
6906
6907         * mini-amd64.c (add_general): Remove previous stack adjustment.
6908         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
6909         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
6910         for 32 bytes of stack space reserved for all calls.
6911         
6912         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
6913         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
6914         adjustment.
6915         
6916         Code contributed under MIT/X11 license.
6917
6918 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
6919
6920         * mini.c (mini_method_verify): Only verify non-inflated methods, check
6921         against the root definition, peeling out method and type instantiations.
6922         Cache verify success results, code that fails verification is still
6923         checked multiple times.
6924
6925 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6926
6927         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
6928
6929 2008-04-23  Jonathan Chambers <joncham@gmail.com>
6930
6931         * mini-amd64.c (add_general): Always increment stack on Win64.
6932         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
6933         on Win64.
6934         
6935         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
6936         stack based argument handling on Win64.
6937         
6938         Code contributed under MIT/X11 license.
6939
6940 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
6941
6942         * Makefile.am (version.h): Add support for git-svn.
6943
6944 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6945
6946         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
6947         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
6948         avoiding allocations and libc functions which might deadlock.
6949         
6950         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
6951         'no-gdb-backtrace' option is set.
6952
6953         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
6954
6955         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
6956
6957 2008-04-21  Martin Baulig  <martin@ximian.com>
6958
6959         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
6960         and `get_lmf_addr'; `notification_address' is no longer a pointer.
6961
6962 2008-04-21  Martin Baulig  <martin@ximian.com>
6963
6964         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
6965         `thread_vtable', `event_handler_ptr' and `event_handler'.
6966
6967 2008-04-21  Martin Baulig  <martin@ximian.com>
6968
6969         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
6970         allows delayed initialization of the `executable_code_buffer' when
6971         attaching.
6972
6973 2008-04-21  Martin Baulig  <martin@ximian.com>
6974
6975         * mini.h (mono_debugger_create_notification_function): Removed.
6976         * tramp-*.c (mono_debugger_create_notification_function): Removed.
6977
6978         * mdb-debug-info64.s
6979         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6980
6981         * mdb-debug-info32.s
6982         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6983
6984         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
6985         currently only works on x86 and x86_64, so don't create it on ppc.
6986
6987 2008-04-21  Martin Baulig  <martin@ximian.com>
6988
6989         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
6990
6991         * mini.c
6992         (mini_method_compile): In the fp elimination check, check
6993         `debug_options.mdb_optimizations' in addition to
6994         mono_debug_using_mono_debugger().       
6995
6996         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
6997         disable some JIT optimizations which are only disabled when
6998         running inside the debugger.
6999         Added `--help-debug' option to describe the debugging options.
7000         (parse_debug_options): New static function to parse the `--debug'
7001         options, so we can easily add more stuff in future.
7002
7003 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
7006         the method has no body.
7007
7008 2008-04-19  Jonathan Chambers <joncham@gmail.com>
7009
7010         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
7011         assembly is not allowed in MSVC 64-bit compiler. 
7012         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
7013         as we get floating point exceptions everywhere.
7014         
7015         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
7016         correctly align arguments for call to throw_exception.
7017         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
7018         
7019         Code contributed under MIT/X11 license.
7020
7021 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
7024
7025 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
7028
7029         * mini-amd64.c (NEW_INS): Set cil_code.
7030
7031         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
7032         from mini-amd64.c so all debugger related logic is in one place.
7033
7034         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
7035         later won't have a random ip assigned to them.
7036
7037 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
7038
7039         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
7040         the arch specific function initializes code_size.
7041         (mono_create_delegate_trampoline): Ditto.
7042
7043         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
7044         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
7045         platforms.
7046
7047         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
7048         running under the debugger.
7049
7050         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
7051         debugger.
7052
7053         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
7054         debugger. Also move the disabling of optimizations here from driver.c.
7055         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
7056         debugger.
7057
7058         * mini.h (MonoCompile): Add a few new flags.
7059
7060 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
7061
7062         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
7063         so the cil_code field of created MonoInst's is properly set.
7064         (mini_select_instructions): Ditto.
7065
7066         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
7067         (MONO_INST_NEW_CALL): Ditto.
7068
7069         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
7070         in many places so the ins->cil_code field is properly initialized.
7071
7072         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
7073         place.
7074
7075 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * mini.c (mini_method_compile): Print a different message when compiling a 
7078         shared method.
7079         
7080         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
7081         > 1.
7082
7083 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
7086         SSE2 instructions.
7087
7088         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
7089         
7090 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7091
7092         * mini.c (handle_stack_args): Make this return void since its return value was
7093         never used. Also set cfg->unverifiable for invalid IL instead of calling
7094         G_BREAKPOINT ().
7095
7096 2008-04-10  Mark Probst  <mark.probst@gmail.com>
7097
7098         * mini.c: Make sure "this" is live in catch clauses with type
7099         variables in shared generic code.
7100
7101 2008-04-08  Mark Probst  <mark.probst@gmail.com>
7102
7103         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
7104         generic_class_is_reference_type() to ensure the proper behaviour
7105         when sharing generic code and the type in question is a type
7106         argument.
7107
7108 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7109
7110         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
7111         race conditions when printing thread dumps. Fixes #377738.
7112
7113 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
7114         
7115         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
7116         shows up when both MonoInst arguments can cause aliasig.
7117         There is likely no way in the current JIT to trigger this problem, but
7118         it showed up in the development of generics sharing, when in a new
7119         opcode both args of an OP_GROUP can be aliases (addresses of a local).
7120         When the generics sharing code will be committed, its tests will be
7121         valid also for this bug.
7122
7123 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7124
7125         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
7126         PATCH_INFO_METHOD.
7127
7128         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
7129         NULL.
7130
7131 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
7134         use a more detailed exception message for InvalidCastException.
7135
7136         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
7137
7138         * driver.c (mono_main): Add --debug=casts option to turn on better 
7139         InvalidCastException message details.
7140
7141         * mini.c (mini_get_debug_options): New helper function to return the address of
7142         the debug_options variable.
7143
7144         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
7145         the jit_tls TLS variable.
7146
7147         * mini.c (mono_jit_tls): New TLS variable.
7148
7149         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
7150         option is used.
7151
7152 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
7153
7154         * mini.h: Removed verifer related stuff. This code was moved to verify.c
7155
7156         * mini.c: Removed verifer related stuff, code moved to verify.c.
7157
7158         * driver.c: Using code from verify.c instead of mini.c.
7159
7160 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7161
7162         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7163         longer valid.
7164
7165 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7166
7167         * mini.c (check_for_method_verify): Enabling verification of
7168         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7169         have been fixed.
7170
7171 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7174         caller saved registers as well.
7175         
7176         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7177         saved registers as well.
7178
7179 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7180
7181         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7182
7183         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7184         code.
7185
7186 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7187
7188         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7189         to get_call_info.
7190         (get_call_info): Take a gsctx argument instead of 'cfg'.
7191
7192 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7195         mono_verify_all is set.
7196
7197         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7198
7199         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7200
7201 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7202
7203         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
7204         an exception.
7205
7206         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7207         verifier and the code generated by the compiler.
7208
7209 2008-03-25  Mark Probst  <mark.probst@gmail.com>
7210
7211         * mini.c: Generic sharing of the non-nullable case of the box
7212         instruction.
7213
7214 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * inssel.brg: Fix the build.
7217
7218         * iltests.il.in: Add a test for lconv.ovf.u8.un.
7219
7220 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
7221
7222         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7223         Array:Address. Fixes #372410.
7224
7225         * iltests.il.in: New tests for readonly prefix.
7226
7227 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7228
7229         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7230         mini-trampolines.c.
7231
7232         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7233         mini-exceptions.c.
7234
7235         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7236         
7237         * mini.c (mono_decompose_op_imm): New helper function.
7238
7239         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
7240         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7241         return value.
7242
7243         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7244         mono_arch_output_basic_block. Fix warnings.
7245
7246         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7247         for now.
7248
7249 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7250
7251         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7252         since the extra frame is now detected automatically inside the loop.
7253
7254         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7255         opts which are now in mono_peephole_ins ().
7256         
7257         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7258
7259         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7260         frames and skip duplicate managed-to-native frames. Fixes #367665.
7261
7262         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7263         opts which are now in mono_peephole_ins ().
7264         (mono_arch_peephole_pass_2): Ditto.
7265
7266         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7267
7268         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7269         arch independent peephole optimizations.
7270
7271         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7272         opts which are now in mono_peephole_ins ().
7273
7274         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7275         
7276         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7277
7278         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7279         pattern.
7280
7281         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7282         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7283         opcode. 
7284
7285 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7286
7287         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7288         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7289         return value.
7290
7291         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7292         mono_arch_output_basic_block. Fix warnings.
7293
7294 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7295
7296         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7297         conv.ovf.u.un.
7298
7299 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7300
7301         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7302         conv.ovf.u.un.
7303
7304         * iltests.il: Add new tests.
7305
7306 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
7307
7308         * mini.c: Removed Windows version macros.
7309
7310 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7311
7312         * generic-sharing.c: Put reflection types in the extensible part
7313         of the runtime generic context.
7314
7315         * mini.c: Generic sharing of the GetTypeHandle special case of the
7316         ldtoken instruction.
7317
7318 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7321
7322         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7323         
7324         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7325         consistency with the other version on the linear IR branch.
7326
7327         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7328
7329         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7330
7331         * iltests.il.in: Add new tests.
7332
7333 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7336
7337         * iltests.il.in: Add new tests.
7338
7339 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7340
7341         * mini.c: Two variables with the same name were declared in
7342         nesting contexts and one wasn't initialized.  Fixed.
7343
7344 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7345
7346         * mini.c: Generic sharing of the initobj instruction.
7347
7348 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7349
7350         * mini.c: make the test to optimize ldtoken from typeof() more
7351         precise.
7352
7353 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7354
7355         * mini.c: Generic sharing of the initobj instruction for reference
7356         types.
7357
7358 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7359
7360         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7361         the mono_breakpoint_clean_code() code to perform bound checks.
7362
7363 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7364
7365         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7366         mono_arch_patch_callsite() to include the start of the managed method
7367         to be able to perform bound checks.
7368
7369 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7370
7371         * mini.c: Generic sharing for the isinst instruction.
7372
7373 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7374
7375         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7376         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7377         with the runtime generic context argument.
7378
7379         * mini.c: Share calls to several types of unsharable methods by
7380         putting the address of the method code in the runtime generic
7381         context and doing an indirect call.
7382
7383         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7384         to switches.
7385
7386 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7387
7388         * generic-sharing.c: Change due to a change in the runtime genric
7389         context API.
7390
7391 2008-03-15  Martin Baulig  <martin@ximian.com>
7392
7393         * tramp-x86.c
7394         (mono_arch_nullify_class_init_trampoline): Add call to
7395         mono_breakpoint_clean_code() to make things work when running
7396         inside the debugger.
7397
7398         * tramp-amd64.c
7399         (mono_arch_nullify_class_init_trampoline): Add call to
7400         mono_breakpoint_clean_code() to make things work when running
7401         inside the debugger.
7402
7403 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * inssel-long.brg (reg): Fix 64 bit build.
7406
7407 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7408
7409         * mini.c, mini.h: Share static generic code by passing it an
7410         implicit argument pointing to the runtime generic context.
7411
7412         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7413         inssel-long32-mips.brg: New opcodes for calling shared static,
7414         which need to be passed the runtime generic context.
7415
7416         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7417         argument on the stack in the prologue if needed.  New function for
7418         finding the runtime generic context argument from the registers
7419         saved by the trampoline.
7420
7421         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7422         runtime generic context argument.
7423
7424         * tramp-amd64.c: Also restore the register used for the runtime
7425         generic context argument.
7426
7427         * mini-trampoline.c: Resolve shared static calls by consulting the
7428         runtime generic context via the new argument.
7429
7430         * generic-sharing.c: Add an argument to sharability-checking
7431         functions that specifies whether type variables should be treated
7432         as sharable type arguments.
7433
7434         * inssel-x86.brg: Removed a superfluous, buggy rule.
7435
7436         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7437         to switches.
7438
7439 2008-03-14  Martin Baulig  <martin@ximian.com>
7440
7441         * debug-debugger.c (main_thread_handler): Call
7442         mono_runtime_run_main() without sending any notifications.
7443
7444         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7445
7446 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7449
7450 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7451
7452         * tramp-x86.c: Fixed register restore offsets in the trampoline
7453         code for ECX and EDX.
7454
7455 2008-03-12  Geoff Norton  <gnorton@novell.com>
7456
7457         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7458         different ucontext_t implementations.
7459         * exceptions-arm.c: Use the above defines to get exceptions working on 
7460         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7461         * mini-arm.c: Implement iPhone icache support (based on a patch by
7462         Luke Howard lukeh@padl.com)
7463
7464 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7465
7466         * mini.c: Enable generic sharing of calls to non-static
7467         non-interface non-generic non-value-type methods.
7468
7469         * mini-trampolines.c: Resolve calls from shared generic code.
7470
7471 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7472
7473         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7474
7475         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7476
7477 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7478
7479         * mini.c: some fixes for the AOT compiler.
7480
7481 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7482
7483         * cpu-amd64.md: Add clob:1 to some float opcodes.
7484
7485 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7486
7487         * mini.h: Added MiniVerifierMode enumeration.
7488
7489         * mini.c: Added mini_verifier_set_mode to control
7490         the usage of the new verifier.
7491
7492         * mini.c (mono_method): Integrated the new verifier.
7493
7494         * driver.c: Extended --security option with validil and
7495         verifiable options to activate the new verifier.
7496
7497 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7498
7499         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7500         optimization to ctors taking 0 or 2 arguments too.
7501
7502         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7503         a bit.
7504
7505         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7506
7507         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7508
7509 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7510
7511         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7512         non-aot case as well.
7513
7514         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7515
7516         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7517         changes.
7518
7519         * aot-compiler.c (encode_patch): Ditto.
7520
7521         * mini.h (G_MININT32): Fix the definition of this.
7522
7523 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7524
7525         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7526
7527         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7528
7529 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7530
7531         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7532         methods returning vtypes in registers.
7533         (mono_arch_allocate_vars): Ditto.
7534
7535         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7536
7537         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7538
7539         * generics.cs: Add a test from the linear IR branch.
7540
7541         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7542
7543         * mini.c (inline_method): Cache failed inline attempts.
7544
7545 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7546
7547         * mini.c: For shared methods of generic classes put the location
7548         of "this" into the MonoGenericJitInfo.
7549
7550         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7551         register out of a MonoContext by register number.  Add the generic
7552         sharing context as an argument to mono_arch_find_this_argument().
7553
7554         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7555         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7556         for new arch function.
7557
7558         * mini-exception.c: Handle open exception clauses in shared
7559         generic code.
7560
7561         * mini-trampolines.c: Supply additional argument to
7562         mono_arch_find_this_argument().
7563
7564 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7565
7566         * Makefile.am (regtests): Run the bench.exe tests last.
7567
7568 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7569
7570         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7571         a bit.
7572
7573 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7576         with MS.
7577
7578         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7579         
7580         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7581
7582         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7583         whose class has no cctor.
7584
7585         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7586
7587 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7588
7589         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7590         unverified.
7591
7592 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7593
7594         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7595         to be in sync with the code on the linear IR branch.
7596
7597         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7598
7599         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7600
7601 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7602
7603         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7604
7605         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7606
7607         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7608
7609         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7610
7611         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7612         
7613         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7614         body.
7615
7616 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7617
7618         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7619         OP_LOADR4_MEMBASE emission.
7620
7621         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7622         (mono_spillvar_offset_float): Ditto.
7623
7624         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7625
7626         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7627         emission.
7628
7629         * basic-long.cs: Add regression tests for them.
7630
7631         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7632         use.
7633         (mono_arch_allocate_vars): Fix representation of single-precision float
7634         argument.
7635         (mono_arch_output_basic_block): Ditto.
7636
7637         * inssel-mips.brg: Ditto, remove duplicate items.
7638
7639         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7640         arguments of tail calls as on other platforms.
7641         (mono_arch_output_basic_block): Handle tail calls.
7642
7643         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7644         register.
7645
7646         * objects.cs (test_5_pass_static_struct): Add test for it.
7647
7648         Contributed under MIT/X11 license.
7649
7650 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7651
7652         * Makefile.am: Use gmcs for compiling the regression tests.
7653
7654         * *.2.cs *.2.il: Rename to *.cs and *.il.
7655
7656 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7657
7658         * regalloc.h: Make the vassign array smaller.
7659
7660         * mini.c (mini_method_compile): Remove an unused field in cfg.
7661
7662         * mini-codegen.c: Add a bunch of micro optimizations.
7663
7664 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7665
7666         * regalloc.h: Remove some unused fields.
7667
7668 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7671
7672         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7673
7674 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7675
7676         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7677
7678         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7679         trampoline: Fetch an entry from the runtime generic context.  If
7680         it's NULL, jump to the actual trampoline to fill the runtime
7681         generic context.  Otherwise, return it.
7682
7683         * mini.c: Call the lazy fetch trampoline to get entries out of the
7684         runtime generic context.
7685
7686         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7687         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7688         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7689
7690 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7691
7692         * mini.c: Fetch data out of the extensible part of the runtime
7693         generic context instead of calling a helper function.
7694
7695         * generic-sharing.c: Some functions moved into
7696         metadata/generic-sharing.c.  Helper function for fetching other
7697         types now checks and asserts against extensible rgctx (just for
7698         debugging purposes - the helper function isn't called anymore
7699         unless for debugging).
7700
7701 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7702
7703         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7704         for tail calls up to the point that the tests in iltests.exe run. Also add a
7705         dummy CKFINITE implementation.
7706         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7707         needed for trampoline LMF frames.
7708
7709         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7710         trampoline LMF frames.
7711
7712 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7713
7714         * mini.c (inline_method): clean any pending loader error when inlining fail.
7715         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7716
7717 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7718
7719         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7720
7721         * aot-runtime.c (decode_patch_info): Ditto.
7722
7723         * mini.c (mono_resolve_patch_target): Ditto.
7724         
7725         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7726         icall wrappers.
7727
7728         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7729         
7730         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7731         if it references an icall address.
7732
7733 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7734
7735         * cpu-s390x.md: Remove some more unused opcodes.
7736         
7737         * cpu-s390x.md: Remove some unused opcodes.
7738
7739         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7740         mono_op_imm_to_op ().
7741
7742         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7743         instead of a switch statement.
7744         
7745         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7746         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7747
7748         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7749         
7750         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7751
7752         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7753         -1.
7754
7755 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7756
7757         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7758         opened. Fixes #362607.
7759
7760         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7761
7762         * iltests.il.in: Add a test for static methods in interfaces.
7763
7764 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7765
7766         * genmdesc.c (build_table): Fix a crash on older glib versions.
7767
7768         * cpu-sparc.md: Remove some unused opcodes.
7769         
7770         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7771         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7772
7773         * cpu-amd64.md: Remove some unused opcodes.
7774
7775         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7776         like the other opcodes.
7777
7778 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7779
7780         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7781
7782         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7783
7784         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7785         variables 'cfg' instead of 'm' for consistency.
7786
7787         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7788
7789         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7790         argument holding the vtype return address, to avoid the ambigious use of
7791         cfg->ret for this purpose.
7792
7793         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7794
7795         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7796         
7797         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7798         new mono_print_ins () function which only takes one argument.
7799
7800 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7801
7802         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7803         macro arguments.
7804
7805 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7808
7809         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7810
7811         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7812         opcodes and other small changes.
7813
7814         * mini-ops.h: Add some new opcodes from the linear IR branch.
7815
7816         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7817
7818         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7819         opcodes, use the REG_MEMBASE opcodes instead.
7820         
7821         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7822         opcodes, use the REG_MEMBASE opcodes instead.
7823         
7824         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7825         linear IR branch.
7826
7827         * mini.c (mono_op_imm_to_op): New helper function.
7828
7829         * mini-ops.h: Add some opcodes from linear IR branch.
7830
7831 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7832
7833         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7834         <tsv@solvo.ru>.
7835
7836 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7837
7838         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7839         OP_ICONV_TO_R4/R8.
7840
7841         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7842
7843 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7844
7845         * aot-compiler.c (emit_method_code): Add an assert.
7846
7847         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7848         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7849         methods.
7850
7851 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7854         some load/store opcodes so they are consistent. 
7855         (mono_arch_emit_prolog): Simplify some code.
7856
7857         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7858
7859         * objects.cs: Add tests for large argument offsets on ARM.
7860
7861         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7862         stack offsets. Fixes #359651.
7863
7864         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7865
7866         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7867
7868         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
7869
7870         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
7871
7872         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
7873
7874         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
7875         rid of CEE_CONV_R_UN.
7876
7877         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
7878
7879 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
7882
7883         * mini.c (mono_normalize_opcodes): Add some more opcodes.
7884
7885         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
7886
7887         * cpu-amd64.md: Remove some unused opcodes.
7888
7889         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
7890
7891         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
7892
7893         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
7894         arch specific functions for its parts. Call the peephole pass after local
7895         regalloc so the prolog can compute a more accurate max_offset.
7896         
7897         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
7898         the corresponding OP_I/OP_L opcodes.
7899
7900         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
7901
7902         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
7903
7904 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7905
7906         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
7907         as they are handled in mini.c.
7908
7909         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
7910         
7911         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
7912         case since it is handled in mini.c.
7913
7914         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
7915
7916         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
7917
7918         * *.c: Use the new opcodes in the IR and back end code.
7919
7920         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
7921
7922         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
7923
7924 2008-02-06  Mark Probst  <mark.probst@gmail.com>
7925
7926         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
7927         an assert because it has a race condition.
7928
7929 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7930
7931         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
7932
7933         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
7934
7935         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
7936
7937         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
7938         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
7939
7940 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * cpu-amd64.md (move): Correct the maximum size of move.
7943
7944 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7945
7946         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
7947         the generic class init trampoline to return quickly if the class
7948         is already inited.
7949
7950 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
7951
7952         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
7953         issues where an 32 bit callsite cannot be patched by a 64 bit address.
7954
7955 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7956
7957         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
7958         branch.
7959
7960 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * objects.cs: Add some soft-float tests.
7963
7964         * mini.c: Fix a couple more soft-float issues.
7965
7966         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
7967
7968         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
7969         avoid a REX prefix.
7970
7971 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7972
7973         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
7974         exception happens while compiling a virtual method.
7975
7976 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7977
7978         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
7979         
7980         * mini-sparc.c: Fix build.
7981
7982         * mini-sparc.c (get_call_info): Add support for generic sharing.
7983
7984         * mini-exceptions.c: Add a FIXME.
7985
7986 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7987
7988         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
7989         altstack handling code.
7990
7991         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
7992         
7993         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
7994
7995         * mini-s390.c: Add support for generic sharing.
7996
7997         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7998         Fix CAS on s390.
7999         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8000
8001         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
8002
8003         * mini-s390x.c: Add support for generic sharing.
8004         
8005         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8006         Fix CAS on ia64.
8007         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8008
8009         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
8010         can be used since it takes a 16 bit signed immediate.
8011
8012         * inssel-s390x.brg: Fix OP_SETRET.
8013
8014         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
8015
8016         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
8017
8018         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
8019
8020         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
8021
8022         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
8023         in one place.
8024
8025         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
8026         stuff.
8027
8028         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
8029         of the unused mono_arch_patch_delegate_trampoline stuff.
8030
8031 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
8032
8033         * basic-long.cs: Move the fp related tests to basic-float.cs.
8034
8035         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
8036
8037         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
8038
8039         * basic-calls.cs: Add a test for proper float argument passing.
8040
8041         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
8042         if the context corresponds to an exception received through a signal.
8043
8044         * exceptions.cs: Add a test for nullref handling at the start of a try
8045         clause.
8046
8047         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
8048
8049         * jit-icalls.c (mono_break): New JIT icall.
8050
8051         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
8052
8053         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
8054
8055 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
8056
8057         * cpu-*.md: Get rid of unused opcodes.
8058
8059         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
8060
8061         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
8062         by all platforms.
8063
8064         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
8065         define.
8066
8067         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
8068         the arch independent trampoline code in mini-trampolines.c.
8069
8070         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
8071
8072         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
8073
8074         * mini-s390.h: Remove an unused define.
8075         
8076         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
8077         the arch independent trampoline code in mini-trampolines.c.
8078
8079         * mini-arm.c (mono_arch_emit_prolog): Fix build.
8080
8081 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
8082
8083         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
8084
8085         * mini-s390.c (mono_arch_emit_prolog): Fix build.
8086
8087         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
8088
8089         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
8090
8091         * cpu-amd64.md: Use smaller sizes for int opcodes.
8092
8093         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
8094
8095         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
8096         objects.cs.
8097
8098         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
8099         debugging.
8100
8101         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
8102         instead of though a pointer to save an indirection when accessing elements of
8103         the array.
8104
8105         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
8106         some typos.
8107         (NOT_IMPLEMENTED): New helper macro.
8108         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
8109         of a bb.
8110
8111         * *.c: Use the new helper macro.
8112
8113 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
8114
8115         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
8116
8117 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8118
8119         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
8120         stack slots.
8121
8122 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
8123
8124         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
8125         profiling is enabled.
8126         
8127         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
8128         the end.
8129         (mono_arch_emit_prolog): Add more first bblock optimizations.
8130
8131         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
8132         in order if possible.
8133         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
8134         bblock, since the arguments are still in their original registers.
8135
8136         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
8137
8138 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8139
8140         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
8141         as well.
8142
8143         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
8144         offset 0.
8145
8146         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
8147
8148         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
8149         process async exceptions received while in unmanaged code.
8150
8151         * mini.c (mini_init): Install a callback with the runtime which will be called
8152         when a thread receives an async exception while in unmanaged code.
8153
8154         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
8155
8156         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8157
8158 2008-01-16  Wade Berrier  <wberrier@novell.com>
8159
8160         * cpu-g4.md:
8161         * cpu-arm.md:
8162         * cpu-s390x.md:
8163         fix build
8164
8165 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8166
8167         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8168         compilation with sun cc.
8169
8170         * cpu-*.md: Fix the build.
8171
8172         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8173
8174         * mini-amd64.h: Add some comments to the MonoLMF structure.
8175
8176         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8177         
8178         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8179         in the LMF structure if possible. This saves two instructions in the
8180         managed->native wrappers.
8181
8182         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8183
8184 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8185
8186         * generic-sharing.c: New type argument lookup code which uses the
8187         runtime generic context template.
8188
8189 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8190
8191         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8192
8193         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8194         (mono_arch_output_basic_block): Fix localloc implementation.
8195
8196         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8197
8198         * mini-ia64.c (peephole_pass): Fix ia64 build.
8199
8200         * mini-amd64.c (peephole_pass): Fix a warning.
8201         
8202         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
8203         at a constant offset from sp/fp.
8204
8205         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8206         instead of obtaining it from *lmf in the managed method case.
8207
8208 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8209
8210         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
8211
8212 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
8213
8214         * mini.h (MonoInstList): New type.
8215         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
8216         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
8217         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
8218         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
8219         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
8220         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
8221         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8222         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8223         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8224         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8225         MONO_INST_LIST_FOR_EACH_ENTRY,
8226         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8227         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8228         mono_inst_list_first, mono_inst_list_last,
8229         mono_inst_list_next, mono_inst_list_prev): New instruction
8230         list handling interfaces.
8231         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8232         list head 'ins_list'.
8233         (MonoInst): Replace next pointer with list head 'node'.
8234         (MonoCallInst): Make 'out_args' a MonoInstList.
8235         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8236         (MonoCompile): Delete reverse_inst_list and
8237         reverse_inst_list_len.
8238         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8239         mono_arch_lowering_pass, mono_arch_local_regalloc,
8240         mono_arch_output_basic_block, mono_arch_emit_prolog):
8241         Convert to new instruction lists.
8242         (insert_after_ins): Delete.
8243         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8244         instruction lists.
8245         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8246         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8247         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8248         mono_emulate_opcode, mono_emit_load_got_addr,
8249         inline_method, mono_method_to_ir, mono_print_bb_code,
8250         print_dfn, decompose_pass, nullify_basic_block,
8251         replace_out_block_in_code, remove_block_if_useless,
8252         merge_basic_blocks, move_basic_block_to_end,
8253         try_unsigned_compare, optimize_branches, mono_print_code,
8254         mini_select_instructions, remove_critical_edges): Likewise.
8255         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8256         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8257         mono_arch_output_basic_block, mono_arch_emit_prolog):
8258         Likewise.
8259         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8260         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8261         mono_arch_output_basic_block): Likewise.
8262         (inst_list_prepend, insert_after_ins): Delete.
8263         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8264         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8265         instruction lists.
8266         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8267         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8268         mono_arch_emit_prolog): Likewise.
8269         * cfold.c (mono_constant_fold): Likewise.
8270         * liveness.c (visit_bb, mono_analyze_liveness,
8271         optimize_initlocals): Likewise.
8272         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8273         * graph.c (mono_draw_code_cfg): Likewise.
8274         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8275         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8276         mono_ssa_cprop): Likewise.
8277         * abcremoval (get_relations_from_previous_bb, process_block):
8278         Likewise.
8279         * local-propagation (mono_cprop_invalidate_values,
8280         mono_local_cprop_bb): Likewise.
8281         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8282         peephole_pass, mono_arch_output_basic_block,
8283         mono_arch_emit_prolog): Likewise.
8284         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8285         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8286         mono_arch_emit_prolog): Likewise.
8287         (insert_after_ins): Delete.
8288         * aliasing.c (print_code_with_aliasing_information,
8289         mono_build_aliasing_information, mono_aliasing_deadce):
8290         Convert to new instruction lists.
8291         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8292         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8293         mono_arch_local_regalloc, mono_arch_output_basic_block):
8294         Likewise.
8295         (insert_after_ins): Delete.
8296         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8297         peephole_pass, mono_arch_output_basic_block): Convert to
8298         new instruction lists.
8299         * mini-codegen (InstList, inst_list_prepend,
8300         insert_after_ins): Delete.
8301         (insert_before_ins, get_register_force_spilling,
8302         get_register_spilling, free_up_ireg, free_up_reg,
8303         create_copy_ins, create_spilled_store, alloc_int_reg,
8304         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8305         to new instruction lists.
8306         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8307         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8308         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8309         (insert_after_ins): Delete.
8310         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8311         mono_arch_local_regalloc, mono_arch_output_basic_block,
8312         mono_arch_call_opcode): Convert to new instruction lists.
8313         (insert_after_ins): Delete.
8314         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8315         peephole_pass, mono_arch_output_basic_block,
8316         mono_arch_emit_prolog): Convert to new instruction lists.
8317
8318 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8319
8320         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8321
8322         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8323         Fixes #353182.
8324
8325         * Makefile.am (version.h): Make this work with non-bash shells.
8326
8327 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8328
8329         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8330
8331 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8332
8333         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8334         the InitializeArray optimization.
8335
8336 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * mini.c driver.c: Don't include os/gc_wrapper.h.
8339
8340 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8341
8342         * mini.c (print_jit_stats): Print GC statistics if available.
8343
8344 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8345
8346         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8347
8348 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8349
8350         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8351
8352 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8353
8354         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8355         
8356         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8357
8358         * driver.c (mono_main): Ditto.
8359
8360 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8361
8362         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8363
8364         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8365         in the vtable can't be encoded.
8366         (compile_method): Ditto.
8367
8368 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8369
8370         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8371         defined.
8372
8373         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8374         lmf->rbp.
8375
8376         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8377         the top LMF entry belongs to the current method.
8378
8379         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8380
8381 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8382
8383         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8384         
8385         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8386
8387         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8388
8389         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8390
8391         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8392
8393         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8394         implementation.
8395
8396         * basic-float.cs: Add an ulong->double cast test.
8397
8398 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8399
8400         * mini.c (mono_method_to_ir): Fix a warning.
8401
8402 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8403
8404         * mini-ops.h: Add OP_SWITCH.
8405
8406         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8407         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8408
8409 2007-12-11  Geoff Norton  <gnorton@novell.com>
8410
8411         * mini-s390x.c: Minor change to the MAX() define to allow
8412         it to compile with other gcc versions.
8413
8414 2007-12-11  Geoff Norton  <gnorton@novell.com>
8415
8416         * cpu-s390x.md:
8417         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8418
8419 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8420
8421         exceptions-arm.c (mono_arch_get_restore_context): Restore
8422         the frame pointer.
8423
8424         exceptions-arm.c (throw_exception): Save the frame pointer.
8425         This is a partial fix for #323747. Only the client side is
8426         fixed.
8427
8428 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8429
8430         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8431         was using an unrelated variable to log the class which
8432         needed the cctor to be called. This was crashing on arm.
8433
8434 2007-12-09  Robert Jordan  <robertj@gmx.net>
8435
8436         * mini-x86.c (mono_arch_emit_epilog):
8437         Consider all kinds of 64-bit types. Fixes #323114.
8438
8439 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8440
8441         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8442
8443 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8444
8445         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8446
8447 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8448
8449         * mini.c: run type ctor before allocating an object, not only
8450         when running it's constructor method (fixes at least part of bug #342507).
8451
8452 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8453         
8454         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8455         
8456         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8457         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8458         function.
8459
8460         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8461         mono_generic_class_init_trampoline () the same as it is done with the other
8462         trampolines.
8463
8464         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8465         aot-runtime.c aot-compiler.c: Implement AOT support.    
8466
8467 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8468
8469         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8470         build for archs which don't have the vtable trampoline defined
8471         yet.
8472
8473 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8474
8475         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8476
8477         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8478
8479         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8480
8481         * tramp-<ARCH>.c: Use the new helper function.
8482
8483 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8484
8485         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8486         trampoline call, which takes a vtable argument.
8487
8488         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8489         OP_TRAMPCALL_VTABLEs like other calls.
8490
8491         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8492         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8493         call.  Implemented a support function which fetches the vtable
8494         from a register set.
8495
8496         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8497         Implemented a generic class init trampoline, using the
8498         OP_TRAMPCALL_VTABLE opcode.
8499
8500         * mini.c: Implemented static field access when sharing generic
8501         code.  This implies initing the class using the new
8502         OP_TRAMPCALL_VTABLE call.
8503
8504 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8505
8506         * mini.c: Don't compile methods with sharing enabled if their
8507         classes are disabled for sharing.
8508
8509 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8510
8511         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8512         opcodes. Fixes #346563.
8513
8514         * objects.cs: Add a new test.
8515
8516         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8517
8518         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8519         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8520
8521 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8524
8525 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8526
8527         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8528         code stream.
8529
8530 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8531
8532         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8533
8534         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8535         optimization in the AOT case.
8536         
8537 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8540         
8541         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8542
8543         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8544
8545         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8546
8547         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8548         is created by the inlined delegate ctor.
8549
8550         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8551
8552         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8553
8554 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8555
8556         * cpu-x86.md: Fix the length of ckfinite.
8557
8558 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8559
8560         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8561         
8562         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8563         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8564
8565         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8566
8567         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8568         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8569
8570 2007-11-28  Martin Baulig  <martin@ximian.com>
8571
8572         * mini-x86.c
8573         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8574         after creating the trampoline.
8575
8576 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8579
8580         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8581         the same version.
8582
8583         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8584         instead of the calling method to help AOT.
8585
8586         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8587
8588 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8589
8590         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8591         is defined.
8592
8593 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8594
8595         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8596         
8597         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8598         (encode_method_ref): No need to handle generic method definitions specially.
8599
8600         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8601
8602         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8603         decode_klass_info.
8604
8605         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8606         encode_klass_info.
8607         (compile_method): Enable generic sharing.
8608
8609 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8610
8611         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8612         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8613
8614         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8615         generic code.
8616
8617         * mini-trampolines.c: Fix a warning.
8618
8619         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8620         NEW_PCONST.
8621         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8622         (generic_class_is_reference_type): Remove unused function.
8623
8624         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8625         in the generic vtable trampoline case.
8626
8627         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8628         
8629         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8630         return an AOT method based on a vtable slot.
8631
8632         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8633
8634         * mini.c (mini_get_vtable_trampoline): Export this.
8635
8636 2007-11-22  Martin Baulig  <martin@ximian.com>
8637
8638         * debug-debugger.h
8639         (MonoDebuggerInfo): Move `debugger_version' up.
8640
8641 2007-11-22  Martin Baulig  <martin@ximian.com>
8642
8643         * mini-amd64.c
8644         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8645
8646         * mini-trampolines.c
8647         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8648         after compiling the method.
8649
8650 2007-11-20  Martin Baulig  <martin@ximian.com>
8651
8652         * debug-mini.c
8653         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8654         (mono_debugger_remove_breakpoint): Likewise.
8655         (mono_debugger_check_breakpoints): Likewise.
8656
8657         * debug-debugger.c: Implement the new breakpoint interface here.
8658
8659 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8660
8661         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8662         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8663
8664         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8665
8666 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8667
8668         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8669
8670         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8671         mini.c.
8672
8673         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8674         mini.c.
8675
8676         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8677         returning a vtype in a register.
8678
8679         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8680         here from the arch specific code.
8681
8682         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8683         mini.c.
8684
8685         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8686         (mono_arch_emit_prolog): Increment maximum prolog size.
8687
8688         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8689         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8690
8691         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8692         MonoGenericSharingContext.
8693
8694         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8695         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8696
8697 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8698
8699         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8700         which extract fields out of the runtime generic context.  Full
8701         sharing of the NEWARR opcode.
8702
8703 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8704
8705         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8706         --enable-minimal=ssa.
8707
8708 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8709
8710         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8711         mono_marshal_get_delegate_invoke () signature change.
8712
8713 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8714
8715         * mini.c: Removed the shared context in favor of the generic
8716         sharing context.  Allocate the MonoJitInfo structure with room for
8717         the generic sharing context if it's needed.
8718
8719         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8720         domain-internals.h now.
8721
8722         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8723
8724         * generic-sharing.c: Several changes for working without a shared
8725         context and instead operating on open types instead.
8726
8727 2007-11-12  David S. Miller  <davem@davemloft.net>
8728
8729        * inssel-sparc.brg: Fix double instruction emit.
8730
8731 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8734         Get/Set/Address methods.
8735         
8736         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8737         mono_marshal_get_delegate_invoke signature change.
8738
8739 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8740
8741         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8742         This can happens with dynamic methods. Fixes the other bug in #322722.
8743
8744 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8745
8746         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8747         BX call sequence.
8748
8749         * mini-arm.c (arm_patch): Implement patching of BX call
8750         sequence. Fixes one of the bugs in #322722.
8751
8752 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8753
8754        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8755        under Linux.  We only need to flush every 32-byte cache line.    
8756
8757 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8758
8759         * mini.c:
8760         move_basic_block_to_end: Add branches when needed, eventually creating
8761         a new BB.
8762         optimize_branches: added a parameter that tells if it's ok to create
8763         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8764         and avoid calling move_basic_block_to_end when it's not ok.
8765         Fixes bug 318677.
8766
8767 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8768
8769         * mini.c: Abort inlining call to InitializeArray if something
8770         looks wrong.  Let the icall handle it, which now has proper safety
8771         checks.
8772
8773 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8774
8775         * mini.c (mono_spill_call): add support for soft-float.
8776
8777         * mini.c (mono_method_to_ir): add support for soft-float
8778         to inlined functions that return float.
8779
8780         * mini.c (mono_method_to_ir): add support for soft-float
8781         to cee_stsfld opcode on float fields.
8782
8783 2007-11-05  Geoff Norton  <gnorton@novell.com>
8784
8785         * mini-x86.h: Fix the structure access for X86 Leopard.
8786
8787
8788 2007-11-05  Martin Baulig  <martin@ximian.com>
8789
8790         * mini-trampolines.c
8791         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8792         after compiling the method to notify the debugger.
8793
8794 2007-11-05  Martin Baulig  <martin@ximian.com>
8795
8796         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8797
8798 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8799
8800         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8801         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8802
8803 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8804
8805         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8806         native-to-managed wrappers.
8807         
8808 2007-11-01  Geoff Norton  <gnorton@novell.com>
8809
8810         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8811         members.
8812
8813 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8814
8815         * mini.c, mini-x86.c: when getting back from unmanaged code
8816         to managed via a marshaled delegate we also need to set the
8817         right domain.
8818
8819 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8820
8821         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8822         for amd64.
8823
8824 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8825
8826         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8827         let the debugger or other external agents to tell the JIT when
8828         a sw breakpoint has been inserted in the code that the JIT needs
8829         to be able to inspect.
8830
8831 2007-10-31  Martin Baulig  <martin@ximian.com>
8832
8833         * debug-debugger.h
8834         (MonoDebuggerInfo): Remove `runtime_class_init'.
8835
8836 2007-10-30  Martin Baulig  <martin@ximian.com>
8837
8838         * debug-mini.h
8839         (mono_debugger_thread_created): Added `MonoThread *' argument.
8840         (mono_debugger_extended_notification): New public method.
8841         (mono_debugger_trampoline_compiled): New public method.
8842
8843         * debug-mini.c
8844         (MonoDebuggerThreadInfo): Added `thread' and
8845         `extended_notifications' fields.
8846
8847         * debug-debugger.c
8848         (debugger_executable_code_buffer): New static variable.
8849
8850         * debug-debugger.h
8851         (MonoDebuggerInfo): Added `executable_code_buffer',
8852         `executable_code_buffer_size', `breakpoint_info_area',
8853         `breakpoint_table' and `breakpoint_table_size'.
8854
8855 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8856
8857         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8858         that IP  either is an unused value or the vtable pointer. IMT 
8859         calls use vtable + offset now. Reduced by almost half the size
8860         of IMT entries.
8861
8862 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8863
8864         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8865         defines to access param registers. Replace long usage with
8866         gsize as sizeof(long) != sizeof(void*) on Win64.
8867
8868         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
8869         on Win64. Fix intrinsic, use _AddressOfReturnAddress
8870         instead of non-existant _GetAddressOfReturnAddress.
8871
8872         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
8873         param registers. Save/restore %rdi and %rsi in MonoLMF.
8874
8875         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
8876         param registers. Modify (throw_exception) signature to take 
8877         %rdi and %rsi on Win64. 
8878
8879         Code is contributed under MIT/X11 license.
8880
8881 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8882
8883         * helpers.c: unlink debugging output files.
8884
8885 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * mini.c: Move mono_create_ftnptr () to object.c.
8888
8889 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8890
8891         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
8892         optional. This function can now be used to disassemble code generated
8893         outside the JIT such as trampolines and IMT thunks.
8894
8895         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
8896
8897         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
8898         vtable pointer from a ldr instruction.
8899
8900         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
8901         new IMT call sequence.
8902
8903         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
8904         call sequence for interface invocations.
8905
8906         * mini-arm.c (mono_arch_emit_imt_argument): added, required
8907         for imt support. This function is empty since IMT on ARM requires no
8908         special handling on the IR side.
8909
8910         * mini-arm.c (mono_arch_find_imt_method): added, required for
8911         imt support.
8912
8913         * mini-arm.c (mono_arch_find_this_argument): added, required
8914         for imt support.
8915
8916         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
8917         a ldr instruction to load a value stored in the code stream.
8918
8919         * mini-arm.c (mono_arch_build_imt_thunk):added, required
8920         for imt support.
8921
8922
8923 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * mini.c (mini_init): Install the jump trampoline callback.
8926
8927 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8928
8929         * mini-trampolines.c: handle synchronized methods with the common
8930         vtable trampoline (bug #335601).
8931
8932 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
8933
8934         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
8935
8936         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
8937         64 bit platforms.
8938
8939         * mini-ia64.h mini-ia64.c: Add support for IMT.
8940
8941         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
8942         prolog. Fixes #331958.
8943
8944 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
8945
8946         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
8947
8948 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8949
8950         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
8951         trampoline.
8952
8953 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8954
8955         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
8956         trampoline.
8957
8958 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
8959
8960         * mini-x86.c, mini-x86.h: x86 support for the common vtable
8961         trampoline.
8962
8963 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8964
8965         * mini-trampolines.c: changed the magic rampoline to understand
8966         the common vtable trampoline method: the method to invoke is
8967         determined by the vtable displacement of the call.
8968
8969 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8970
8971         * mini.c, mini.h: register the common vtable trampoline if the
8972         architecture supports it.
8973
8974 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8975
8976         * cpu-amd64.md: use the correct max length for tls_get.
8977
8978 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
8981         CEE_STELEM_ANY. Fixes #333696.
8982
8983 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8984
8985         * exceptions-x86.c: provide more graceful handling of the case where
8986         we followed a bogus function pointer from managed code (bug #332866).
8987
8988 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8989
8990         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
8991         replaces the generic_shared flag and will carry more information
8992         in the future.
8993
8994         * generic-sharing.c: Added mini_type_stack_size() which allows
8995         allows open types if given a generic sharing context.
8996         mini_get_basic_type_from_generic() takes a
8997         MonoGenericSharingContext* instead of a MonoCompile* now.
8998
8999         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
9000         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
9001         mini-sparc.c, mini-x86.c: Trivial changes required by the two
9002         changes above.  Just passing arguments through to the right
9003         places.
9004
9005 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9006
9007         * mini-arm.c: unify the call emission to emit_code_seq().
9008
9009 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
9010
9011         * tramp-arm.c: reduced the trampoline size.
9012
9013 2007-10-10  Mark Probst  <mark.probst@gmail.com>
9014
9015         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
9016         variable handling out of arch-specific code.
9017
9018 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
9019
9020         * mini-arm.c: implemented fast delegate dispatch.
9021
9022 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9023
9024         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
9025         that fp elimination is turned off if the space required by locals is too
9026         big. Fixes #331958.
9027
9028 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9029
9030         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
9031         ARM to the new style trampoline.
9032
9033 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9034
9035         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
9036
9037         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
9038
9039 2007-10-09  Martin Baulig  <martin@ximian.com>
9040
9041         * debug-debugger.h
9042         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
9043         `field_info_offset_offset'.     
9044
9045 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9046
9047         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
9048         removed more internal usage of the r11 register and made it available
9049         to the register allocator.
9050
9051 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9052
9053         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
9054         when sharing generics and treat type variables as references.
9055
9056 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9057
9058         * mini-ppc.c: started removing the internal uses of register r11
9059         to eventually allow the register allocator to manage it as an
9060         additional available register.
9061
9062 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9063
9064         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
9065
9066 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9067
9068         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
9069         specific trampolines as they are not performance critical as a jump
9070         target (maybe align as before only for AOT code?). This saves about
9071         200 KB of native code on x86 for monodevelop startup.
9072
9073 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9074
9075         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
9076         monodevelop startup.
9077
9078 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
9079
9080         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
9081
9082         * mini-sparc.h mini-sparc.c: Implement IMT support.
9083
9084         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
9085         its smaller and doesn't clobber sparc_g1.
9086
9087         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
9088
9089 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9090
9091         * mini-ppc.c: optimized the size of the IMT thunks a bit.
9092
9093 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9094
9095         * mini-ppc.c: implemented fast delegate invocation.
9096
9097 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
9098
9099         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
9100
9101 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9102
9103         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
9104         code to the new style trampoline in preparation for IMT support.
9105
9106 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9107
9108         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
9109         systems already. This also reduces the specific trampiline sizes and
9110         prepares for the use of r12 as the IMT identifier register.
9111
9112 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9113
9114         * mini-mips.h: endianess fix (simplified from a patch by
9115         Thomas Kunze <thommy@tabao.de>, bug #323737).
9116
9117 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9118
9119         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
9120         to access ucontext fields and enable netbsd support
9121         (partially from Magnus Henoch <mange@freemail.hu>).
9122
9123 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9124
9125         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
9126         use the preprocessor from the CPP env var if it is set.
9127
9128 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9129
9130         * mini-trampolines.c: fixed an assertion and moved it earlier in the
9131         code, before interface_offset gets used.
9132
9133 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
9134
9135         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
9136         mono_class_setup_vtable () before accessing klass->vtable.
9137
9138 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
9139
9140         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
9141         hackish.
9142
9143 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9144
9145         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
9146         IMT slots (this saves hundreds of KB of memory in programs like
9147         IronPython and Monodevelop).
9148
9149 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9150
9151         * mini.c: print the delegate counter.
9152
9153 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
9154
9155         * mini-x86.c: make it easier to enable the debugging code for IMT
9156         slots.
9157
9158 2007-09-28  Martin Baulig  <martin@ximian.com>
9159
9160         * debug-debugger.h
9161         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9162         `mono_method_klass_offset' and `mono_method_token_offset'.
9163
9164 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9165
9166         * mini.c: First generics sharing implementation.  Can only share
9167         in very simple cases.  If sharing doesn't work it falls back to
9168         dedicated compilation.
9169
9170         * mini.h: Flag in MonoCompile to specify whether generic
9171         compilation is shared.  Flags enum for marking which generic inst
9172         of a context is used.  Prototypes for helper functions.
9173
9174         * generic-sharing.c: Helper functions for generic method sharing.
9175
9176         * optflags-def.h: Optimization flag (gshared) for enabling generic
9177         method sharing added.
9178
9179         * Makefile.am: generic-sharing.c added.
9180
9181 2007-09-19 Daniel Nauck <dna@mono-project.de>
9182
9183         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9184
9185 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9186         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9187         fixes bug 325507.
9188
9189 2007-09-19  Martin Baulig  <martin@ximian.com>
9190
9191         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9192         mono_debug_cleanup() is now part of mono_cleanup().
9193
9194 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9195
9196         * driver.c (mono_main): Fix a warning.
9197
9198 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9199
9200         * aot-compiler.c: Optimize various parts when processing large assemblies.
9201         Fixes ##325568.
9202
9203         * mini.c (mono_patch_info_hash): Improve hash function.
9204
9205 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9206
9207         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9208         
9209         Code is contributed under MIT/X11 license.
9210
9211 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9212
9213         * mini.c (mini_init): Fix a leak.
9214
9215         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
9216
9217 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9218
9219         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
9220
9221 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9222
9223         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9224
9225 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9226
9227         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9228         variance tests.
9229
9230         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9231
9232         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9233
9234         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9235
9236         * aot-runtime.c (decode_patch_info): Ditto.
9237
9238 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9239
9240         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9241         static case. Cache delegates in architecture specific code, 
9242         based on number of parameters.
9243         
9244         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9245         in architecture specific code, based on number of parameters.
9246         
9247         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9248         caching happen in architecture specific code now.
9249         
9250         Code is contributed under MIT/X11 license.
9251
9252 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9253
9254         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9255         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9256         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9257
9258         Code is contributed under MIT/X11 license.
9259
9260 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9261         * mini.c: (mono_thread_abort) Fixed bug #82416.
9262
9263 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9264
9265         * mini.: hook the new managed GC allocation feature into the JIT.
9266
9267 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9268
9269         * mini.c: implementation for the new runtime tls opcode.
9270
9271 2007-09-11  Martin Baulig  <martin@ximian.com>
9272
9273         * debug-debugger.h
9274         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9275         `mono_method_inflated_offset'.
9276
9277 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9278
9279         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9280         async exceptions into a method.
9281
9282         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9283         purpose of testing whenever the unwinder works at every instruction.
9284
9285 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9286
9287         * mini.c: check accessibility of method used in ldftn (fixes
9288         bug #82635).
9289
9290 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9291
9292         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9293
9294         * inssel.brg: Fix a warning.
9295
9296 2007-09-03  Martin Baulig  <martin@ximian.com>
9297
9298         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9299         now takes the `main_method' as argument.
9300
9301 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9302
9303         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9304
9305 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9306
9307         * driver.c: include the cil-coff.h header on Windows.
9308         
9309         Code is contributed under MIT/X11 license.
9310
9311 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9312
9313         * mini.c, driver.c: don't include the cil-coff.h header.
9314
9315 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9316
9317         * mini.c: flag places that needs fixes fo soft-float support.
9318
9319 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9320
9321         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9322         endian systems (partially from Dean Jenkins, bug #81924).
9323
9324 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9325
9326         * mini.c (check_linkdemand): Remove embedded reference object in
9327         call to LinkDemandSecurityException.
9328         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9329         with an IntPtr instead of a reference object.
9330
9331 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * mini.c (handle_initobj): Handle alignment properly.
9334
9335         * inssel.brg (mini_emit_memset): Ditto. 
9336
9337         * inssel.brg (mini_emit_memcpy): Ditto. 
9338
9339         * inssel-sparc.brg: Ditto.              
9340
9341         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9342
9343 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9344
9345         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9346         exceptions raised in unmanaged code. Fixes part of #82594.
9347
9348 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9349
9350         * mini.c (mono_method_to_ir), declsec.c
9351         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9352
9353 2007-08-22  Martin Baulig  <martin@ximian.com>
9354
9355         * debug-mini.h
9356         (MonoDebuggerThreadInfo): New typedef.
9357         (mono_debugger_thread_table): New global variable.
9358         (mono_debugger_thread_created): New public function.
9359         (mono_debugger_thread_cleanup): New public function.
9360
9361         * debug-debugger.h
9362         (MonoDebuggerInfo):
9363         - removed `get_current_thread' and `lookup_assembly'.
9364         - removed `data_table'.
9365         - added `thread_table'.
9366
9367         * mini.c
9368         (mono_thread_start_cb): Call mono_debugger_thread_created().
9369         (mono_thread_attach_cb): Likewise.
9370         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9371         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9372         initial domain.
9373
9374         * driver.c (mono_main): Move mono_debug_init() up, before calling
9375         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9376
9377 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9378
9379         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9380         together when passing several arguments of type double (gives a small
9381         speedup and saves a few bytes of generated code).
9382
9383 2007-08-20  Jb Evain  <jbevain@novell.com>
9384
9385         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9386
9387 2007-08-20  Jb Evain  <jbevain@novell.com>
9388
9389         * mini.c (mono_method_to_ir): throw MethodAccessException
9390         and FieldAccessException instead of InvalidProgramException.
9391
9392 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9393
9394         * mini.c: CoreCLR security checks.
9395
9396         * mini.h: Removed MonoSecurityMode (moved to
9397         metadata/security-manager.h) and mono_security_mode global var
9398         (replaced by set/get functions in security-manager.h).
9399
9400         * driver.c: Added "core-clr-test" security mode for testing.  Used
9401         set-function for setting security mode.
9402
9403 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9404
9405         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9406         the new jit_info_table.
9407
9408         * driver.c: Test code for the new jit_info_table (enabled by the
9409         define MONO_JIT_INFO_TABLE_TEST).
9410
9411 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9412
9413         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9414         detection of call <REG> instruction sequence. Fixes build on freebsd.
9415
9416 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9417
9418         * mini-exceptions.c: Fix a warning.
9419
9420 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9421
9422         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9423         stack overflow handling code on amd64 too.
9424
9425         * mini-exceptions.c (mono_setup_altstack): Make this use 
9426         mono_thread_get_stack_bounds ().
9427
9428         * mini-x86.h: Disable sigaltstack on solaris x86.
9429
9430 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9431
9432         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9433
9434 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9435
9436         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9437
9438 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9439
9440         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9441
9442         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9443
9444 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9445
9446         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9447         due to alignment.
9448
9449 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9450
9451         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9452         to be emitted (bug #82281).
9453
9454 2007-08-01  Martin Baulig  <martin@ximian.com>
9455
9456         Merged the `debugger-dublin' branch.
9457
9458         * debug-debugger.h (MonoDebuggerInfo):
9459         Removed the `old_*' compatibility entries.
9460         Added `debugger_version' and `data_table'.
9461         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9462         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9463
9464         * debug-mini.c
9465         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9466         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9467         instead of a `gconstpointer'.
9468         (mono_debugger_insert_method_breakpoint): Return a
9469         `MonoDebugMethodAddressList *'.
9470
9471 2007-06-28  Martin Baulig  <martin@ximian.com>
9472
9473         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9474
9475 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9476
9477         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9478         __builtin_frame_address () since it is broken on older gcc versions.
9479
9480 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9481
9482         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9483         on the stack overflow handling and made the managed stack overflows
9484         catchable in most cases using soft guard pages.
9485         * exceptions-x86.c: added code to restore the protection in the soft
9486         guard pages at the end of exception handling.
9487
9488 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9491
9492 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9493
9494         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9495         exception handling.
9496
9497 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9498
9499         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9500         signal handling support until it has been ported to the new mechanism.
9501         * mini.c: fixed stack overflow detection and use the new
9502         architecture code  to handle signals on the altstack.
9503
9504 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9505
9506         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9507         stack overflows on the alt stack.
9508
9509 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9510
9511         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9512         stack overflows on the alt stack.
9513
9514 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9515
9516         * exceptions-ppc.c: cleanup preparing for altstack support.
9517
9518 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9519
9520         * exceptions-arm.c: cleanup preparing for altstack support.
9521
9522 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9523
9524         * mini.c (print_jit_stats): Output hazard pointer stats.
9525
9526 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9527
9528         * driver.c, mini.c: Replaced security mode flags with a single
9529         enum variable.
9530
9531 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9532
9533         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9534
9535 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9536
9537         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9538         (which doesn't do anything yet) for activating Core CLR
9539         (Silverlight) security.
9540
9541 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9542
9543         * mini-codegen.c: work around a possible gcc bug on arm.
9544
9545 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9546
9547         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9548         message for platforms that don't support AOT compilation.
9549
9550 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9551
9552         * mini.h, mini.c, driver.c: temporary smcs hack.
9553
9554 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9555
9556         * mini-arm.h, mini-arm.c: arm EABI fixes.
9557
9558 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9559
9560         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9561         case.
9562
9563         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9564         trampolines taking a method argument.
9565
9566         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9567
9568         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9569         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9570
9571         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9572         JIT compilation throws an exception. Fixes #82050.
9573
9574 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9575
9576         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9577         with the MONO_EXCEPTION_ defines.
9578
9579 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9582         #82117.
9583         
9584         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9585         the cause of an assertion.
9586
9587 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9588
9589         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9590         removed.
9591
9592 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9593
9594         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9595         assert. Should fix #82103.
9596
9597 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9598
9599         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9600         here too. Fixes #82095.
9601
9602         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9603         addresses.
9604
9605         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9606
9607         * mini-amd64.h: Enable IMT for amd64.
9608         
9609         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9610
9611 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9614
9615 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9616
9617         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9618         as soon as check_linkdemand sets an exception_type.
9619
9620 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9621
9622         * mini-x86.c: fixed offsets for IMT call sequence.
9623         * mini-x86.h: enable IMT again.
9624
9625 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9626
9627         * trace.c (mono_trace_enter_method): Decode MonoType too.
9628
9629         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9630
9631         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9632
9633         * mini-amd64.c: Add preliminary IMT implementation.
9634         
9635 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9636
9637         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9638         understand the new IMT-base interface invocation (thanks to
9639         Daniel Nauck for the report and the remote debugging session).
9640
9641 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9642
9643         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9644
9645 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9646
9647         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9648
9649 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9650
9651         * mini-trampolines.c: implement AOT IMT support.
9652         * mini-x86.h: enable IMT support for wider testing.
9653
9654 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9655
9656         * inssel.brg (emit_imt_argument): Add aot support here.
9657
9658         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9659
9660 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9661
9662         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9663         of the IMT implementation, partially from massi, with my
9664         implementation of the bsearch sequence. Disabled by default until
9665         the AOT code is implemented.
9666
9667 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9668
9669         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9670
9671         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9672
9673 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9674
9675         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9676         arch-independent IMT JIT code from Massimiliano
9677         Mantione (massi@ximian.com) with small cleanups from me.
9678
9679 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9680
9681         * Makefile.am: fix svn invocation to get the svn revision to be
9682         independent of the local language (build fix).
9683
9684 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9685
9686         * mini.c (inline_method): Reset cfg->exception_type if the
9687         inlining is aborted.  Fixes: 82049.
9688
9689 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9690
9691         * mini.c: remove assert from exception handling code when exception_ptr
9692         is not set.
9693
9694 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9695
9696         * mini.c (mono_codegen): Add an assert.
9697
9698         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9699         enter and leave code.
9700         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9701
9702 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9703
9704         * mini-ppc.c: fixed memory corruption for localloc(0)
9705         (bug #81852).
9706
9707 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9708         
9709         * mini.c: Fix warnings.
9710
9711 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9712
9713         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9714         to emit better double->int conversions.
9715
9716 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9717
9718         * mini.c: the provided Min/Max optimizations are valid for unisgned
9719         ints.
9720
9721 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9722
9723         * 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
9724
9725 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9726
9727         * mini.c (mono_running_on_valgrind): Add support for reporting the
9728         method and  its boundaries to valgrind.
9729
9730 2007-06-28  Martin Baulig  <martin@ximian.com>
9731
9732         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9733
9734 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9737
9738         * generic.2.cs: Add new test case.
9739
9740 2007-06-25  Martin Baulig  <martin@ximian.com>
9741
9742         Merged the `debugger-dublin' branch.
9743
9744         * debug-mini.c
9745         (mono_debugger_insert_method_breakpoint): New public method.
9746         (mono_debugger_remove_method_breakpoint): Likewise.
9747         (mono_debugger_check_breakpoints): New static method.
9748         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9749
9750         * debug-debugger.h (MonoDebuggerInfo):
9751         Renamed (to keep backward compatibility in the vtable):
9752         `insert_breakpoint' -> `old_insert_breakpoint'.
9753         `remove_breakpoint' -> `old_remove_breakpoint'.
9754         `create_string' -> `old_create_string'.
9755         `lookup_class' -> `old_lookup_class'.
9756         `lookup_type' -> removed; changed into a dummy field.
9757         `lookup_assembly' -> `old_lookup_assembly'.
9758         Added (same functionality, but different signature):
9759         `create_string', `lookup_class', `lookup_assembly'
9760         Added new:
9761         `get_method_addr_or_bpt', `remove_method_breakpoint',
9762         `runtime_class_init'.
9763
9764         * debug-debugger.c: Merged the `debugger-dublin' branch.
9765
9766 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9767
9768         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9769         well.
9770         (peephole_pass): Likewise.
9771
9772 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9773
9774         * driver.c: hopefully make setaffinity work also for ancient
9775         versions of linux.
9776
9777 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9778
9779         * driver.c : win32 build fix.
9780
9781 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9782
9783         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9784         processor if it is set.
9785
9786 2007-06-21  Martin Baulig  <martin@ximian.com>
9787
9788         * debug-mini.h: New file.
9789
9790         * debug-mini.c
9791         (mono_debugger_insert_breakpoint_full): Moved here from
9792         ../metadata/mono-debug-debugger.c.
9793         (mono_debugger_remove_breakpoint): Likewise.
9794         (mono_debugger_breakpoint_callback): Likewise.
9795
9796 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9797
9798         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9799         changes in MonoGenericClass.
9800
9801 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9802
9803         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9804
9805 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9806
9807         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9808         removal of MonoGenericMethod.
9809
9810 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9811
9812         * mini-exceptions.c: hooks for the exception events profiling API.
9813
9814 2007-06-14  Randolph Chung  <tausq@debian.org>
9815
9816         * Makefile.ma: Add hppa target.
9817         * mini-arch.h: Include mini-hppa.h
9818         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9819         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9820         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9821
9822 2007-06-14  Randolph Chung  <tausq@debian.org>
9823
9824         * inssel.brg: Add rules for "chained" compare-branch operations so that
9825         a single compare op can affect multiple branches.  Adjust cost for
9826         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9827         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9828         cost for some rules so that they can more easily be overridden by
9829         per-arch rules (with fixes from lupus).
9830         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9831
9832 2007-06-13  Randolph Chung  <tausq@debian.org>
9833
9834         * mini-ops.h: Reorder branch ops so that they match the order of the
9835         corresponding CEE_* ops.  The code expects them this way.
9836         Add new ops for HPPA target.
9837         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9838
9839 2007-06-13  Randolph Chung  <tausq@debian.org>
9840
9841         * mini-exceptions.c: Handle cases where the stack grows towards
9842         larger addresses.
9843         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9844
9845 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9846
9847         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9848         counter.
9849         * driver.c: explain where a non-matching corlib is found.
9850
9851 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9852
9853         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9854
9855 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9856
9857         * mini-exceptions.c: Generate a method profile leave event during
9858         an exception to ensure that the profiler gets notified.
9859
9860 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9861
9862         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9863         branch.
9864
9865         * cpu-amd64.md: Add long_and/or/xor opcodes.
9866
9867 2007-06-06  Wade Berrier  <wberrier@novell.com>
9868
9869         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
9870         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
9871         length of instruction shr_imm (expected 8, got 10)
9872
9873 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
9874
9875         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
9876
9877 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9878
9879         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9880         MonoInternalHashTable again (fixed bug in the internal hash table
9881         code).
9882
9883 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9884
9885         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
9886         Have to figure out what makes it crash the SWF regression.
9887
9888 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
9891
9892 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9893
9894         * mini.c: optimize out the type check when storing null in a
9895         reference array.
9896
9897 2007-06-04  Mark Probst  <mark.probst@gmail.com>
9898
9899         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9900         MonoInternalHashTable.
9901
9902 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9903
9904         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
9905         signed integer methods.
9906
9907 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9908
9909         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
9910         permanently since the current approach doesn't work.
9911
9912 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9913
9914         * inssel.brg (stmt): Only call delegate->invoke_impl if 
9915         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
9916
9917 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9918
9919         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
9920         the sreg2==rdx case.
9921         
9922         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
9923         account if it contains a rex prefix.
9924         (peephole_pass): Handle OP_FMOVE as well.
9925
9926 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
9929         as it causes regressions.
9930
9931 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
9932
9933         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
9934         static case as well.
9935
9936         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
9937
9938         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9939         (mono_arch_get_this_arg_from_call): Ditto.
9940
9941         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
9942
9943         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9944         invoke_impl field.
9945
9946         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9947         (mono_arch_get_this_arg_from_call): Ditto.
9948
9949         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
9950         
9951         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
9952         try to create optimized invoke code and use that for further invocations. 
9953         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
9954
9955         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
9956
9957 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
9958
9959         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
9960         sealed classes or methods.
9961         *devirtualization.cs: tests for the new optimization
9962
9963 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
9964
9965         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
9966         by the update_volatile () function.
9967
9968 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
9969
9970         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
9971         require it.
9972
9973         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
9974
9975 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
9976
9977         * mini.c: Add configure checks for header files.
9978         * mini-x86.c: Add configure checks for header files.
9979         * trace.c: Add configure checks for header files.
9980         * aot-runtime.c: Add configure checks for header files.
9981         * aot-compiler.c: Add configure checks for header files.
9982         * driver.c: Add configure checks for header files.
9983         * mini-codegen.c: Add configure checks for header files.
9984         
9985         Code is contributed under MIT/X11 license.
9986
9987 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9988
9989         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
9990         icompare_imm -128 + op_iclt. Fixes #81703.
9991
9992 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
9993
9994         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
9995
9996 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9997
9998         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
9999         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
10000         so that all isinst checks now use "interface_bitmap".
10001
10002 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
10003
10004         * cpu-amd64.md (jmp): Fix a warning.
10005
10006         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
10007
10008         * basic.cs: Add new regression test.
10009
10010         * basic.cs: Remove test which is now in basic-long.cs.
10011
10012         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
10013
10014         * basic-long.cs: Add new test.
10015         
10016 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
10019
10020 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
10023
10024         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
10025         places.
10026         
10027         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
10028         throwing code a bit.
10029
10030         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
10031         the exception throwing code a bit.
10032
10033         * mini-x86.c (get_call_info): Allocate result from a mempool.
10034
10035 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
10036
10037         * aot-compiler.c (find_typespec_for_class): Fix the assert.
10038
10039         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
10040
10041         * mini.h (MonoCompile): Add 'token_info_hash' field.
10042
10043         * mini.c: Save token->method associations during compilation so the AOT 
10044         compiler can use it.
10045         
10046         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
10047         which reference generic classes and methods.
10048
10049 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
10052
10053         * aot-compiler.c (compile_method): Fix a typo in a comment.
10054
10055         * aot-runtime.c (decode_cached_class_info): Skip generic types.
10056
10057         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
10058         everything generic.
10059
10060         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
10061
10062 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
10063
10064         * mini.h (MonoCompile): Add 'args' field.
10065
10066         * mini.c (mono_compile_create_vars): Store variables representing the arguments
10067         into cfg->args.
10068
10069         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
10070
10071 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * mini.c (mono_compile_get_interface_var): Remove this unused function.
10074
10075         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
10076
10077         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
10078         opcodes for some opcodes.
10079
10080         * mini.h *.brg *.c: Use the new opcodes.
10081
10082 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10083
10084         * mini.h: Bumped aot revision.
10085
10086         * inssel.brg: modified code generation of type checks for interfaces
10087         to use the new "MonoClass.interface_bitmap" instead of the old
10088         "MonoClass.interface_offsets".
10089
10090 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10091
10092         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
10093
10094 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
10097         64 bit platforms.
10098
10099 2007-04-27  Neale Ferguson <neale@sinenomine.net>
10100
10101         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
10102
10103 2007-04-27  Wade Berrier  <wberrier@novell.com>
10104
10105         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
10106         mini.h) to fix build.
10107
10108 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10109
10110         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
10111         
10112         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
10113         causes the corlib unit tests to fail.
10114
10115 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
10118
10119         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
10120
10121         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
10122         opcodes to the comparison relations.
10123
10124         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
10125         opcodes to their types.
10126         
10127         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
10128
10129         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
10130         it in cfg->arch.cinfo.
10131
10132         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
10133
10134         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
10135         cfg->cil_offset_to_bb.
10136
10137 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10138
10139         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
10140         created becase of initlocals.
10141
10142 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
10143
10144         * mini-alpha.c cpu-alpha.md: More alpha port work from 
10145         Sergey Tikhonov <tsv@solvo.ru>.
10146
10147 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
10148
10149         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
10150
10151 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
10152
10153         * cpu-s390.md (break): Correct the length of break instruction.
10154
10155 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10156
10157         * mini.c: fix a couple of soft-float issues and comments.
10158
10159 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10160
10161         * trace.c (is_filenamechar): - is also a filename char.
10162
10163 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10164
10165         * mini-s390.c: Correct checking for enum type in return value processing.
10166
10167 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10168
10169         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10170         (version.h): Makefile is in the build directory.
10171
10172 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10173
10174         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10175
10176 2007-04-11  Martin Baulig  <martin@ximian.com>
10177
10178         * mini.c (can_access_member): Fix handling of generic classes;
10179         fixes #81259.
10180
10181 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10184
10185 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10186
10187         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10188
10189 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10190
10191         * mini-codegen.c: make sure the right spill amount is
10192         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10193
10194 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10195
10196         * mini-ppc.c: fixes for the fp_branch_nan test.
10197
10198 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10199
10200         * basic.cs: Comment out new test which still fails on ia64.
10201
10202 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10203
10204         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10205
10206 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10207
10208         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
10209
10210 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
10211
10212         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
10213         on 64 bit machines. Fixes part of #80738.
10214
10215         * basic.cs: Add regression test.
10216
10217 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10218
10219         * inssel.brg basic.cs: Revert previous change to fix build.
10220
10221         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10222         platforms.
10223         
10224         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10225
10226         * basic.cs: Add new regression test.
10227
10228 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10231         many arguments.
10232
10233 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10234
10235         * cpu-s390x.md: Correct length of break instruction.
10236
10237 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10238
10239         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10240         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10241
10242 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10243
10244         * *.c: Begin WIN64 port.
10245         * mini.c:  Use correct register in profiler.
10246         * mini-amd64.c: No inline assembly on Win64.
10247         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10248         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10249         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10250         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10251         mono_arch_ip_from_context for Win64.
10252         
10253         Contributed under MIT/X11 license.
10254
10255 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10256
10257         * exceptions-amd64.c (seh_handler): Ditto.
10258
10259         * exceptions-x86.c (seh_handler): Fix a memory leak.
10260
10261 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10262
10263         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10264         mini-s390x.c: fixed peephole optimizations to deal
10265         correctly with 1 and 2 byte reload avoidance.
10266
10267 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10268
10269         * cpu-s390.md, cpu-s390x.md: update localloc length.
10270
10271 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10272
10273         * cpu-g4.md: added missing descriptions.
10274
10275 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10276
10277         *  Makefile.am: Add support so the tail tests are not executed on
10278         PowerPC as that is a known limitation of the PowerPC port.
10279
10280 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10281
10282         * runmdesc.bat:  Move to msvc directory.
10283         
10284 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10285
10286         * runmdesc.bat:  Run executable that was produced by the current
10287         target and sent via an argument.
10288         
10289 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10292         #81102.
10293
10294         * generics.2.cs: Add regression test.
10295
10296 2007-03-09  Wade berrier  <wberrier@novell.com>
10297
10298         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10299
10300 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10303         AOT code depends on this.
10304
10305 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10306
10307         * mini.c: more precise tracking of types in the eval stack
10308         (part of fix for bug #81044).
10309
10310 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10311
10312         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10313
10314         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10315
10316 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10317
10318         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10319
10320         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10321
10322 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10323
10324         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10325         a pointer on 64 bit systems. Fixes #80190.
10326
10327         * iltests.il: Add new regression test.
10328
10329 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10330
10331         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10332
10333 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10334
10335         * trace.c: Remove an erroneous alignemnt check when tracing.
10336           Fixes --trace on OSX86.
10337
10338 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10339
10340         * mini-$(arch).h: initialize SP in context for all the archs.
10341
10342 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10343
10344         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10345         regressions in the thread tests.
10346
10347 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10348
10349         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10350         - fixed implementation of LOCALLOC opcode
10351         - implemented non-un compare for floats
10352         - code cleanup
10353         - implementation of FDIV and CKFINITE opcodes
10354         - fixes for latest mono updates
10355         - additional arch opcodes
10356
10357 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10358
10359         * Makefile.am: simplify and merge rules for cross-compilation.
10360
10361 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10362
10363         * local-propagation.c: Actually *apply* the fix for bug 80591...
10364
10365 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10366
10367         * mini-exceptions.c: backuot part of the last change
10368         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10369
10370 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10371         * inssel.brg: Fix bug 59286.
10372
10373
10374 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10375
10376         * mini-exceptions.c: patch from Zoltan to correctly check for
10377         stack boundaries (using the stack register, not the frame register),
10378         fixes bugs #80724, #79717.
10379
10380 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10381
10382         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10383         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10384
10385         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10386         presence of frame pointer elimination.
10387
10388 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10389         
10390         * mini-x86.h: NetBSD UCONTEX_REG defines.
10391
10392 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * inssel-amd64.brg: Fix amd64 build.
10395
10396 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10397
10398         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10399         on amd64.
10400
10401 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10404         ends.
10405
10406         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10407
10408 2007-01-30 Mark Mason <mason@broadcom.com>
10409
10410            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10411            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10412            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10413            beginning support for CEE_JMP [not quite working yet]
10414            * tramp-mips.c: LMF handling now works
10415         
10416 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10419
10420         * mini.h (NULLIFY_INS): New macro.
10421
10422 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10423
10424         * mini.c: statistical profiler fix for windows, patch
10425         from Tor Lillqvist (tml@novell.com).
10426
10427 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10428         * local-propagation.c: Fix bug 80591.
10429
10430 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10431
10432         * Makefile.am: put back the --export-dynamic option as with
10433         the previous gmodule flags (thanks to Robert Jordan).
10434
10435 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10436
10437         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10438
10439         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10440         simplify and speed up the local register allocator. Also rename some fields
10441         like iassign->vassign.
10442         
10443         * regalloc.c: Remove some functions which are no longer used since their
10444         inlined version is in mini-codegen.c.
10445         
10446         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10447
10448         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10449
10450 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10451
10452         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10453         narrowing. Fixes #80622.
10454
10455         * iltests.il: Add new regresssion test. 
10456
10457 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10458
10459         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10460         debug-debugger.c, debug-debugger.h: warning fixes.
10461         * driver.c: updated copyright year and made it fit in one line.
10462
10463 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10464
10465         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10466
10467 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10468
10469         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10470
10471         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10472
10473         * iltests.il: Add new test for bug #80507.
10474
10475 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10476
10477         * mini-arm.h: use soft-float also on vfp for now.
10478
10479 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10480
10481         * mini.c: fix some more soft-float issues.
10482
10483 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10484
10485         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10486
10487 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10488         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10489         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10490         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10491
10492 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10493
10494         * mini-arm.c: typo fix.
10495
10496 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10497
10498         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10499
10500 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10501
10502         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10503         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10504
10505         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10506
10507         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10508
10509         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10510         
10511         * inssel.brg: Fix a warning.
10512
10513         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10514
10515         * abcremoval.c ssa.c ssapre.c: Update after this change.
10516         
10517         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10518
10519         * dominators.c (df_set): Use mono_bitset_union_fast.    
10520
10521 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10522
10523         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10524         mini-codegen.c: reduce relocations and memory usage for the cpu
10525         description.
10526
10527 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10528
10529         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10530
10531         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10532         to reduce their size.
10533
10534 2007-01-19 Mark Mason <mason@broadcom.com>
10535
10536         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10537         * mini-mips.c: more configuration macros, support long conditional branches, additional
10538         asserts, fix epilog instrumentation.
10539         * mini-mips.h: use standard stack walk
10540         * cpu-mips.md: increase size of div, rem and conditional branches
10541         
10542 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10543
10544         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10545         to cpu spec data.
10546
10547 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10548
10549         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10550         (compile_method): Ditto.
10551
10552         * aot-runtime.c (decode_klass_info): Ditto.
10553
10554         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10555         needed by the code generated by inssel.brg. Also fix a warning.
10556
10557 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10558
10559         * mini.c: deal with enums that become genericinsts by
10560         being nested in a generic class (bug #79956).
10561
10562 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10563
10564         * mini.c: match the generic definition to check for
10565         private access with generic types (bug #78431).
10566
10567 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10568
10569         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10570         to make life easier for people cross-compiling that insist on not
10571         using scratchbox.
10572
10573 2007-01-17 Mark Mason <mason@broadcom.com>
10574
10575         * inssel-long.brg: patch to deal with mips missing flags
10576         * inssel-long32-mips.brg: implement overflow checks
10577         * insset-mips.brg: implement overflow checks
10578         * mini-mips.h: implement conditional exception handling
10579         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10580           Remove unused code, minor cleanups.
10581         * exceptions-mips.c: minor cleanups
10582         * mini-ops.h: add mips conditional exception ops
10583         * cpu-mips.md: add mips conditional exception ops
10584
10585         
10586 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10587
10588         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10589         to deal with mips missing of flags.
10590
10591 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10592
10593         * exceptions-ppc.c: execute fault handlers.
10594
10595 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10596
10597         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10598
10599 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10600
10601         * mini.c: handle also floating point values in initialize_array.
10602
10603 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10604
10605         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10606         array initialization and make it conditional on the intrins option.
10607
10608 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10609
10610         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10611         relocations and put the patch info names close to the enum definition.
10612
10613 2007-01-15 Mark Mason <mason@broadcom.com>
10614
10615         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10616
10617 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10618
10619         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10620
10621 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10622
10623         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10624
10625 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10626
10627         * Makefile.am: distribute the mips sources.
10628
10629 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10630
10631         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10632         directly.
10633
10634 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10635
10636         * cpu-x86.md: back out for now as this triggers other regressions.
10637
10638 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10639
10640         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10641         to eax:edx, so ecx can't get allocated to them (bug #80489).
10642
10643 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10644
10645         * mini.c, mini-exceptions.c: enabled running fault handlers
10646         (bug #80469).
10647
10648 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10649
10650         * driver.c: If nothing fail, do not use the string "failed",
10651         because it makes it very annoying to view test result logs on the
10652         web. 
10653
10654 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10655
10656         * debug-debugger.c (mono_debugger_main): Rename "main" to
10657         "main_method" to prevent a warning.
10658
10659         Remove a warning for unused field.
10660
10661 2006-12-28  Martin Baulig  <martin@ximian.com>
10662
10663         * debug-debugger.c
10664         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10665
10666 2006-12-22  Martin Baulig  <martin@ximian.com>
10667
10668         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10669         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10670         seperate `.mdb_debug_info' section, so we can access it from the
10671         debugger even if the binary is stripped.
10672
10673         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10674         from the `.mdb_debug_info' here to prevent the linker from
10675         removing that section.
10676
10677         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10678         mdb-debug-info64.s.
10679
10680 2006-12-19  Robert Jordan  <robertj@gmx.net>
10681
10682         * mini-x86: enable the code to return small structures in
10683         registers for FreeBSD as well. Fixes bug #80278.
10684         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10685
10686 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10687
10688         * mini-x86.c: align the stack when calling the profiler
10689         function instrumenting the prolog (on OSX).
10690
10691 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10692
10693         * mini.c: emit a break opcode where Debugger.Break () is called.
10694
10695 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10696
10697         * mini.c (mono_method_to_ir): Provide useful information on this
10698         assert, to prevent others from debugging like I did.
10699
10700 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10701
10702         * mini.c: enable code which was incorrectly commented
10703         (bug #80235).
10704
10705 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10706
10707         * mini-x86.c: enable on OSX, too, the code to return small
10708         structures in registers.
10709
10710 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10711
10712         * mini-x86.c: remove the use of the dynamic code manager here, too.
10713
10714 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10715
10716         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10717         mono_debugger_create_notification_function() to use
10718         mono_global_codeman_reserve () instead of a dynamic code manager.
10719
10720 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10721
10722         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10723         ves_array_element_address() jit icall and use a generated
10724         managed method instead (which is about 4 times faster for a rank 3
10725         array access).
10726
10727 2006-11-29  Mark Mason  <mason@broadcom.com>
10728
10729         * basic-calls.cs: additional tests for passing
10730         structures as function arguments.
10731
10732 2006-11-29  Mark Mason  <mason@broadcom.com>
10733
10734         * mini-mips.h: disable custom exception handling
10735         * mini-mips.c: throw/rethrow should use jalr to call
10736         exception stubs.  Fixed bug with passing structures
10737         by value. More support for tracing floating point
10738         functions.
10739
10740 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10741
10742         * mini.c: fixed typo in the soft-float ldind.r4 handling
10743         (bug #80086).
10744
10745 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10746
10747         * mini.c, mini.h, driver.c: added --runtime command line
10748         option to select a different runtime than the autodetected one.
10749         * jit.h: added API for embedders to initialize with a specific
10750         runtime version.
10751
10752 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10753
10754         * mini.c: handle also boxing of r4 values (bug #80024).
10755
10756 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10757
10758         * mini-ppc.c: force indirect calls until we reserve
10759         enough address space for all the generated code.
10760
10761 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10762
10763         * exceptions-arm.c: workaround bugs in the libc definition
10764         of struct ucontext.
10765
10766 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10767
10768         * inssel.brg: fixes from me and Mark Mason.
10769
10770 2006-11-23  Dick Porter  <dick@ximian.com>
10771
10772         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10773         semaphore display now we've fixed the initial value
10774
10775 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10776
10777         * inssel.brg: partially revert the last change to fix the build.
10778
10779 2006-11-21  Mark Mason  <mason@broadcom.com>
10780
10781         * inssel.brg: Add and use compare-and-branch macros to support
10782         architectures that do not have condition code registers (ie. MIPS).
10783         * *-mips.{c,brg,md}: Fix copyright statements
10784
10785 2006-11-20  Mark Mason  <mason@broadcom.com>
10786
10787         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10788         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10789         * mini.h: Added declaration for mono_print_ins()
10790         * mini-codegen.c: added ins_spec initializer for MIPS
10791         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10792         vreg to be virtual and hreg to be non-virtual.
10793         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10794         is not yet working/implemented correctly.
10795         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10796         non-static, fixup calls to print_ins() from other parts in the file.
10797
10798 2006-11-20  Mark Mason  <mason@broadcom.com>
10799
10800         * basic-calls.cs: added tests for passing structures as arguments
10801         to calls.
10802
10803 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10804
10805         * inssel-long32.brg: optimize signed division by power of two.
10806
10807 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10808
10809         * mini-arm.c: added support for interworking with thumb code
10810         (mono must be still be built using the ARM instruction encoding).
10811
10812 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10813
10814         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10815         verifier has different rules for it.   Fixes a few verifier issues
10816         in the test suite.
10817
10818         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10819         at the end, so people know what happened.
10820
10821 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10822
10823         * brach-opts.c: in optimize_exception_target() make sure we
10824         are in a catch clause (fixes bug #79871).
10825
10826 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10827
10828         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10829         more soft-float support fixes.
10830
10831 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10832
10833         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10834         that are passed half on the stack and half in registers.
10835
10836 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10837
10838         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10839         more mips integration work from Mark E Mason 
10840         <mark.e.mason@broadcom.com>.
10841
10842 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10843
10844         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10845         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10846         tramp-mips.c: added sources for the mips port, not
10847         integrated in the build yet. Contributed by
10848         Mark E Mason <mark.e.mason@broadcom.com>.
10849
10850 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10851
10852         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10853
10854 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10855
10856         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10857         put the soft-float rules in its own file since it seems to
10858         break s390 compilation.
10859
10860 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10861
10862         * mini-arm.c: fixed wrnings.
10863
10864 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10865
10866         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10867         inssel-arm.brg: ARM support for soft-float.
10868
10869 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10870
10871         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
10872         loads and stores of 32 bit fp values.
10873
10874 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
10875
10876         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
10877
10878         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
10879         works. Fixes #79852 and #79463.
10880
10881 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10882
10883         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
10884         more soft-float support WIP and fixes.
10885
10886 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
10887
10888         * mini-arm.c: some VFP updates.
10889
10890 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10891
10892         * mini-exceptions.c: 0 is a valid local var offset in some
10893         architectures, don't assert (bug #78508).
10894
10895 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
10896
10897         * exceptions-arm.c: fixed off by one error in stack walk code.
10898
10899 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10900
10901         * mini.h, mini.c: more precise tracking of type load exceptions.
10902
10903 2006-11-03  Robert Jordan  <robertj@gmx.net>
10904
10905         * Makefile.am: [WIN32] Add monow.exe target.
10906         * driver.c: [WIN32] Don't detach the console when debugging.
10907         Fixes bug #79797.
10908         
10909 2006-10-30  Miguel de Icaza  <miguel@novell.com>
10910
10911         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
10912
10913 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10914
10915         * aot-compiler.c (emit_method_info): Add a case missed earlier.
10916
10917         * driver.c (mini_regression): Fix --regression with AOT.
10918
10919         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
10920
10921 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
10922
10923         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
10924
10925         * mini-sparc.h: Don't use sigaction on sparc/linux.
10926
10927         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
10928
10929         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
10930
10931         * mini-exceptions.c: Add proper include files for getpid ().
10932
10933 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
10934
10935         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
10936         address instead of a MonoJitInfo* to avoid decoding the exception info for the
10937         method.
10938
10939         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
10940         name cache to reduce its size.
10941
10942         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10943
10944 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10945
10946         * mini-x86.c: Save/restore the current LMF structure more efficiently using
10947         the mono_lmf TLS variable.
10948
10949         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
10950         trampoline lmf frames.  
10951
10952         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
10953
10954 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
10955
10956         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
10957         the mono_lmf TLS variable.
10958
10959         * mini-exceptions.c: Access the LMF structure through accessors.
10960
10961         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
10962         variable instead of in jit_tls->lmf.
10963
10964         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
10965         
10966         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
10967         trampoline lmf frames.
10968
10969         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
10970
10971 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10972
10973        * mini.c trace.c mini-x86.c: Revert these too.
10974         
10975        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
10976        signature change.
10977
10978 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
10979
10980         * genmdesc.c: removed now dead code.
10981
10982 2006-10-09  Robert Jordan <robertj@gmx.net>
10983
10984         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
10985
10986 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10987
10988         * mini.h: do not leave gaps in the opcode values.
10989
10990 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
10991
10992         * jit-icalls.h: flag functions as internal here, too.
10993
10994 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
10995
10996         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
10997         functions with the internal attribute.
10998
10999 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
11000
11001         * aot-compiler.c: fclose the file descriptor in the profile read loop.
11002
11003 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11004
11005         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
11006         for soft-float.
11007
11008 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
11011         tail calls as on other platforms.
11012
11013         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
11014
11015         * iltests.il: Add a few tailcall tests.
11016
11017 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11018
11019         * driver.c: fix loop for old compilers (bug #79521).
11020
11021 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11022
11023         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
11024
11025         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
11026
11027         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
11028         metadata without any code.
11029
11030         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
11031         more precise debugging information using gdb.
11032
11033 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11034
11035         * inssel-ia64.brg: Make the helper methods static.
11036
11037 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11038
11039         * inssel-x86.brg: make the helper methods static.
11040
11041 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
11042
11043         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
11044
11045 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11046
11047         * mini.c: updates for monoburg changes.
11048         * inssel.brg: make a few helper functions static as they should.
11049
11050 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11051
11052         * Makefile.am: Move mini-codegen.c to common_sources.
11053
11054 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11055
11056         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
11057         instructions.
11058         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
11059         mini-ppc.h: port to use the common local register allocator.
11060
11061 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11062
11063         * mini.h: Remove the comment too then.
11064
11065 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
11066
11067         * mini.h: put back backend.data which is to be used shortly and
11068         doesn't increase the size of MonoInst. If any 64 bit arch aligned
11069         pointers on 4 byte boundaries it'd have much bigger issues running
11070         and you can ifdef it out anyway.
11071
11072 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11073
11074         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
11075         MonoInst size by 4 bytes on 64 bit machines.
11076
11077 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11078
11079         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
11080         replacement with more meaningful field names. Arch maintainers, please
11081         check the assigned names are good enough for your arch.
11082
11083 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11084
11085         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
11086         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
11087
11088 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11089
11090         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
11091         relocations and memory requirements, put the optimization flags
11092         definitions in their own file.
11093
11094 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
11095
11096         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
11097
11098         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
11099
11100 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
11101
11102         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
11103
11104 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
11105
11106         * inssel.brg: use the correct function to get the size of an item
11107         in an array, given an element class.
11108         * aot-compiler.c: do not access class->class_size directly.
11109
11110 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11111
11112         * mini.h, debug-mini.c: added a debugging function to print
11113         info about local variables and arguments in a jitted method.
11114
11115 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
11116
11117         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11118
11119         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
11120
11121 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11122
11123         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
11124         inner and outer loops when passing vtypes.
11125
11126 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
11127
11128         * mini-ppc.c: take into account the cpu errata for cache flushing
11129         which caused some random errors (bug #79381).
11130
11131 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11132
11133         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
11134         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
11135
11136 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
11137
11138         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
11139         loaded.
11140
11141         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
11142         freebsd ports tree.
11143
11144         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
11145         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
11146
11147         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
11148         displacement.
11149
11150 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
11151
11152         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
11153
11154 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
11155
11156         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11157         macro does not have to be changed during debugging.
11158
11159         * 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>.
11160
11161         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11162
11163         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11164         
11165         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11166         MONO_ARCH_NO_EMULATE_MUL is defined.
11167
11168         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11169
11170         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11171
11172         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11173
11174         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11175         
11176 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11179         stuff to mini-exceptions.c where it is used.
11180
11181         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11182         setup code, the real one is in mini-exceptions.c.
11183
11184         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11185         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11186         some changes from the freebsd ports tree.
11187
11188         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11189         constants.
11190         
11191         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11192
11193 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11194
11195         * mini.c: on Linux, check for /proc to be mounted
11196         (bug# 79351, novell bug#201204).
11197
11198 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11199
11200         * mini.c: handle cases where pthread_attr_getstack() behaves
11201         incorrectly (bug #78096).
11202
11203 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
11204
11205         * mini-arm.c: support larger stack frames (bug #79272).
11206
11207 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11208
11209         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
11210
11211         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
11212         tokens.
11213
11214         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
11215         mono_class_from_name () to find a class from its name.
11216
11217         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
11218
11219 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
11220
11221         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11222
11223 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
11224
11225         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11226
11227 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11228
11229         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11230         callinfo->trampoline.
11231
11232         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11233         fixes #79271.
11234         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11235         future.
11236
11237 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11238
11239         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11240
11241 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11244         stats.method_trampolines, it is already done by the generic trampoline code.
11245
11246         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11247         
11248 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11251
11252         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11253
11254         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11255
11256         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11257         
11258         * mini.c (print_jit_stats): Print new stats.
11259
11260         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11261
11262 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11263
11264         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11265         Address on two dimensional arrays. Fixes #78729.
11266
11267         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11268
11269         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11270         a method.
11271
11272         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11273
11274         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11275         #79130.
11276         
11277         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11278         a race condition.
11279         (mini_get_ldelema_ins): Ditto.
11280
11281 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11284         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11285         Fixes #79213.
11286
11287 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11288
11289         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11290         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11291
11292         * exceptions-s390x.c: Cosmetic change.
11293
11294         * tramp-s390.c: Fix warning.
11295
11296         * cpu-s390.md: Correct length of mul_imm.
11297
11298 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11299
11300         * aot-compiler.c: added binary writer with ELF backend
11301         implementation (only on Linux/x86 for now).
11302
11303 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11304
11305         * Makefile.am: Don't run net 2.0 AOT tests.
11306
11307         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11308         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11309
11310         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11311
11312 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11313
11314         * aot-compiler.c: simplified and refactored the asm-writing code
11315         to allow different backends.
11316
11317 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11318
11319         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11320
11321         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11322         little. Share patches of type TYPE_FROM_HANDLE as well.
11323
11324         * mini.c (mono_patch_info_equal): New helper function.
11325         (mono_patch_info_hash): Ditto.
11326
11327         * aot-compiler.c (emit_method_code): Fix s390 build.
11328
11329         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11330         is not handled because it is stored as a flag and not as a type ctor. Fixes
11331         #79016.
11332
11333 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * aot-compiler.c: Fix computation of GOT slot statistics.
11336         
11337         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11338         Also remove support for not PIC AOT.
11339
11340         * mini.h: Bump AOT file format version.
11341
11342         * objects.cs: Add a test for #78990.
11343
11344         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11345         (peter.dettman@iinet.net.au). Fixes #79087.
11346
11347         * basic-long.cs: Add a test for the above.
11348
11349 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11350
11351         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11352         
11353         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11354         code somewhat.
11355
11356 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11357
11358         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11359         exceptions.
11360
11361 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11362
11363         * mini.c: Don't verify COM proxy invoke calls
11364         
11365
11366 2006-08-10  Dick Porter  <dick@ximian.com>
11367
11368         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11369         which process is holding semaphores locked.
11370
11371 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11372
11373         * mini-ia64.c mini-amd64.c: Fix #79027.
11374
11375         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11376
11377         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11378
11379         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11380         implicit arguments in a vararg call. Fixes #79027.
11381
11382 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11383
11384         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11385         (mono_get_array_new_va_signature): Ditto.
11386
11387 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11388
11389         * aot-runtime.c: Call init_plt lazily.
11390
11391         * inssel-long.brg: Fix unsigned long->int conversion.
11392
11393         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11394
11395         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11396         that most data is now in the .rss/.data section.
11397
11398 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11399
11400         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11401
11402         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11403
11404         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11405
11406         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11407
11408         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11409         virtual call. Fixes #79010.
11410
11411         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11412         and use the result as the this argument in the real call.
11413
11414         * generics.2.cs: Add a new test for #79010.
11415         
11416 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * mini-x86.c: Fix a warning.
11419
11420         * aot-compiler.c: Add a bunch of statistics.
11421
11422         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11423
11424 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11425
11426         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11427
11428 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11429
11430         * 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>.
11431
11432 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11433
11434         * mini.c (mono_method_to_ir): Obtain the original method in the
11435         CIL stream and use this to perform validation.
11436
11437         Fixed: #78816
11438
11439 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11440
11441         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11442         (mono_arch_call_opcode): Ditto.
11443
11444         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11445         #78826.
11446
11447         * mini.c (mono_patch_info_dup_mp): New helper function.
11448         
11449         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11450         compilation. Fixes #78827.
11451
11452 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
11453
11454         * declsec.c: Use original security informations for
11455           MONO_WRAPPER_MANAGED_TO_MANAGED.
11456
11457 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11458
11459         * mini.c: Allow Com Interop methods/classes and
11460         don't verify COM wrapper calls
11461         
11462
11463 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11464
11465         * inssel-long32.brg: Fix long->i4 checked conversion.
11466
11467         * exceptions.cs: Add a test for the above.
11468
11469 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11470
11471         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11472
11473         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11474         leaks.
11475
11476         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11477         #78775.
11478
11479 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11480
11481         * mini.c: Fix solaris/x86 exception handling.
11482
11483         * Makefile.am: Get rid of $(ICU_LIBS).
11484
11485 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11488         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11489         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11490
11491         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11492
11493         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11494         this function causes a SIGSEGV.
11495
11496 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11497
11498         * mini.c: Remove unused solaris/x86 includes.
11499
11500 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11503
11504 2006-06-20  Jb Evain  <jbevain@gmail.com>
11505
11506         * cpu-g4.md: fix max length of start_handler instruction.
11507
11508 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11509         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11510
11511 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11512         * ssa.c: Fixed bug 78653 for SSA based deadce.
11513         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11514         MonoInst.flags, used in SSA based deadce.
11515         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11516         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11517
11518 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11519
11520         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11521         it can end up using non executable memory on ppc64 systems
11522         running ppc32 userspace (fix from Johannes Berg).
11523
11524 2006-06-14  Dick Porter  <dick@ximian.com>
11525
11526         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11527         4.1.1
11528
11529 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11530         * mini.c: Made so that inline is locally disabled if it would
11531         trigger a .cctor, because too many apps depend on this behavior
11532         (which seems to be also the one of the MS CLR).
11533
11534 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11535
11536         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11537         No idea why this worked before.
11538
11539         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11540         which branch to outer exception clauses since they could skip the
11541         inner finally clauses. Fixes #78633.
11542
11543         * exceptions.cs: Add a test for the above.
11544
11545         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11546         Fixes #78629.
11547
11548         * iltests.il: Add a test for the above.
11549
11550 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11551
11552         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11553         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11554
11555         * iltests.il: Add a test for the above.
11556
11557 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11560         
11561         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11562         methods as instrinsics.
11563
11564 2006-06-09  Wade Berrier <wberrier@novell.com>
11565
11566         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11567         (simple-cee-ops.h ssapre-mini-ops.h)
11568
11569 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11570
11571         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11572         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11573         instruction).
11574         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11575         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11576
11577 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11578
11579         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11580
11581 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11582
11583         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11584         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11585         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11586         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11587         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11588         of opcodes, so that bug 78549 should not happen again.
11589         * ssapre.c: Updated to use the renamed files.
11590
11591 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11594         in OP_ATOMIC_EXCHANGE_I4.
11595
11596 2006-06-07  Wade Berrier <wberrier@novell.com>
11597
11598         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11599         in mono_debugger_create_notification_function)
11600
11601 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11604         
11605         * mini.c (type_from_stack_type): Disable some changes which do not
11606         seem to work.
11607
11608         * driver.c: Reenable opts.
11609
11610         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11611         of the evaluation stack.
11612         
11613         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11614         evaluation stack trace at entry to the bblock.
11615
11616         * mini.c (merge_stacks): New function to perform verification of stack merges.
11617         Turned off by default.
11618
11619         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11620         STACK_MP.
11621         
11622 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11623
11624         * local-propagation.c: Fixed bug 78549.
11625
11626 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11627
11628         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11629
11630 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11631
11632         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11633         tramp-arm.c, tramp-ia64.c
11634         (mono_debugger_create_notification_function): Update signature to
11635         new signature and use new protocol for creating the notification
11636         function.  
11637
11638         Should fix the build.
11639
11640 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11641
11642         * exceptions-ppc.c (mono_jit_walk_stack)
11643         (ves_icall_get_frame_info): Fix the build
11644
11645 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11646
11647         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11648
11649 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11650
11651         * il2tests.2.il: New file for generics CIL tests.  Add test for
11652         #78019.
11653         * Makefile.am: Update.
11654
11655         Fix #78019
11656         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11657         to nullable types.
11658
11659 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11660
11661         * aliasing.c: Fixed bug 78311.
11662
11663 2006-05-29  Martin Baulig  <martin@ximian.com>
11664
11665         * mini-exceptions.c (mono_find_jit_info): When computing the
11666         native offset, check whether we're actually inside the method's
11667         code; call mono_debug_print_stack_frame() to format the frame.
11668         (ves_icall_System_Exception_get_trace): Call
11669         mono_debug_print_stack_frame() to format the stack frame.
11670         (ves_icall_get_trace): Update to the new debugging API.
11671         (mono_jit_walk_stack_from_ctx): Likewise.
11672         (ves_icall_get_frame_info): Likewise.
11673
11674         * mini.c (get_method_from_ip): Use the new debugging API.
11675         (mono_print_method_from_ip): Likewise.
11676
11677         * exceptions-ppc.c
11678         (mono_jit_walk_stack): Use the new debugging API.
11679         (ves_icall_get_frame_info): Likewise.   
11680
11681 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11682
11683         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11684
11685 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11686
11687         * mini.c: Added "limitator" to inline for debugging.
11688
11689 2006-05-24  Martin Baulig  <martin@ximian.com>
11690
11691         * debug-debugger.c (mono_debugger_init): Create a private,
11692         malloc()-based code manager for the notification function and
11693         intentionally leak it on exit.  This fixes the crash-on-exit race
11694         condition.
11695
11696         * tramp-amd64.c
11697         (mono_debugger_create_notification_function): Added
11698         `MonoCodeManager *' argument.
11699
11700         * tramp-x86.c
11701         (mono_debugger_create_notification_function): Added
11702         `MonoCodeManager *' argument.
11703
11704 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11705
11706         * aliasing.c: Fixed 64 bit issue.
11707         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11708         default since all known bugs are fixed (one more time!).
11709
11710 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11711
11712         * mini.c: write barrier support.
11713
11714 2006-05-23  Martin Baulig  <martin@ximian.com>
11715
11716         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11717         check at the top of the file.
11718
11719 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11720
11721         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11722         reverting changes without reason and without changelog entries.
11723
11724 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11725
11726         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11727         to a few opcodes. Fixes #78439.
11728
11729         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11730         consistency with other archs.
11731
11732         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11733
11734 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11735
11736         * debug-debugger.c: fix the build.
11737
11738 2006-05-17  Martin Baulig  <martin@ximian.com>
11739
11740         * debug-debugger.c
11741         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11742         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11743         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11744         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11745
11746 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11747
11748         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11749
11750 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11751
11752         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11753         MONO_TYPE_GENERICINST.
11754         
11755         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11756         MONO_TYPE_GENERICINST.
11757
11758 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11759
11760         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11761         #78325.
11762
11763 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11766         mempool.
11767         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11768
11769 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11770
11771         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11772         mono_trace_cleanup ().
11773
11774         * iltests.il: Fix problem with the newly added test.
11775
11776         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11777         due to register constraints, free up the previous hreg. Fixes #78314.
11778
11779         * iltests.il: Add new test for #78314.  
11780
11781         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11782         Interlocked.Add. Fixes #78312.
11783
11784         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11785         
11786 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11787
11788         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11789
11790 2006-05-05  Martin Baulig  <martin@ximian.com>
11791
11792         * debug-mini.c (mono_debug_open_block): New method.
11793
11794         * mini-amd64.c
11795         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11796         the beginning of each basic block.
11797
11798         * mini-x86.c
11799         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11800         the beginning of each basic block.
11801
11802 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11803
11804         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11805         default until I understand why they break the build on amd64.
11806
11807 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11808
11809         * mini.c (mini_cleanup): Call mono_cleanup ().
11810
11811         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11812         errors.
11813
11814 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11815
11816         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11817         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11818         default since all known bugs are fixed, and I cannot reproduce bug
11819         77944... I'm asking Matt Hargett to test again after this commit.
11820
11821 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11822
11823         * mini-codegen.c: Fixed typo that thrashed inline.
11824
11825 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11826
11827         * dominators.c (compute_dominators): Avoid using a worklist since
11828         it is not correct in some cases. Instead, iterate over all bblocks as
11829         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11830
11831 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11832
11833         * mini.c (mono_jit_compile_method_inner): Use
11834         mono_prepare_exception_from_error that resets the value
11835         internally.
11836
11837 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11838
11839         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11840         
11841 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11842
11843         * aliasing.c: Fixed bug 78210.
11844
11845 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11846
11847         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11848         default until all their problems (or the ones they trigger) are fixed.
11849
11850 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11851
11852         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11853         
11854         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11855         as loaded only after resolving patches since that could invoke the same method.
11856
11857         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11858
11859         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11860         functions.
11861
11862         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11863         AOT loader.
11864
11865         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11866         stack.
11867
11868         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
11869         made from AOT code through the PLT table.
11870
11871         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
11872         holding the plt offset when a call is made to the aot plt trampoline.
11873         
11874 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11875
11876         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
11877         amd64 AOT support.
11878
11879         * Makefile.am (common_sources): Fix build breakage.
11880
11881         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
11882         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
11883         intra-assembly calls if possible.
11884         
11885         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
11886
11887         * mini-trampolines.c: Handle PLT entries.
11888
11889         * mini.c: Avoid creating a GOT var for calls.
11890
11891         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
11892         from mscorlib code.
11893
11894         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
11895         from mscorlib code.
11896
11897         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
11898         AOT code.       
11899
11900         * mini.h: Bump AOT file format version.
11901         
11902         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
11903         covers more cases.
11904
11905 2006-04-25  Martin Baulig  <martin@ximian.com>
11906
11907         * driver.c: Disable copyprop, consprop and inline when running
11908         inside the debugger.
11909
11910 2006-04-25  Martin Baulig  <martin@ximian.com>
11911
11912         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
11913         with `get_current_thread' and added `detach'.
11914         (MonoDebuggerMetadataInfo): Added `thread_size',
11915         `thread_tid_offset', `thread_stack_ptr_offset' and
11916         `thread_end_stack_offset'.
11917
11918 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11919
11920         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
11921         aot-runtime.c.
11922
11923         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
11924         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
11925
11926         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
11927
11928         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
11929
11930         * aot.c: Add support for ADJUSTED_IID.  
11931
11932 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11933
11934         * aot.c (emit_method_order): Don't align method_order_end.
11935
11936         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
11937         the interface ID changes.
11938
11939 2006-04-21  Dick Porter  <dick@ximian.com>
11940
11941         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
11942         cleaning up a thread.  Fixes the new part of bug 77470.
11943
11944 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
11945
11946         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
11947         to managed wrapper.
11948                      
11949 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11950
11951         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
11952         
11953         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
11954         SIGSEGV. Fixes #78072.
11955
11956         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
11957         unregister our SIGABRT handler.
11958
11959 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
11960
11961         * mini.c: Disabled inline where it can alter the call stack in a
11962         way visible from managed code.
11963         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
11964         default.
11965
11966 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
11967
11968         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
11969         on other platforms. Fixes #78089.
11970
11971 2006-04-13  Martin Baulig  <martin@ximian.com>
11972
11973         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
11974         determine whether we're inside the debugger.
11975
11976         * debug-debugger.h
11977         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
11978
11979 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11980
11981         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
11982         handler clauses. Fixes #78024.
11983
11984         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
11985         in the CALL_MEMBASE opcodes. Fixes #78088.
11986         (mono_arch_get_vcall_slot_addr): Ditto.
11987
11988 2006-04-10  Martin Baulig  <martin@ximian.com>
11989
11990         * debug-debugger.c: The thread handling code has now been moved
11991         into ../metadata/threads.c.
11992
11993 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11994
11995         * driver.c (mono_main): Fix --with-gc=none build.
11996
11997         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
11998         (mono_spillvar_offset_float): Ditto.
11999         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
12000         hreg, not when its !global, since on ia64, there is a third category: stacked
12001         registers.      
12002
12003 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
12004
12005         * mini.c: set MonoInst->klass for load field address and a few other
12006         places.
12007
12008 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12009
12010         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
12011
12012 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
12013
12014         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
12015         the branch opt changes.
12016
12017 2006-04-06  Dick Porter  <dick@ximian.com>
12018
12019         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
12020         
12021         * wapihandles.c (mini_wapi_seminfo): 
12022         * driver.c (mono_main): Add semaphore info option
12023
12024 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12025
12026         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
12027         branch optimization changes. Fixes #78009.
12028
12029 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12030
12031         * mini.c: ignore accessibility of methods in managed->native wrappers.
12032
12033 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
12036         
12037         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
12038
12039 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12040
12041         * mini.c: Modify the branch optimizations to preserve the invariant that
12042         the entries inside the in_bb and out_bb arrays are unique.
12043         (mono_unlink_bblock): Avoid creation of new arrays.
12044
12045 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
12046
12047         * mini.c (mono_unlink_bblock): Fix regression caused by previous
12048         change (#77992).
12049
12050 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
12051
12052         * mini.c (optimize_branches): Remove the "optimizations" in
12053         the cbranch1/cbranch2 -> branch cases which were causing several
12054         problems in the past. Fixes #77986.
12055
12056 2006-03-31  Chris Toshok  <toshok@ximian.com>
12057
12058         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
12059         default optimizations :(
12060
12061 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12062
12063         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
12064         branch.
12065
12066 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
12067
12068         * local-propagation.c: Added comments to structs and removed
12069         "Mono" prefixes from local tree mover types.
12070
12071 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
12072
12073         * Makefile.am (arch_sources): Define this for each architecture so 
12074         libmono_la_SOURCES is defined in one place.
12075
12076 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12077
12078         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
12079         from handles/.
12080
12081 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
12082
12083         * driver.c: print the GC name supplied by configure.
12084
12085 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
12086
12087         * local-propagation.c: Added tree mover, and moved here all the
12088         local propagation code from mini.c
12089         * mini.c: Added support for treeprop, and moved all the local
12090         propagation code to local-propagation.c
12091         * mini.h: Added support for treeprop
12092         * driver.c: Added support for treeprop, enabled consprop, copyprop,
12093         treeprop, inline and deadce by default
12094         * Makefile.am: Added local-propagation.c
12095
12096 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
12097
12098         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
12099
12100 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
12101
12102         * debug-debugger.c: make it compile without the Boehm GC.
12103
12104 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12105
12106         * mini.c: fixed issue with mismatch when an icall is registered
12107         with multiple names but same address.
12108
12109 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12110
12111         * declsec.c, mini-exceptions.c: use write barrier to set reference
12112         fields of managed objects.
12113
12114 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12115
12116         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
12117         (can_access_internals): Fix a warning.
12118
12119         * mini.c (print_method_from_ip): Rename this to 
12120         mono_print_method_from_ip so it gets exported.
12121
12122         * trace.c: Deal with strings inside StringBuilder's containing garbage
12123         and fix memory leaks. Fixes #77848.
12124
12125 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
12128         fixes #77787.
12129
12130 2006-03-16 Neale Ferguson <neale@sinenomine.net>
12131         
12132         * mini-s390.c: Remove OP_X86_TEST_NULL.
12133
12134 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12135
12136         * mini.c: use the correct GetHashCode() for the moving collector.
12137
12138 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
12139
12140         * liveness.c: Regalloc spill cost tuning.
12141
12142 2006-03-15 Neale Ferguson <neale@sinenomine.net>
12143         
12144         * mini-s390x.h: Correct S390_LONG macro.
12145
12146         * mini-s390x.c: Cleanup unused code.
12147
12148 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12149
12150         * jit-icalls.h: New file.
12151
12152         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
12153         icalls and include that instead of including jit-icalls.c.
12154
12155         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
12156         OP_X86 opcodes.
12157
12158 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12159
12160         * mini.c: when checking for member accessibility, also check for
12161         friend assemblies and for explicit interface implementations.
12162
12163 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12166
12167         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12168
12169         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12170         common cases are done first.    
12171
12172         * mini-ops.h: Only define platform specific opcodes on the given platform.
12173
12174         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12175         branch.
12176         
12177 2006-03-14  Martin Baulig  <martin@ximian.com>
12178
12179         Revert Paolo's change from r57348:
12180
12181         * mini.h: don't use gboolean for bitfields.
12182         * mini.c: verifier changes for fields and methods accessibility.
12183
12184 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12185
12186         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12187
12188         * mini-s390x.c: Fix conv_r_un.
12189
12190         * cpu-s390, cpu-s390x.md: Fix lengths.
12191
12192 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12193
12194         * mini.c: nested types have access to all the nesting
12195         levels, not just the enclosing types.
12196
12197 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12198
12199         * mini.c: added a few more verification checks.
12200
12201 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
12202
12203         * liveness.c: Merge optimizations from the linear-il branch.
12204
12205 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12206
12207         * mini-ia64.c (emit_call): Add a comment.
12208
12209         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
12210
12211         * tramp-ia64.c: Fix some warnings.
12212
12213 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12214
12215         * mini.h: don't use gboolean for bitfields.
12216         * mini.c: verifier changes for fields and methods accessibility.
12217
12218 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
12221         lazy icall wrapper changes.
12222
12223         * dominators.c: Replace all the dominator algorithms with faster
12224         ones from the linear-il branch.
12225
12226         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12227         the mempool.
12228
12229         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12230         common cases are done first.
12231
12232         * mini-amd64.c: Fix some warnings.
12233
12234         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12235         from the mempool.
12236
12237         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12238         added code.
12239
12240         * mini.h: Add a missing prototype.
12241
12242 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12243
12244         * mini.c: Compile icall wrappers lazily.
12245
12246         * mini-codegen.c: Use printf instead of g_print since its much faster.
12247
12248         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12249         function.
12250
12251         * mini.c (optimize_branches): Cache the negative result from 
12252         remove_block_if_useless ().
12253
12254         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12255         Also fix some bblock linking issues.
12256
12257         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12258         assembly files.
12259
12260         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12261
12262         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12263         accessed fields first, for better cache behavior.
12264         
12265 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12266
12267         * mini.c: speedup IList<T> array accesses.
12268
12269 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12272         inline_costs counter. Fixes #77190.
12273
12274 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12277         trace messages. Fixes #77706.
12278
12279 2006-03-04  Martin Baulig  <martin@ximian.com>
12280
12281         * tramp-amd64.c, tramp-x86.c
12282         (mono_debugger_create_notification_function): Use
12283         mono_global_codeman_reserve() to allocate a buffer at runtime and
12284         return it.
12285
12286         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12287
12288         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12289         notification function at runtime and then call `initialize' in the
12290         `MONO_DEBUGGER__debugger_info' vtable.
12291
12292 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12293
12294         * iltests.il: Fix a visibility problem.
12295
12296 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12297
12298         * driver.c, mini.c: add hooks for the counters API.
12299
12300 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12301
12302         * driver.c: show disabled options.
12303
12304 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12305
12306         * linear-scan.c: always use cost-driven selection.
12307
12308 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12309
12310         * jit-icalls.c (helper_compile_generic_method): Revert change from
12311         2006-02-24.
12312
12313 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12314
12315         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12316
12317 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12318
12319         * inssel.brg: style fixes, mostly to force the updated monoburg
12320         to run for people using svn.
12321
12322 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12323
12324         * mini.c: match monoburg changes.
12325
12326 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12327
12328         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12329         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12330         declaration in the header file.
12331
12332 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12333
12334         * helpers.c: reduce relocations and mem usage.
12335
12336 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12337
12338         * mini.h, mini-codegen.c: disable logging features if
12339         requested by configure.
12340
12341 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12342
12343         * mini.c: tiny verifier changes.
12344
12345 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12346
12347         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12348         cpu-pentium.md: stack alignment changes for osx/x86,
12349         partially from Geoff Norton <gnorton@customerdna.com>.
12350
12351 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12352
12353         * jit-icalls.c (helper_compile_generic_method): Update to changes
12354         in metadata/class.c.
12355
12356 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12357         
12358         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12359         
12360         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12361         interface calls with large offsets.
12362
12363 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12364
12365         * jit-icalls.c (helper_compile_generic_method): Document the
12366         special-case we depend on so that we can inflate the method twice
12367         with the same context with no bad side-effects.
12368
12369 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12370
12371         * mini-x86.c, mini-amd64.c: fix for case when xen support
12372         is disabled.
12373
12374 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12375
12376         * mini-x86.c, mini-amd64.c: generate code to access tls items
12377         in a faster way for Xen systems.
12378
12379 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12380
12381         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12382         updates and compilation fixes for the OSX/x86 port, mostly from
12383         Geoff Norton <gnorton@customerdna.com>.
12384
12385 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12386
12387         * inssel.brg: faster interface call implementation
12388         to sync with the interface_offsets MonoVTable changes.
12389
12390 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12391
12392         * mini.c: more verification checks.
12393
12394 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12395
12396         * mini.c: added a few more verification checks.
12397
12398 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12399
12400         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12401         facility on the processor and use it if available.
12402
12403 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12404
12405         * driver.c, aot.c, mini.c: throw exception if the IL code is
12406         invalid or unverifiable.
12407
12408 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12409
12410         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12411         m.StructField.
12412
12413 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12416
12417 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12418
12419         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12420         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12421         handling of instantiated generic valuetypes.
12422
12423 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12426         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12427         instead.
12428
12429         * generics.2.cs: Revert the nullable reftypes tests.
12430
12431 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12432
12433         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12434         using __builtin_frame_address (1) as it doesn't work in the presence
12435         of optimizations. Hopefully fixes #77273.
12436
12437         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12438         -> generics.cs change as it doesn't work with some automake versions.
12439
12440 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12441
12442         * mini.c: handle systems that sue a different way to
12443         retrieve the stack address of the current thread.
12444
12445 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12446
12447         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12448         it specially in the makefile.
12449
12450         * generics.2.cs: Add tests for nullable reference types.
12451
12452 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12453
12454         * mini.c: always handle the case when mono_jit_init()
12455         is called in a thread different from the main thread,
12456         confusing libgc (bug #77309).
12457
12458 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12459
12460         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12461
12462 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12463
12464         * mini.c: change optimize_branches () to use a single loop
12465         and introduce a new optimization to simplify some range checks.
12466
12467 2006-02-03  Martin Baulig  <martin@ximian.com>
12468
12469         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12470         and merged with debugger_thread_manager_add_thread().
12471         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12472         inform the debugger about the main thread.
12473
12474 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12475
12476         * basic.cs: Add test for div.un/rem.un constant folding.
12477
12478 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12479
12480         * cpu-s390x.md: correct int_xor_imm length
12481
12482 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * generics.2.cs: New test for #77442.
12485
12486         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12487         #77442.
12488
12489 2006-02-02  Martin Baulig  <martin@ximian.com>
12490
12491         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12492         <mono/metadata/mono-debug-debugger.h>   
12493
12494         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12495
12496 2006-02-02  Martin Baulig  <martin@ximian.com>
12497
12498         * debug-debugger.h: New header file for debug-debugger.c.
12499
12500         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12501         function is a separate thread anymore; add support for attaching.
12502
12503 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12504
12505         * tramp-x86.c: Fix a warning.
12506
12507 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12508
12509         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12510         on very large methods.
12511
12512         * aot.c (load_patch_info): Fix a warning.
12513
12514 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12515
12516         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12517         mini-ops.h: alu membase optimizations.
12518
12519 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12520
12521         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12522         to speedup StringBuilder.
12523
12524 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12525
12526         * dominators.c (mono_compute_natural_loops): Fix detection of
12527         loop body start blocks.
12528
12529         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12530
12531 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12534         #75145.
12535
12536 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12537
12538         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12539
12540 2006-01-25  Martin Baulig  <martin@ximian.com>
12541
12542         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12543         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12544         started to cleanup this file a little bit.
12545
12546 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12547
12548         * mini.c: optimize a codepath frequently happening in generics code.
12549
12550 2006-01-23  Martin Baulig  <martin@ximian.com>
12551
12552         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12553
12554         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12555         functions directly.
12556
12557         * driver.c: debug-debugger.c is only available if
12558         `MONO_DEBUGGER_SUPPORTED' is defined.   
12559
12560 2006-01-23  Martin Baulig  <martin@ximian.com>
12561
12562         * debug-debugger.c: Only enable this on platforms where the Mono
12563         Debugger is working (x86 and x86_64).
12564
12565 2006-01-21  Martin Baulig  <martin@ximian.com>
12566
12567         The Mono Debugger is now using the normal `mono' instead of the
12568         `mono-debugger-mini-wrapper' when executing managed code.
12569
12570         * debug-debugger.c: New file; previously known as
12571         debugger/wrapper/wrapper.c.
12572
12573         * debug-mini.c (mono_init_debugger): Removed.
12574
12575         * driver.c (mono_main): Added new `--inside-mdb' command line
12576         argument which is used when running inside the debugger.
12577
12578 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12579
12580         * liveness.c (mono_analyze_liveness): Remove some unused data
12581         structures.
12582
12583 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12584
12585         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12586
12587 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12588
12589         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12590         depends on implementation details of monobitset.
12591
12592         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12593         Fixes #77271.
12594
12595 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12596
12597         * liveness.c: Update after monobitset changes.
12598
12599 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12600
12601         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12602
12603 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12604
12605         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12606
12607         * mini-s390x.c: Remove warning messages.
12608
12609 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12610
12611         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12612
12613 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12614
12615         * generics.2.cs: Add ldelem/stelem_any test.
12616
12617 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12618
12619         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12620
12621 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12622
12623         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12624         
12625 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12626
12627         * generics.2.cs: Reenable vtype tests.
12628
12629         * inssel-x86.brg: Remove an icorrect valuetype rule.
12630
12631 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12632
12633         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12634         initial support for OP_ABS.
12635
12636 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12637
12638         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12639
12640 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12641
12642         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12643         conversion and implement LADD/LSUB.
12644
12645         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12646         architectures.
12647
12648 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12649
12650         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12651
12652         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12653         architectures.
12654
12655 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12656
12657         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12658         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12659         (stack walk problem).
12660
12661 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12662
12663         * aot.c (mono_aot_load_method): Fix a warning.
12664
12665 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12666
12667         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12668
12669 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12670
12671         * iltests.il: Add test for #77148.
12672
12673         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12674         #77148.
12675
12676 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12677
12678         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12679
12680 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12681
12682         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12683         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12684
12685         * basic-long.cs: Add lconv-to-r4/r8 tests.
12686
12687 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12688
12689         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12690
12691         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12692         here as on other archs.
12693
12694 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12695
12696         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12697
12698 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12699
12700         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12701         
12702         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12703
12704         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12705         instrument_prolog; Add memory_barrier instruction.
12706
12707 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12710
12711 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12714
12715         * aliasing.c inssel.brg: Fix warnings.
12716
12717         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12718         could skip initialization of some parts of memory.
12719
12720         * mini.c mini-ia64.c: Fix warnings.
12721
12722         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12723
12724 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12725
12726         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12727         a crash seen on sparc.
12728
12729         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12730         
12731         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12732
12733 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12734
12735         * mini-ops.h: Add s390_backchain instruction
12736
12737         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12738
12739         * cpu-s390.md: Add s390_backchain instruction
12740
12741         * mini-s390.c: Significant ABI changes
12742
12743         * mini-s390.h: Cater for zero length structures
12744
12745 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12746
12747         * mini-s390.c: ABI fixes
12748
12749         * inssel-s390.brg: Remove debug statements
12750
12751         * cpu-s390.md: Fix length of ATOMIC_xx operations
12752
12753 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12754
12755         * basic-float.cs: Add float<->long conversion tests.
12756
12757 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12758
12759         * mini-s390.c: Fix LOCALLOC processing.
12760
12761         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12762
12763 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * iltests.il: Add tests for some opcodes not covered by the other
12766         tests.
12767
12768 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12769
12770         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12771         register loading for Tail processing; Correct trace output.
12772
12773         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12774
12775         * cpu-s390.md: Correct size of jmp instruction. 
12776
12777 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12778
12779         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12780
12781 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12782
12783         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12784           Bring s390 up to current level.
12785
12786 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12787
12788         * generics.2.cs: Disable the newly added tests as they do not work yet.
12789         
12790         * generics.2.cs: Add valuetype tests.
12791
12792 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12793
12794         * basic-long.cs: Add i4->u8 test.
12795
12796         * objects.cs: Add tests for JIT intrinsic.
12797
12798         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12799         optimizations lost by a mistake.
12800
12801 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * basic-long.cs: Remove a test moved to objects.cs.
12804
12805         * arrays.cs: Add more array tests.
12806
12807 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12808
12809         * arrays.cs: Add new tests for multi-dimensional arrays.
12810
12811 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12812
12813         * Makefile.am (test_sources2): Add generics.2.cs.
12814         (EXTRA_DIST): Add test_sources2.
12815
12816 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12817
12818         Support for boxing and unboxing nullable types as well as the
12819         isinst operation on nullables, per the CLI ammendment.
12820
12821         * inssel.brg (CEE_ISINST): Special case for nullable
12822
12823         * mini.c (handle_unbox_nullable): new method
12824         (handle_box): Special case for nullable types
12825         (mono_method_to_ir): Call handle_unbox_nullable in correct
12826         places.
12827
12828         * generics.2.cs: New test suite
12829
12830         * Makefile.am: Support for regression tests with generics.
12831
12832 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12833
12834         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12835         allocated to registers. Fixes #76800.
12836
12837 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12838
12839         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12840
12841 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12844         of platforms.
12845
12846 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12849         objects.cs.
12850
12851         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12852         
12853         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12854 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12855
12856         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12857         single precision before storing to a single precision location.
12858
12859 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12860
12861         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12862
12863 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12864
12865         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12866         correct files.
12867
12868         * basic.cs: Remove test_0_byte_compares test which was moved to
12869         objects.cs a long time ago.
12870
12871 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
12872
12873         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12874
12875 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
12876
12877         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
12878         handlers are called.
12879
12880         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
12881         throwing code.
12882
12883          * mini-ia64.c: Add support for the throw->branch exception 
12884         optimization.   
12885
12886         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
12887
12888 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12889
12890         * mini.c: Enabled "fastpath" deadce :-)
12891         
12892 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12893
12894         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
12895         alias analysis pass to support it.
12896         * mini.h: Likewise.
12897         * ssa.c: Likewise.
12898         * liveness.c: Likewise (liveness computation can use aliasing
12899         information to be more accurate).
12900         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
12901         moreover made so that "--compile-all" uses the given optimization
12902         flags and not the default ones.
12903         * aliasing.c: Alias analysis (new file).
12904         * aliasing.h: Likewise.
12905         * Makefile.am: added "aliasing.c" and "aliasing.h".
12906         
12907 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12908
12909         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
12910         OP_L opcodes.
12911
12912 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
12915         fp >= end_of_stack exit condition, as it is not needed, and it might
12916         become true for fp eliminated frames.
12917
12918 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12919
12920         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
12921         coded offsets.
12922
12923 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
12924
12925         * mini-arm.c: fixed alignment of doubles/longs to match
12926         the C ABI (bug #76635).
12927
12928 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
12929
12930         * aot.c: fix compilation with --enable-minimal=aot.
12931
12932 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
12933
12934         * mini-arm.c: fixed compatibility with the new
12935         floating point emulator package for compares.
12936
12937 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
12938
12939         * mini.c : reverted sig->pinvoke changes (r51396-51397).
12940
12941 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
12942
12943         * mini-exceptions.c (print_stack_frame): Output to stderr.
12944         (mono_handle_native_sigsegv): Ditto.
12945
12946 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12947
12948         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
12949         OP_LCONV_TO_OVF_I implementation.
12950
12951         * mini-amd64.c: Add support for the throw->branch exception 
12952         optimization.
12953
12954         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
12955         when the catch clause catches a more general exception, i.e. Object.
12956
12957 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
12958
12959         * cpu-ia64.md: Remove unused opcodes.
12960
12961         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
12962         specific defines for architectures defining USE_SIGACTION.
12963
12964         * mini-ia64.c: Fix some warnings.
12965
12966         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
12967         version seemed to skip a frame.
12968
12969 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12970
12971         * mini.c: Clean up the usage of sig->pinvoke flag. Now
12972         only calls which are made to native code use this flag.
12973
12974 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12975
12976         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
12977         varargs methods as well.
12978         
12979         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
12980         which have save_lmf set. Reorganize methods prologs a bit.
12981
12982         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
12983         debugger to the proper place.
12984
12985 2005-10-29  Martin Baulig  <martin@ximian.com>
12986
12987         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
12988         when running inside the debugger until the debugger has support
12989         for it.
12990
12991 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12992
12993         * mini.h: Fix a warning.
12994
12995 2005-10-24  Miguel de Icaza  <miguel@novell.com>
12996
12997         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
12998         we expose publicly, this returns the string.
12999
13000 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
13001
13002         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
13003         with fp elimination.
13004
13005 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13006
13007         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
13008         native stacktrace using the glibc 'backtrace' function if available.
13009
13010 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
13013
13014         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
13015         handle SIGSEGVs received while in native code.
13016
13017         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
13018         code, call mono_handle_native_sigsegv which will abort the runtime
13019         after printing some diagnostics, instead of converting it into a
13020         confusing NullReferenceException.
13021
13022 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13023
13024         * cpu-pentium.md: Remove unused opcodes.
13025
13026 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
13027
13028         * mini-amd64.h (MonoLMF): Add rsp field.
13029
13030         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
13031         the lmf too.
13032
13033 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
13034
13035         * mini-codegen.c (get_register_spilling): Fix some warnings.
13036
13037 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
13038
13039         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
13040         elimination during exception handling. Enable fp elimination by
13041         default.
13042
13043         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
13044         elimination.
13045
13046 2005-10-16  Martin Baulig  <martin@ximian.com>
13047
13048         * mini-exceptions.c
13049         (mono_debugger_run_finally): New public method for the debugger.
13050
13051 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13052
13053         * debug-mini.c (mono_debug_init_method): Fix warning.
13054
13055         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
13056         the 'exname' parameter const to fix some warnings.
13057
13058 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
13059
13060         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
13061         introduced by the previous patch.
13062
13063 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
13064
13065         * basic-float.cs: Add test for precision of float arithmetic.
13066
13067         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
13068         when loading/storing single values from/to memory.
13069
13070         * mini.c (mono_jit_compile_method_with_opt): Create the function
13071         pointers in the correct domain.
13072
13073 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13074
13075         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
13076         introduced by previous patch.
13077         
13078         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
13079         when out_filter_idx is NULL.
13080
13081         * mini-exceptions.c: Don't run filter clauses twice during exception
13082         handling. Fixes #75755.
13083
13084 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13085
13086         * aot.c: Add support for ldflda wrappers.
13087
13088         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
13089         #75902.
13090
13091 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
13092
13093         * mini.c, mini.h: do not consider exception handlers blocks when
13094         setting up interface variables.
13095
13096 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
13097
13098         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
13099
13100 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
13101
13102         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
13103         causes a regression.
13104
13105         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
13106
13107 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
13108
13109         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
13110         of the OP_P definitions.
13111
13112         * TODO: Add a proposal for dealing with the CEE/OP mess.
13113
13114         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
13115         optimizations from the x86 port.
13116
13117         * cpu-amd64.md: Ditto.
13118
13119         * basic.cs basic-long.cs: Add tests.
13120
13121 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
13122
13123         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
13124         Patrik Torstensson's implementation of my exception-handling
13125         optimization idea, when the exception object is not used
13126         (bug #62150).
13127
13128 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
13129
13130         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
13131         of the mul_imm optimizations from the old jit.
13132
13133 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
13134
13135         * mini.c, liveness.c: patch by Patrik Torstensson and
13136         Zoltan Varga to improve performance in methods with
13137         exception clauses.
13138
13139 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13140
13141         * driver.c: Remove 'Globalization' entry from --version.
13142
13143 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
13144
13145         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
13146         there is a profiler interested in JIT events.
13147
13148         * aot.c: Load profile files produced by the AOT profiling module, and
13149         reorder methods based on the profiling info. Add a 'method_order' table
13150         to the AOT file to make mono_aot_find_jit_info work with the reordered
13151         methods.
13152
13153         * mini.h: Bump AOT file version info.
13154
13155 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
13156
13157         * mini-arm.h: work around what looks like a gcc bug when optimizations
13158         are enabled.
13159
13160 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13161
13162         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13163         conditionals.  Use ...
13164         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13165
13166 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13167
13168         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13169         to determine the amount of memory to copy when passing valuetypes.
13170
13171         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13172         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13173
13174 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13175
13176         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13177         information about aot.
13178
13179 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13180
13181         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13182         macros. This will allow a deadlock debugger to easily be plugged
13183         in.
13184
13185 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13186
13187         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13188
13189 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13190
13191         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13192         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13193         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13194         ($(arch_built)) [CROSS_COMPILING]: Error out.
13195
13196 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13197
13198         * aot.c: Add support for the no_special_static flag for classes.
13199
13200 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13201
13202         * Reapply reverted patches.
13203
13204         * *: Revert r50174 as well.
13205
13206         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13207
13208 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13209
13210         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
13211
13212 2005-09-23  Miguel de Icaza  <miguel@novell.com>
13213
13214         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
13215         part of the SIG_HANDLER_SIGNATURE.  
13216
13217 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13218
13219         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
13220         statistics.
13221
13222         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13223         introduced by previous patch.
13224
13225 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13226
13227         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13228         saved registers too.
13229
13230         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13231         upon the information returned by get_call_info ().
13232         
13233         * mini-x86.c (add_float): Fix stack size calculation.
13234         (mono_arch_call_opcode): Rewrite this so it works based up the
13235         information returned by get_call_info ().
13236         (mono_arch_get_this_vret_args): Ditto.
13237
13238 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13239
13240         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13241         in cinfo to determine the registers which need to be used.
13242
13243 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13244
13245         * driver.c (mono_main): Add --server and --desktop flags. 
13246
13247 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13248
13249         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13250         registers as global registers.
13251
13252         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13253         longer needed with the new register allocator.
13254
13255         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13256
13257         * cpu-ia64.md: Remove unused opcodes.
13258         
13259         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13260         
13261 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13262
13263         * cpu-amd64.md: Remove unused opcodes.
13264
13265         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13266         needed with the new register allocator.
13267
13268         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13269         reg-reg moves.
13270
13271 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13272
13273         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13274
13275 2005-09-16  Martin Baulig  <martin@ximian.com>
13276
13277         * exceptions-amd64.c
13278         (throw_exception): Don't call mono_debugger_throw_exception() if
13279         we're a rethrow - see the FIXME in the code.
13280
13281 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13282
13283         * mini.c (mono_init_exceptions): This only works on some architectures.
13284         
13285 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13288         on ia64.
13289
13290         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13291
13292         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13293         now in mini-exceptions.c.
13294
13295 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13296
13297         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13298         now in mini-exceptions.c.
13299
13300 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13301
13302         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13303         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13304
13305         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13306         code into mini-exceptions.c. Add some assertions to it.
13307
13308 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13309
13310         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13311         (<software@solmersa.com>). Fix as errors on windows.
13312
13313 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13314
13315         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13316         method info into the LMF.
13317
13318 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13319         
13320         * mini-ia64.c: Add proper unwind info for method epilogs.
13321
13322         * exceptions-ia64.c: Add some code to help debugging.
13323         
13324         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13325
13326         * mini-exceptions.c: Fix warning.
13327
13328 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13329
13330         * mini.c: Really fix build.
13331
13332         * mini-x86.c mini-amd64.c: Fix build.
13333
13334 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13335
13336         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13337
13338         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13339         some Interlocked methods as intrinsics.
13340
13341         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13342         for Thread methods as well.
13343
13344         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13345
13346         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13347
13348         * mini-ia64.c mini-x86.c mini-amd64.c 
13349         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13350         OP_MEMORY_BARRIER.
13351         
13352         * mini.c (mono_init_exceptions): Fix build breakage.
13353
13354 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13355
13356         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13357         of instructions. Use the new ia64_unw_op macros for emitting unwind
13358         info.
13359
13360         * mini.c (mono_init_exceptions): Initialize exception handling
13361         related trampolines at startup.
13362
13363 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13364
13365         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13366
13367 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13368
13369         * mini.c: Handle type loading errors gracefully during compilation and
13370         throw the appropriate exception.
13371
13372 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13373
13374         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13375         for the mono binary.
13376
13377 2005-09-09  Martin Baulig  <martin@ximian.com>
13378
13379         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13380         the release.
13381
13382 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13383
13384         * mini-arm.h: use emulation for conv.r.un for the release.
13385
13386 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13387
13388         * mini-arm.c, objects.cs: more fixes and tests for them.
13389
13390 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13391
13392         * mini-arm.c: align structures to at least 4 bytes to be able
13393         to keep our current optimized memcpy.
13394
13395 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13396
13397         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13398
13399 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13400
13401         * mini.c: ignore SIGPIPE.
13402
13403 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13404
13405         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13406
13407         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13408
13409 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13410
13411         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13412
13413 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13414
13415         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13416         exception handling support.
13417         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13418         patch by Brian Koropoff <briank@marakicorp.com>).
13419
13420 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13421
13422         * mini.c: revert another 'optimization' which breaks when
13423         items on the eval stack need to be saved at a basic block end
13424         (bug #75940).
13425
13426 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13427
13428         * jit-icalls.c: for arrays, ensure we always provide
13429         lower bounds.
13430
13431 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13432
13433         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13434         
13435         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13436
13437 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13438
13439         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13440         arguments in their original register.
13441
13442 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13445         memset/memcpy.
13446
13447         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13448         when ssapre is enabled.
13449
13450         * inssel-long.brg: Fix bug in previous patch.
13451
13452         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13453         multiplication by a constant.
13454
13455 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13458         icc.
13459
13460         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13461         saving registers.
13462
13463 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13464
13465         * inssel-arm.brg: apply changes tested by Brian Koropoff
13466         <briank@marakicorp.com>.
13467
13468 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13469
13470         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13471         
13472 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13473
13474         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13475         to the same register if dreg is just a base register.
13476         (print_ins): Improve printing of membase opcodes.
13477
13478         * inssel-x86.brg: Add optimized ldind(reg) rules.
13479
13480         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13481
13482 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13483
13484         * mini.c: when running under valgrind, set the stack bottom for
13485         the GC at the actual approximate stack for the app (fixes running
13486         mono with valgrind).
13487
13488 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13489
13490         * mini.c: do no break at the first valuetype to init found
13491         (fixes bug #75791).
13492
13493 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13494
13495         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13496
13497 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13498
13499         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13500
13501 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13502
13503         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13504
13505 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13506
13507         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13508
13509         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13510         code.
13511
13512         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13513         code.
13514
13515         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13516         methods.
13517
13518 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13519
13520         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13521
13522 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13523
13524         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13525         in the tail recursion optimization.
13526
13527         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13528         debug info into the assembly file.
13529
13530         * iltests.il: Add test for filter regions.
13531
13532         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13533         initial stack of filter regions. Fixes #75755.
13534
13535 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13536
13537         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13538         stack requirements.
13539
13540 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13541
13542         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13543         the check for an already compiled method on non-ia64 platforms.
13544         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13545         proper domain.
13546
13547         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13548
13549         * inssel-x86.brg: Add some optimized call rules.
13550
13551 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13552
13553         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13554         method here.
13555
13556         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13557         mono_arch_patch_delegate_trampoline.
13558
13559         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13560
13561         * mini-trampolines.c: Fix build.
13562
13563         * mini-amd64.h: Add delegate trampolines.
13564
13565         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13566
13567         * inssel-amd64.brg: Add optimized call rules.
13568         
13569         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13570
13571         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13572
13573 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13574
13575         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13576         change.
13577
13578         * mini-ia64.c: Remove LMF fixmes.
13579
13580         * mini-ia64.h: Remove most fields from LMF.
13581
13582         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13583
13584         * mini-trampolines.c: Add support for IA64 function descriptors.
13585
13586         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13587         for IA64 function descriptors.
13588
13589 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13590
13591         * tramp-arm.c: patch the vtable for virtual calls. Added
13592         support code to register/unregister the LMF.
13593         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13594         more LMF work.
13595
13596 2005-08-19  Dick Porter  <dick@ximian.com>
13597
13598         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13599         bit value if needed.
13600
13601 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13602
13603         * mini.c (mini_get_method): Move handling of wrapper data here.
13604
13605         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13606
13607         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13608         virtual.
13609
13610         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13611         bblock->code does not remain empty.
13612
13613 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13614
13615         * arrays.cs: Add regression test for #75832.
13616
13617         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13618         rules. Fixes #75832.
13619
13620         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13621         instruction scheduling.
13622
13623 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13624
13625         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13626
13627 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13628
13629         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13630
13631         * mini-codegen.c: Fix VC build.
13632
13633         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13634
13635 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13636
13637         * mini.h: fix signature for mono_register_opcode_emulation.
13638
13639 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13640
13641         * mini.c: Get rid of most of the helper_sig_... constants using
13642         mono_create_icall_signature ().
13643
13644 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13645
13646         * jit-icalls.c (helper_ldstr): New helper function.
13647
13648         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13649
13650         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13651         throw, load the string using a helper call instead of creating a string object.
13652
13653         * aot.c: Update after LDSTR changes.
13654
13655         * mini.h: Bump AOT file version.
13656         
13657         * aot.c: Save class size info into the AOT file. Print more statistics during
13658         compilation.
13659
13660         * mini.h: Bump AOT file version.
13661
13662         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13663         ordering of disasm cases. Fixes #74957.
13664
13665 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13666
13667         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13668         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13669         the generic code needed for the ARM port.
13670
13671 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13672
13673         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13674         inssel-arm.brg: more ARM features and fixes.
13675
13676 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13677
13678         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13679         ARM port work in progress.
13680
13681 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13682
13683         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13684
13685         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13686
13687         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13688
13689         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13690
13691         * *-ia64.*: Ongoing IA64 work.
13692         
13693         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13694
13695 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13696
13697         * TODO: Remove out-of-data todo stuff.
13698
13699         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13700         dead code.
13701
13702         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13703
13704         * mini.h: Bump corlib version.
13705
13706 2005-07-27  Martin Baulig  <martin@ximian.com>
13707
13708         * mini-codegen.c
13709         (create_copy_ins): Added `const unsigned char *ip' argument; set
13710         `copy->cil_code' from it.
13711
13712 2005-07-27  Martin Baulig  <martin@ximian.com>
13713
13714         * mini-exceptions.c (mono_handle_exception): Don't call
13715         mono_debugger_handle_exception() for filters.
13716
13717 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13718
13719         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13720         as well.
13721
13722 2005-07-26  Martin Baulig  <martin@ximian.com>
13723
13724         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13725
13726         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13727         helper_compile_generic_method() if the method is actually virtual
13728         and non-final.
13729
13730 2005-07-26  Martin Baulig  <martin@ximian.com>
13731
13732         * mini.c
13733         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13734         public; this is now accessed directly by the debugger.
13735         (mono_generic_trampoline_code): Removed.
13736
13737         * debug-mini.c
13738         (mono_debug_init_method): Also add interncalls and wrappers.
13739
13740 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13741
13742         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13743
13744 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13745
13746         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13747
13748 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13749
13750         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13751
13752 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13753
13754         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13755         getting TLS offsets on AMD64 too.
13756
13757 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
13758
13759         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13760
13761 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13762
13763         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13764         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13765
13766 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13767
13768         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13769
13770         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13771         to mini.c.
13772
13773         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13774         mono_sparc_is_virtual_call ().
13775         
13776         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13777
13778         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13779         trampoline parameters.
13780
13781         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13782         
13783         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13784         to mono_arch_get_vcall_slot_addr.
13785
13786         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13787         trampoline code.
13788
13789         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13790
13791 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13792
13793         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13794
13795 2005-07-19  Martin Baulig  <martin@ximian.com>
13796
13797         * exceptions-amd64.c (throw_exception): Call
13798         mono_debugger_throw_exception() here like we're doing it on i386.
13799
13800 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13801
13802         * mini-ia64.c: Add optimized TLS access support.
13803
13804 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13805
13806         * mini-exceptions.c: Ongoing IA64 work.
13807
13808         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13809
13810         * mini.c: Use the default optimization set when embedding. Fixes
13811         #75194.
13812
13813 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13814
13815         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13816         of trampolines to a separate file.
13817
13818         * mini-trampolines.c: New file.
13819
13820         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13821         separate file.
13822         
13823         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13824         amd64/ia64 code.
13825
13826         * mini-codegen.c: Fix cygwin build.
13827
13828 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13829
13830         * mini.c: Add some minor changes needed by the IA64 port.
13831
13832         * *-ia64.*: Ongoing IA64 work.
13833
13834 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13835
13836         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13837         trampolines into arch-independent and arch-dependent parts.
13838
13839         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13840
13841 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13842
13843         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13844
13845         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13846         the xp-regalloc-branch for amd64.
13847
13848         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13849         xp-regalloc-branch for x86.
13850
13851 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13852
13853         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13854
13855 2005-07-06  Martin Baulig  <martin@ximian.com>
13856
13857         * mini.c
13858         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13859         (mono_jit_runtime_invoke): Likewise.
13860
13861 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13862
13863         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13864         on x86 too.
13865         
13866         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13867         without loading their metadata. Reorganize the file format so exception handling+
13868         debug info is kept separate from normal method info. Create MonoJitInfo 
13869         structures for methods lazily.
13870
13871         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
13872         loading metadata.
13873         (x86_class_init_trampoline): Patch AOT class init trampolines too.
13874
13875         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
13876
13877         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
13878         in AOT code.
13879
13880         * mini.h: Bump AOT file version.
13881
13882 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
13883
13884         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13885
13886 2005-07-01  Raja R Harinath  <rharinath@novell.com>
13887
13888         * Makefile.am (check-local): Call semdel-wrapper.
13889
13890 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
13891
13892         * mini-x86.c: Revert the last change as it seems to break the build..
13893
13894 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13895
13896         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13897         
13898         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
13899
13900 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
13901
13902         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
13903         outside of the macro, so strange stuff doesn't happen with gcc4
13904         (NEW_AOTCONST_TOKEN): Likewise.
13905
13906 2005-06-28  Martin Baulig  <martin@ximian.com>
13907
13908         * mini.c (mini_class_is_system_array): New static method; use this
13909         instead of `klass->parent == mono_defaults.array_class' everywhere
13910         since this also works for the new generic array class.
13911
13912 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13913
13914         * inssel.brg: Remove warnings.
13915
13916 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
13917
13918         * mini-ia64.c: Ongoing IA64 work.
13919
13920         * basic-float.cs: Add float->i1 conversion test.
13921
13922         * iltests.il: Add conv.u4 test.
13923
13924 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
13925
13926         * inssel-long.brg: Fix bug caused by last change.
13927
13928 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
13929
13930         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
13931         BSDs.  Allows the x86 JIT to work on OSX86
13932
13933 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
13934
13935         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
13936         u4->i8 conversion.
13937
13938         * mini-ia64.c: Ongoing IA64 work.
13939
13940 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13941
13942         * mini-ia64.c: Ongoing IA64 work.
13943
13944         * driver.c: Clean up jit_code_hash as well when using --regression.
13945
13946         * inssel-long.brg: Fix long->i4/u4 conversion rules.
13947
13948         * basic-long.cs: Add tests for long->u4 conversion.
13949
13950 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
13951
13952         * mini.c: Take mono_get_domainvar out of macros. This makes sure
13953         that we do not depend on undefined C behavior: the order stuff
13954         gets evaluated within an expression. Fixes mono when compiled on
13955         GCC 4.
13956
13957 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
13958
13959         * *-ia64.*: Ongoing IA64 work.
13960
13961         * aot.c: Lower memory usage while loading AOT methods.
13962
13963         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
13964
13965         * mini.h: Bump AOT file format version.
13966
13967 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13968
13969         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
13970
13971 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
13972
13973         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
13974         not on callee assembly). Fixed some comments.
13975
13976 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
13977
13978         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
13979         it gets proper disassembly.
13980         (emit_method_info): Remove some dead code.
13981
13982         * mini.c (mini_method_compile): Allways allocate the GOT var in
13983         mono_method_to_ir for emulating opcodes.
13984
13985 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
13986
13987         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
13988         before freeing the code memory. Fixes #74990.
13989
13990         * objects.cs: Add regression test for #74992.
13991
13992         * liveness.c: Extend live ranges of arguments to the beginning of the
13993         method. Fixes #74992.
13994
13995         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
13996         so it points into the faulting instruction.
13997
13998 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
13999
14000         * jit-icalls.c (mono_imul_ovf): Add exception handling.
14001
14002         * *-ia64.*: Ongoing IA64 work.
14003
14004         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
14005
14006 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
14007
14008         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
14009
14010         * *-ia64.*: Ongoing IA64 work.
14011
14012 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
14013
14014         * basic-long.cs: Add tests for add/sub.ovf.
14015
14016         * basic.cs: Add tests for sub.ovf.
14017
14018         * *-ia64.*: Ongoing IA64 work.
14019
14020 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
14021
14022         * *-ia64.*: Ongoing IA64 work.
14023
14024         * basic.cs: Add conv.ovf.i4.un test.
14025
14026 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
14027
14028         * mini.c: (remove_block_if_useless) Fixed bug 75061.
14029         
14030 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14031
14032         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
14033
14034 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14035
14036         * *-ia64.*: Ongoing IA64 work.
14037
14038 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14039
14040         * trace.[ch]:
14041         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
14042
14043 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
14044
14045         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
14046
14047 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
14048
14049         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
14050
14051         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
14052         of a call is callable by a near call.
14053
14054 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
14055
14056         * mini-ia64.c: Ongoing IA64 work.
14057
14058 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
14059
14060         * genmdesc.c: Make the generated array non-static.
14061
14062         * inssel-long.brg: Fix LSHR_IMM rule.
14063
14064         * *-ia64.*: Ongoing IA64 work.
14065
14066         * *-ia64.*: Ongoing IA64 work.
14067
14068 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14069
14070         * *-ia64.*: Ongoing IA64 work.
14071
14072         * *-ia64.*: Ongoing IA64 work.
14073         
14074         * mini-ia64.c: Ongoing IA64 work.
14075
14076         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
14077
14078 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14079
14080         * objects.cs basic-calls.cs: Move some tests to objects.cs.
14081         
14082         * objects.cs basic-long.cs: Move some tests to objects.cs.
14083
14084 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
14085
14086         * *-ia64.*: Ongoing IA64 work.
14087
14088         * iltests.il: Add a new test.
14089
14090         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
14091         newobj. Fixes #75042.
14092
14093 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
14094
14095         * *-ia64.*: Ongoing IA64 work.
14096         
14097         * *-ia64.*: Ongoing IA64 work.
14098         
14099         * *-ia64.*: Ongoing IA64 work.
14100
14101         * basic.cs objects.cs: Move tests accessing static variables as well.
14102
14103         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
14104
14105 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
14106
14107         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
14108
14109         * driver.c: Always print failed tests.
14110
14111         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
14112         frame pointer.
14113
14114         * *ia64*: Ongoing IA64 work.
14115
14116 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
14117
14118         * basic.cs: Add tests for add.ovf. Fix warnings.
14119
14120 2005-05-18  Miguel de Icaza  <miguel@novell.com>
14121
14122         * driver.c (mono_main): Avoid crash if no argument is passed to
14123         --break;  Do not use g_error, but f_printf.   And fix all other
14124         ocurrences of the same crash.
14125
14126 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
14127
14128         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
14129         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
14130         Fixes #74742.
14131
14132 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
14133
14134         * *-ia64.*: Add beginnings of IA64 backend.
14135
14136         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
14137
14138 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
14139
14140         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
14141         Fixes #74925.
14142
14143         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
14144
14145         * mini-amd64.c: Fix a warning.
14146
14147 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
14148
14149         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
14150         in float_neg. Fixes #74897.
14151
14152         * mini-amd64.c (emit_call): Fix another near call bug.
14153
14154 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
14155
14156         * declsec.c: Keep the appdomain information in the structure. Added a 
14157         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14158         value gets overwritten).
14159         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14160         an MonoAppDomain member to MonoSecurityFrame.
14161         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14162         used in the stack walk. Now use a MonoArray which grow (double) when
14163         it gets full.
14164
14165 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14166
14167         * mini.c: Re-enabled runtime cleanup, since running threads should
14168         now properly stop when exiting.
14169
14170 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14171
14172         * mini-codegen.c: New file contaning the arch-independent local
14173         register allocator. Not used by any architectures yet.
14174
14175         * mini.h linear-scan.c: Merge some changes from the 
14176         mini-xp-local-regalloc branch.
14177
14178 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14179
14180         * mini-amd64.c (emit_call): Fix calls to native functions when the
14181         runtime is compiled as a shared library. Fixes #74756.
14182
14183         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14184         on a literal field. Fixes #74751.
14185
14186 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14187
14188         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14189
14190 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14191
14192         * objects.cs: Add missing null casting test.
14193
14194 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14195
14196         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14197         in wrapper methods. Also rename 'address' variable to 'offset'.
14198
14199 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14200
14201         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
14202         warnings.
14203         
14204         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14205
14206         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14207         work on windows.
14208
14209 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14210
14211         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
14212
14213 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14214
14215         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
14216         just the last bytes.
14217
14218 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14219
14220         * aot.c (mono_compile_assembly): Fix warning.
14221
14222         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14223         by the _MSC_VER stuff.
14224
14225 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14226
14227         * inssel-long.brg: Fix #74588.
14228
14229         * cpu-amd64.md: Fix #74591.
14230
14231         * iltests.il: Add new regression tests.
14232
14233 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14234
14235         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14236         valuetype.
14237
14238 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14239
14240         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14241
14242         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14243         from Bill Middleton <flashdict@gmail.com>.
14244
14245 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14246
14247         * arrays.cs: Add new regression test. Fix warnings.
14248
14249 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14250
14251         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14252         and leakage in CKFINITE.
14253
14254         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14255         this to a null op since it is called on amd64 too.
14256
14257         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14258
14259         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14260         body since this is not used on amd64.
14261         
14262         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14263
14264         * mini-amd64.c: Remove obsolete fixmes.
14265
14266         * mini.c (print_method_from_ip): Fix debugging support.
14267
14268 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14269
14270         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14271         so that expressions that don't give much gain are not reduced.
14272         * ssapre.h: Likewise.
14273
14274 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14275
14276         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14277
14278         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14279
14280         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14281
14282 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14283
14284         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14285
14286         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14287
14288 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14289
14290         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14291         stack touching.
14292
14293         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14294
14295         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14296
14297         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14298
14299         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14300         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14301
14302         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14303
14304         * mini-x86.c: Fix up stack overflow handling.   
14305
14306         * exceptions.cs: Add new regression test.
14307
14308 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14309
14310         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14311         mono_jit_thread_attach.
14312
14313         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14314
14315 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14316
14317         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14318         avoid calling constructors using callvirt.
14319
14320         * inssel.brg: Fix #74073.
14321
14322 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14323
14324         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14325         compilation with non-GCC compilers.
14326         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14327         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14328
14329 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14330
14331         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14332         klass->interface_offsets (will likely fix bug#74073).
14333
14334 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14335
14336         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14337
14338 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14339
14340         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14341         to amd64_div_reg_size ().
14342         
14343         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14344
14345 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14346
14347         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14348
14349 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14350
14351         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14352
14353 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14354
14355         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14356         
14357         * mini.c (mono_precompile_assembly): Load and precompile referenced
14358         assemblies as well. Fixes #74015.
14359
14360 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14361
14362         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14363
14364 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14365
14366         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14367         a lot of checks and (anyway) permissions cannot work until corlib is 
14368         loaded.
14369
14370 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14371
14372         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14373
14374 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14375
14376         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14377         calls (fixes bug#72824).
14378
14379 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14380
14381         * mini.c: fix tail recursion elimination (see test in bug#73936).
14382
14383 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14384
14385         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14386         some fp functions in sse2 mode.
14387
14388 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14389
14390         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14391
14392 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14393
14394         * mini.h mini.c: Add mono_get_jit_tls_key ().
14395
14396         * mini-x86.c: Enable fast TLS support on windows.
14397
14398 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14399
14400         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14401         * mini.c: Check for p/invoke method when generating code. If a
14402         p/invoke method, or it's class, isn't decorated with [Suppress
14403         UnmanagedCodeSecurity] then generate code to call System.Security.
14404         UnmanagedDemand (only if the security manager is active).
14405
14406 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14407
14408         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14409         last change as it seems to cause strange crashes.
14410         
14411 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14412
14413         * *.c: handle unsafe function pointers where needed.
14414
14415 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14416
14417         * mini.c (mono_jit_free_method): Remove the fixme too.
14418
14419 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14420
14421         * mini.c: As discussed, make the code actually free the delegate
14422         thunk now, to enable the debugging of delegate problems, use
14423         MONO_DEBUG=1 when running Mono. 
14424
14425         This takes also care of parts of the leaks as seen by Joe.
14426
14427 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14428
14429         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14430         thread_tls_offset calculation.
14431
14432 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14433
14434         * declsec.c: Reworked linkdemand checks for icall. The previous code
14435         was using the declaration code (untrusted) and didn't work as expected
14436         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14437         specific case.
14438
14439 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14440
14441         * iltests.il: Add new localloc test.
14442
14443         * mini-amd64.c: Handle large stack allocations the same way as on
14444         windows if stack overflow handling is working.
14445         
14446         * mini-amd64.c: Allocate the signal stack using mmap.
14447
14448         * mini.c (sigsegv_signal_handler): Fix reading of context.
14449
14450         * mini-exceptions.c: Fix up stack overflow handling.
14451
14452         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14453
14454         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14455
14456         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14457
14458         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14459
14460         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14461         tramp_init functions as they are no longer needed.
14462
14463 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14464
14465         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14466         
14467         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14468
14469         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14470         
14471         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14472         support that now.
14473
14474         * mini-ops.h: Add OP_LMUL_IMM.
14475
14476         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14477         long mul/div opcodes as intrinsic.
14478
14479         * mini-amd64.c (emit_call): Handle the case when the callee might be
14480         an AOT method.
14481
14482 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14483
14484         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14485         extra safe.
14486         
14487         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14488
14489         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14490
14491 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14492
14493         * mini.c (mono_codegen): Don't leak here, to help people running
14494         monogrind.
14495
14496 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14497
14498         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14499         conversions in sse2 mode.
14500
14501         * basic-float.cs: Add regression test.
14502         
14503         * mini-amd64.c: Reenable sse2.
14504
14505 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14506
14507         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14508
14509 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14510
14511         * driver.c: Copyright text should include 2005.
14512         
14513 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14514
14515         * cpu-amd64.md (load_membase): Fix more max lengths.
14516
14517 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14518
14519         * cpu-amd64.md (load_membase): Fix max length.
14520
14521         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14522
14523         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14524
14525         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14526         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14527
14528         * basic-float.cs: Add rounding regression test.
14529
14530         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14531
14532 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14533
14534         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14535         structures in registers for pinvoke wrappers.
14536
14537 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14538
14539         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14540
14541 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14542
14543         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14544         wrapper to mono_jit_thread_attach.
14545
14546         * mini.c (mini_jit_thread_attach): New jit icall.
14547
14548         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14549         native->managed wrappers.
14550
14551         * exceptions.cs: Add new regression test.
14552
14553         * mini.c (optimize_branches): Check regions in the cbranch to throw
14554         block case as well. Fixes #73242.
14555
14556 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14557
14558         * mini.c: thread safety fixes.
14559
14560 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14561
14562         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14563         patching stuff, since delegates use jump trampolines so there is
14564         no caller.
14565
14566         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14567         jump trampolines.
14568         
14569         * tramp-amd64.c: Fix build.
14570
14571         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14572         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14573
14574         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14575         Rename this to mono_arch....
14576         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14577
14578         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14579
14580         * mini-amd64.c (emit_call): If both the caller and the callee is
14581         guaranteed to have 32 bit addresses, emit a normal call.
14582
14583         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14584
14585         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14586         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14587         method_ptr inside delegates.
14588
14589 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14590
14591         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14592         invalidated. Fixes #73001.
14593
14594         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14595
14596         * mini-x86.c: Only use stdcall for pinvokes on windows.
14597
14598 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14601         * mini-x86.c: remove unreliable __thread var offset detection,
14602         use the correct accessors and enable by default.
14603
14604 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14605
14606         * mini.c (mono_jit_free_method): Fix memory leak.
14607
14608 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14609
14610         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14611
14612 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14613
14614         * cpu-amd64.md: Fix lengths of atomic opcodes.
14615
14616 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14617
14618         * driver.c: try to not imply using ICU is any good.
14619
14620 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14621
14622         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14623         functions as inline ops.
14624
14625         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14626         some Interlocked functions as inline ops.
14627
14628         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14629
14630         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14631
14632         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14633
14634         * mini.c: Add support for OP_NOT_TAKEN.
14635
14636         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14637         structures in registers for pinvoke wrappers.
14638
14639         * mini-amd64.c: Fix warnings.
14640
14641 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14642
14643         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14644
14645         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14646
14647         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14648         address instead of loading the address from it.
14649
14650         * mini-x86.c: Add support for returning small structs in registers
14651         on Win32. Fixes part of #70864.
14652         
14653 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14654
14655         * trace.c (get_token): Improve error checking.
14656
14657 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14658
14659         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14660
14661 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14662  
14663         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14664         it can be reused for MonoClass.
14665         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14666         _LINKDEMAND.
14667
14668 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14669
14670         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14671         instead of a MonoReflectionMethod. The method information wasn't used
14672         when displaying SecurityException details (but will be now).
14673
14674 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14675
14676         * Makefile.am : windows build fix.
14677
14678 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14679
14680         * iltests.il: Add new regression test.
14681
14682         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14683         #72522.
14684
14685 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14686  
14687         * mini.c: Moved linkdemand check into helper function check_linkdemand
14688         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14689         LDFTN, LDVIRTFTN).
14690
14691 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14692
14693         * declsec.c: Added statistics counter for different kinds of 
14694         LinkDemands.
14695         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14696         (and commented) declaration.
14697         * mini.c: Added statistics counter for security Demand code 
14698         generation. Added display of security statistics.
14699
14700 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14701
14702         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14703         Fix compilation errors under gcc-2.95.
14704
14705 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14706
14707         * mini.c, driver.c: Use the new jit trampoline hashtable
14708
14709 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14710
14711         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14712
14713 2005-02-11  Martin Baulig  <martin@ximian.com>
14714
14715         * debug-mini.c (mono_debug_close_method): Free the line number array.
14716
14717 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14718
14719         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14720         icalls.
14721
14722         * mini.h: Bump AOT file format version. 
14723
14724 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14725
14726         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14727         APTC and P/Invoke.
14728         * declsec.h: Added macros to get/set lazyly initialized security 
14729         informations about assemblies. Added new enum for different type of
14730         possible LinkDemand violation. Added function to check LinkDemands.
14731         * mini.h: Added a field to MonoCompile to hold any security violation
14732         detected when JITting a method (so it can be thrown later).
14733         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14734         and CEE_CALLVIRT. Added code to throw exception at the end of
14735         mini_method_compile (note: the exception is unhandled right now).
14736
14737 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14738
14739         * mini.c, jit-icalls.c: use the managed implementation of
14740         memset for initobj and memset, to avoid managed <-> unmanaged
14741         transitions.
14742
14743 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14744
14745         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14746         optimization if it would need a GOT var.
14747
14748         * basic.cs: Add tests for constant propagation and switch statements.
14749
14750         * ssa.c: Fix out-of-range constant propagation and switch statements.
14751
14752 2005-02-09    <vargaz@freemail.hu>
14753
14754         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14755
14756 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14757
14758         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14759
14760 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14761
14762         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14763
14764 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14765
14766         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14767         arithmetic operations.
14768
14769 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14770
14771         * mini-ppc.c: add a workaround for broken user code that
14772         DllImports vararg functions with non-vararg signatures.
14773
14774 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14775
14776         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14777         meaningfull error message for assemblies written in Managed C++.
14778
14779         * tramp-amd64.c mini-amd64.h: Add support for 
14780         create_trampoline_from_token ().
14781
14782         * aot.c mini-x86.c abcremoval.c: Applied patch from
14783         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14784
14785 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14786
14787         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14788         which takes a MonoImage/token as parameter instead of a MonoMethod.
14789
14790         * aot.c: Use the new trampoline for initializing vtables.
14791
14792         * aot.c: Add support for ldfld/stfld_remote wrappers.
14793
14794         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14795         rules for compare <MEM>, IMM.
14796
14797         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14798
14799         * aot.c: Handle inherited finalizers correctly.
14800
14801 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14802
14803         * inssel.brg (stmt): Add a missing _setup_... ().
14804
14805         * aot.c: Save some parts of the class state to the AOT file and use it
14806         to recompute that state when a class is initialized.
14807
14808         * mini.c: Install AOT hooks into the runtime.
14809
14810         * mini.h: Bump AOT file format version.
14811         
14812         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14813         Fixes #72148.
14814
14815         * iltests.il: Add new test.
14816
14817 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14818
14819         * mini.c: fix typo.
14820
14821 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14822
14823         * mini.c: setup the statistical profiler in the thread attach
14824         callback to cope with the new single thread code.
14825
14826 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14827
14828         * mini-ppc.c: ensure we have enough room for the profiler
14829         calls (fixed bug#72084).
14830
14831 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14832
14833         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14834         it.
14835
14836 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14837
14838         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14839
14840 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14841
14842         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14843         to succesfully execute parrotbench).
14844         * ssapre.h: Likewise.
14845
14846 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14847
14848         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14849         variable for stores to method arguments (fixes a SSAPRE issue).
14850
14851 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14852
14853         * mini.c: handle value types in dup, fixes gen-112.cs.
14854
14855 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14856
14857         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14858         sequence for calls in dynamic methods to avoid thunks.
14859
14860 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14861
14862         * mini.c: correctly remove dynamic methods from the hashtable.
14863
14864 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14865
14866         * driver.c: Disabled SSAPRE until fix the bug that appears
14867         in IronPython's parrotbench.
14868
14869 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14870
14871         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
14872
14873         * mini.c (mono_method_to_ir): Revert the previous change.
14874         
14875         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
14876         when AOT compiling.
14877
14878         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
14879         mono_jit_info_table_find () etc. when running under valgrind.
14880
14881         * inssel.brg: Fix warnings.
14882
14883         * mini-exceptions.c: Fix warnings.
14884
14885 2005-01-31  Martin Baulig  <martin@ximian.com>
14886
14887         * driver.c (compile_all_methods_thread_main): Don't try to compile
14888         generic methods or anything which has type parameters.
14889
14890 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14891
14892         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
14893
14894         * TestDriver.cs: Add --verbose flags.
14895
14896         * graph.c ssa.c: Fix 64 bit warnings.
14897         
14898         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
14899         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
14900         Fix 64 bit warnings.
14901
14902         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
14903         variable not spotted by gcc.
14904         
14905         * mini-amd64.c inssel-amd64.brg: Applied patch from  
14906         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
14907         X86_COMPARE_MEMBASE opcodes.
14908
14909         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
14910
14911 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14912
14913         * *: MonoMethod->signature might be NULL now. You *MUST* use
14914         mono_method_signature.
14915
14916 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14917
14918         * driver.c (compile_all_methods_thread_main): Compile the methods
14919         without invoking cctors.
14920
14921 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14922
14923         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
14924         * basic-calls.cs: test for the above.
14925
14926 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14927
14928         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
14929         MonoJitInfo changes.
14930
14931 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
14932
14933         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
14934         eagerly if it contains dynamic methods.
14935         
14936         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
14937
14938         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
14939         trace, it is now computed by an icall from trace_ips.
14940         
14941         * mini-exceptions.c: Fix a warning.
14942
14943 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14944
14945         * mini-exceptions.c: don't bother getting stack trace info if
14946         it's not going to be used.
14947
14948 2005-01-27  Raja R Harinath  <rharinath@novell.com>
14949
14950         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
14951         ssapre-mini-ops.h.
14952
14953 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
14954
14955         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
14956
14957         * aot.c: Avoid calling mono_method_get_header () if not needed.
14958
14959         * mini.h: Bump AOT file format version.
14960         
14961         * mini.c (mono_emit_native_call): Allocate a GOT var here.
14962
14963         * mini.c (mono_print_tree): Print more info for calls.
14964
14965 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14966
14967         * declsec.h: Remove warning by adding missing include for marshal.h
14968
14969 2005-01-26  Martin Baulig  <martin@ximian.com>
14970
14971         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
14972         `ip' twice.
14973
14974 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
14975
14976         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
14977         flags.
14978
14979         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
14980
14981         * aot.c (mono_compile_assembly): Fix a warning.
14982
14983 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14984
14985         * declsec.c: Look for security attributes on the original MonoMethod 
14986         (and not the wrapped one). This fix permissions on icalls.
14987
14988 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14989
14990         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14991
14992         * mini.c (mono_allocate_stack_slots): Add a fixme.
14993
14994         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14995
14996 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14997
14998         * inssel.brg: optimize casts of sealed types (more
14999         optimizations waiting for fixes in remoting).
15000
15001 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15002
15003         * inssel.brg (stmt): Add another dummy rule.
15004
15005         * driver.c: Fix warnings.
15006
15007         * driver.c (mono_main): If running under valgrind, instruct glib to use
15008         the system allocation functions so valgrind can track the memory
15009         allocated by the g_... functions.
15010
15011         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
15012
15013         * mini-ops.h: Add OP_DUMMY_STORE opcode.
15014
15015         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
15016
15017         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
15018         variables in try regions.
15019
15020         * mini.c (mini_method_compile): Don't disable optimizations on large
15021         methods when AOT compiling.
15022
15023         * mini.c (mono_allocate_stack_slots): New arch independent method to 
15024         allocate stack slots. Not yet used.
15025
15026 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15027
15028         * debug-mini.c (mono_debug_close_method): Plug some leaks.
15029
15030 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
15031
15032         * mini-ppc.c: make the branch info relative as the code
15033         buffer can be reallocated.
15034
15035 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15036
15037         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
15038         * driver.c: Removed the AOT/security restriction. Now initialize the
15039         security manager (in metadata) if --security is used.
15040         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
15041         rather than the pointer to declarative security, when AOT is used.
15042
15043 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
15044
15045         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
15046         basic blocks, reduced intrinsic exception throwing code size.
15047
15048 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
15049
15050         * driver.c (mini_usage): Reorder the usage screen.
15051
15052 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
15053
15054         * mini.c (mono_resolve_patch_target): Fix warning.
15055
15056 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
15057
15058         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
15059         previous patch.
15060
15061         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15062
15063         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
15064         breaks the amd64 build.
15065
15066         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
15067         register allocation. Fixes #71454.
15068
15069         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15070
15071         * arrays.cs: Add new regression test.   
15072
15073 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15074
15075         * ssapre.c: Turned usage of snprintf to GString.
15076         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
15077         (I left it on by mistake in my previous commit).
15078
15079 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
15080
15081         * mini.c, cfold.c, basic-calls.cs: preserve side effects
15082         on cond branch optimization (fixes bug# 71515).
15083
15084 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15085
15086         * abcremoval.c: Fixed bug 71062.
15087         * abcremoval.h: Likewise.
15088
15089 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15090
15091         * mini.c: Added a new functionality to optimize_branches, the removal
15092         of useless basic blocks, and fixed some problem in the removal of
15093         critical edges; some utility functions added for both purposes.
15094         * ssapre.c: Added complex expression support, and fixed bug 70637.
15095         * ssapre.h: Likewise.
15096         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
15097         enabled in SSAPRE.
15098         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
15099         * driver.c: Re-enabled SSAPRE.
15100
15101 2005-01-19  Martin Baulig  <martin@ximian.com>
15102
15103         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
15104         the result of mono_get_method_constrained().
15105
15106 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
15107
15108         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
15109         manager.
15110
15111 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
15112
15113         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
15114         be detected.  Fixes #59296.
15115
15116 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15117
15118         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
15119         which can happen. Fixes #71361.
15120
15121 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15122
15123         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
15124         manager.
15125
15126 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15127
15128         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
15129         appdomain-unload.exe to fail.
15130         
15131         * mini.c: Fix some memory leaks.
15132
15133 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
15134
15135         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
15136         Fixed bug and sped up some codepaths.
15137
15138 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15139
15140         * mini.c: Fix some memory leaks.
15141
15142         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
15143         conversion.
15144
15145         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
15146
15147         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
15148         #71320.
15149
15150         * iltests.il: Add regression test for #71320.
15151
15152 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15153
15154         * mini.c (mono_codegen): Fix installation of profiler hooks.
15155
15156         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15157
15158 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15159
15160         * mini.h, mini.c, cfold.c: optimize access to enum
15161         readonly fields, too. Eval conditional branches if possible
15162         to perform unreachable code removal in more cases.
15163
15164 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15165
15166         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15167
15168         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15169         code manager.
15170
15171         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15172         WinXP DEP. Fixes #71244.
15173
15174 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15175
15176         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15177
15178 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15179
15180         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15181
15182 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15183
15184         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15185         changes.
15186
15187         * mini.h: Bump AOT version.
15188
15189         * mini.h (MonoCompile): Change exvar to a hash table.
15190
15191         * mini.c: Allocate a separate exvar for each handler block.
15192
15193         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15194
15195         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15196         ex var with the pending exception and only throw if the two are equal.
15197         Fixes #68552.
15198         
15199         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15200
15201         * mini-x86.c: Fix warnings.
15202
15203         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
15204         used by all the ports now.
15205
15206         * aot.c: Add write-symbols and save-temps options.
15207
15208 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15209
15210         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
15211
15212 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
15213
15214         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
15215         operations.
15216
15217         * tramp-s390.c: Check vtable slot belongs to the domain.
15218
15219         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
15220         as per other platforms.
15221
15222         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15223
15224 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15225
15226         * driver.c: we don't run the Main() code in a subthread anymore.
15227
15228 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15229
15230         * mini.c: added experimental rtc support in the statistical
15231         profiler: if the user has the permission, more accurate statistics
15232         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15233         The MONO_RTC value must be restricted to what the linux rtc allows:
15234         power of two from 64 to 8192 Hz.
15235
15236 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15237
15238         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15239
15240 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15241
15242         * mini-ppc.c: better icache flush for smp.
15243
15244 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15245
15246         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15247
15248         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15249         amd64 port, not yet used.
15250
15251 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15252
15253         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15254         a struct type.
15255
15256 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15257
15258         * driver.c: Added --security option to activate the security manager.
15259         Right now this will allow code generation for declarative demands and
15260         is disabled when AOT is specified.
15261         * mini.c: Add code generation for declarative security demands.
15262         * mini.h: Add mono_use_security_manager as an extern gboolean.
15263
15264 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15265
15266         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15267         emitting more dense assembly code.
15268
15269         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15270         exception throwing stuff.
15271
15272 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15273
15274         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15275         dead code.
15276
15277         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15278         left in by mistake.
15279
15280         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15281         fixed.
15282
15283         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15284
15285         * tramp-*.c: Only patch vtable slots if the object is in the current
15286         domain. Fixes appdomain-unload.exe.
15287
15288         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15289         
15290         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15291         x86 branch.
15292
15293 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15294
15295         * mini.c (reverse_branch_op): New helper function.
15296
15297         * mini.c (optimize_branches): Run the new optimization only on 
15298         platforms which support it. Also reverse all kinds of branches.
15299
15300         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15301
15302         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15303         a throw statement.
15304
15305         * mini.c (optimize_branches): Reverse not-equals branches if the false
15306         bblock is a throw. This happens a lot of time with argument checking in
15307         corlib.
15308
15309         * mini.c (mono_codegen): Add support for placing basic blocks after
15310         the function epilogue.
15311
15312         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15313         function epilogue.
15314         
15315 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15316
15317         * mini.c (setup_stat_profiler): Only set this up if the platform
15318         supports ITIMER_PROF.
15319
15320 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15321
15322         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15323         previous patch.
15324
15325         * inssel.brg: Fix a warning.
15326
15327 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15328
15329         * mini.c: added support for statistical profiler 
15330         (run with: --profile=default:stat).
15331
15332 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15333
15334         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15335
15336         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15337
15338         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15339         related to global registers from the amd64 port.
15340
15341 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15342
15343         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15344
15345         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15346         with global registers.
15347         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15348
15349         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15350
15351 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15352
15353         * debug-mini.c (encode_value): Fix off-by-one.
15354
15355         * aot.c (encode_value): Likewise.
15356
15357         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15358
15359 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15360
15361         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15362         AOT.
15363
15364         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15365         
15366         * aot.c (emit_method_info): Increase size of temp buffer.
15367
15368         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15369         the AOT case.
15370
15371 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15372
15373         * aot.c (emit_method_info): Fix build.
15374         
15375         * aot.c: Further rework of the AOT file format to reduce the size of
15376         the method info data.
15377
15378         * mini.h: Bump AOT file format version.
15379
15380 2004-12-27  Martin Baulig  <martin@ximian.com>
15381
15382         * mini.c (mini_get_method): New static method; call
15383         mono_get_method_full() and mono_get_inflated_method().
15384         (mono_method_to_ir): Use mini_get_method() instead of
15385         mono_get_method_full(). 
15386
15387 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15388
15389         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15390
15391 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15392
15393         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15394
15395         * inssel-amd64.brg: Add some optimization rules.
15396
15397 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15398
15399         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15400         standard not GC'd stuff is fine.
15401
15402 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15403
15404         * aot.c: Rework the AOT file format to get rid of most of the global
15405         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15406
15407         * mini.h: Bump AOT file format version.
15408         
15409 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15410
15411         * mini.h: Bump AOT file format version.
15412
15413         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15414         address is inside a GOT.
15415
15416         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15417
15418         * cpu-pentium.md: Increase the maximum size of some instructions which
15419         might involve a got access.
15420         
15421         * mini.c (get_method_from_ip): Another debug helper function.
15422
15423         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15424         when got var accesses are created during the decompose phase.
15425
15426         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15427
15428         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15429         argument mini_compile_method and to MonoCompile, and use this to
15430         determine whenever a given method is compiled for AOT. This allows the
15431         other methods compiled during AOT compilation to be free of AOT stuff,
15432         so the backends does not need to add special support for them by
15433         creating a fake GOT etc.
15434
15435         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15436         longer needed.
15437
15438 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15439
15440         * mini.c (mono_method_to_ir): It turns out that some of the
15441         x-appdomain wrappers are lax with types, so just ignore this for
15442         all wrappers.
15443
15444         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15445         at the vtable->klass. If it is non-shared code we can just use the
15446         vtable.
15447
15448 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15449
15450         * mini-ppc.c: access MonoDomain from tls, too.
15451
15452 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15453
15454         * declsec.c: Removed unused variable (and related warning ;-)
15455
15456 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15457
15458         * iltests.il: New test for LDELEMA on an array of ref types.
15459
15460         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15461         all ldelema's on reftypes.
15462         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15463         it was the wrong place to put it.
15464
15465         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15466         register to pop to make this cleaner, at the request of Paolo.
15467
15468 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15469
15470         * mini-ops.h (OP_GETHASHCODE): New op.
15471
15472         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15473
15474         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15475         operation.
15476
15477         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15478         by 25%.
15479         
15480         * mini-x86.c (mono_arch_output_basic_block): Rather than
15481
15482         add ebp, 4
15483
15484         Emit
15485
15486         pop edx
15487
15488         The first is 3 bytes while the second is 1. This saves 36 kb on
15489         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15490         see a small boost because of icache locality.
15491
15492         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15493
15494 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15495
15496         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15497         started code sharing with the generic code.
15498
15499 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15500
15501         * mini-ppc.c, cpu-g4.md: added code for direct access to
15502         tls data slots.
15503
15504 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15505
15506         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15507          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15508         to OP_TLS_GET.
15509
15510 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15511
15512         * declsec.c|h: Added functions to cache the declarative stack modifiers
15513         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15514         structure.
15515         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15516         created. Register internal calls for System.Security.SecurityFrame::
15517         _GetSecurityFrame and _GetSecurityStack.
15518         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15519         the definitions for the new stack walk/callback mechanism.
15520         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15521         first security frame for LinkDemands and InheritanceDemands) and
15522         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15523         from lupus.
15524         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15525         walk initialization (lupus).
15526
15527 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15528
15529         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15530         idiom.
15531         (handle_loaded_temps): Do not create a temporary variable for
15532         things that we know are temps. They will never be modified.
15533         (mono_spill_call): Set MONO_INST_IS_TEMP
15534         (mono_emulate_opcode): ditto
15535         (emit_tree): ditto
15536         (mono_method_to_ir.CEE_DUP): ditto
15537
15538 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15539
15540         * mini.c (type_to_eval_stack_type): Make this handle the void type
15541         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15542         (emit_tree): use ip_in_bb to special case some common idioms
15543         Update all callers to pass in the IP.
15544         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15545
15546         This gives us a nice 2% speedup in mcs bootstrap.
15547
15548         * mini-x86.c (peephole_pass): Peephole pass to make
15549         mov  [foo], eax
15550         push [foo]
15551
15552         into
15553
15554         mov [foo], eax
15555         push eax
15556
15557         * mini.c (ip_in_bb): new method.
15558         (mono_method_to_ir): use this method rather than doing the hash
15559         lookup ourselves.
15560
15561         * linear-scan.c (mono_linear_scan): When expiring actives, you
15562         don't need to keep around variables that expire on this
15563         instruction. This makes it so that:
15564              a = b + 1
15565         will turn into:
15566              store (ebx add (ebx, 1))
15567         which will become
15568              add ebx, 1
15569
15570 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15571
15572         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15573         combination to avoid doing two copies. Fix up problems with previous
15574         patch.
15575
15576         * mini.c: Fix 64 bit warnings.
15577
15578         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15579
15580 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15581
15582         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15583         changes from the x86 code.
15584
15585         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15586
15587 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15588
15589         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15590         throwing code to reduce its size, unify the AOT and non-aot code and 
15591         get rid of relocations in the AOT case.
15592
15593         * mini-x86.h mini.c exceptions-x86.c 
15594         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15595         raise corlib exceptions which doesn't require relocations in the 
15596         caller.
15597
15598         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15599
15600 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15601
15602         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15603         needed.
15604
15605         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15606         in the AOT case.
15607
15608 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15609
15610         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15611         with add function when used from Inc/dec atomic 
15612         functions. Re-enabled optimization on x86.
15613         * mini-ops.h: renamed atomic_add functions to
15614         allow _add to match the Interlocked::Add and
15615         _add_next to match Interlocked::Inc/Dec.
15616
15617 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15618
15619         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15620         linking of BBs to the end BB, and enabled SSAPRE also with
15621         consprop and copyprop (which was prevented by that bug).
15622
15623 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15624
15625         * mini-x86.c: disabling the Interlocked optimizing code. 
15626
15627 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15628
15629         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15630         file version check.
15631         
15632 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15633
15634         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15635         interlocked optimization due lack of support on x86, rewrote 
15636         exchange to take into account that base may be in eax.
15637         
15638         xsp works again; activated Interlocked optimizing code.
15639         
15640 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15641
15642         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15643
15644 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15645
15646         * mini-ops.h: Add new opcodes.
15647
15648         * mini.h: Add new patch types. Add got_var to MonoCompile.
15649
15650         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15651         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15652         make it work with all kinds of patchable code.
15653
15654         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15655         address of the GOT, and referencing entries in the GOT.
15656
15657         * mini.c: Add code to load the GOT address if needed by an opcode.
15658
15659         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15660         independent AOT code on the x86 using an elf-style Global Offset Table.
15661
15662 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15663
15664         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15665
15666 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15667
15668         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15669         when running xsp.
15670
15671 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15672
15673         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15674         of Interlocked:Increment/Decrement/Add as inline ops.
15675         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15676
15677 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15678
15679         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15680         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15681
15682 2004-12-12  Duncan Mak  <duncan@ximian.com>
15683
15684         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15685         again. `patch_info->table_size' is no longer valid after Zoltan's
15686         commit #37636.
15687
15688 2004-12-12  Martin Baulig  <martin@ximian.com>
15689
15690         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15691         if we are the "real" method, ie. not an inlined method inside it.
15692
15693 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15694
15695         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15696         before we look in the special fields table. This fixes
15697         ../tests/thread-static-init.cs.
15698
15699 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15700
15701         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15702         for Array get_Rank and get_Length. Fixes bug #70465.
15703
15704 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15705
15706         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15707         separate structure to reduce the size of MonoJumpInfo.
15708
15709 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15710
15711         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15712
15713 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15714
15715         * mini.c (mini_get_inst_for_method): Changed to allow ports
15716         to return a MonoInst instead of opcode 
15717         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15718         
15719         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15720         Allow ports to return a created MonoInst instead of op-code, will enable
15721         new optimizations.
15722         (renamed mini_get_opcode_for_method to better reflected the functionality)
15723
15724 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15725
15726         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15727
15728 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15729
15730         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15731         Fixes #69985.
15732
15733 2004-12-08  Martin Baulig  <martin@ximian.com>
15734
15735         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15736         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15737
15738 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15739
15740         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15741         correctly.
15742
15743         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15744         arithmetic.
15745
15746 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15747
15748         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15749
15750 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15751
15752         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15753         bug introduced by the previous patch.
15754
15755 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15756
15757         * mini-ppc.c, objectc.cs: handle large structs passed by value
15758         (fixes bug #69972).
15759
15760 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15761
15762         * mini-ppc.c: OP_ARGLIST implementation from
15763         Geoff Norton  <gnorton@customerdna.com>.
15764
15765 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15766
15767         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15768         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15769
15770 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15771
15772         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15773
15774 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15775
15776         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15777         support.
15778
15779 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15780
15781         * mini-sparc.c: Zero out localled-ed memory.
15782
15783         * iltests.il: Add tests for zeroing out localloc-ed memory.
15784
15785 2004-12-04  Martin Baulig  <martin@ximian.com>
15786
15787         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15788         mono_method_get_signature_full().       
15789
15790 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15791
15792         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15793         and some utility functions (always for SSAPRE), integrated SSAPRE.
15794         * mini.h: Likewise.
15795         * driver.c: Added ssapre option.
15796         * ssa.c: Small fix on OP_ARG handling.
15797         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15798         * Makefile.am: Likewise.
15799
15800 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15801
15802         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15803         now in the xp code.
15804
15805         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15806         icall.
15807
15808 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15809
15810         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15811         
15812         * cpu-s390.md : Increase instruction length of oparglist.
15813
15814         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15815
15816 2004-11-30  Martin Baulig  <martin@ximian.com>
15817
15818         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15819         virtual generic methods.  We call a special helper_compile_generic_method()
15820         icall to retrieve the method from the vtable, inflate and compile
15821         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15822
15823         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15824
15825 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15826
15827         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15828
15829 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15830
15831         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15832         Fixes #69929.
15833
15834 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15835
15836         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15837         platforms with PIC aot.
15838
15839 2004-11-28  Martin Baulig  <martin@ximian.com>
15840
15841         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15842         Fixes gen-112.cs.
15843
15844 2004-11-28  Martin Baulig  <martin@ximian.com>
15845
15846         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15847         the result of mono_type_get_underlying_type() to check whether
15848         we're byref.
15849
15850 2004-11-26  Martin Baulig  <martin@ximian.com>
15851
15852         * mini.c
15853         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15854         in the g_assert().
15855
15856 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15857
15858         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15859         the same way as the other arguments so they won't get clobbered.
15860
15861         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15862         calls through R11 since it is clobbered by the trampoline code.
15863
15864 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15865
15866         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15867         pick up in-tree mscorlib.dll.
15868
15869 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
15872
15873         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
15874         runtime data/code are now stored in a table similar to the GOT in ELF. 
15875         This allows the code itself to be position independent.
15876
15877         * aot.c: Fix loading of referenced assemblies after the lazy assembly
15878         loading changes.
15879
15880         * aot.c: Attach ELF type (object/function) directives to all global
15881         symbols.
15882
15883         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
15884
15885         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
15886
15887         * mini-amd64.h: Turn on PIC AOT code.
15888
15889         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
15890         returning the offset within an OP_AOTCONST instruction where the GOT
15891         offset needs to be added.
15892
15893         * mini.h: Bump AOT file format version.
15894
15895 2004-11-25  Martin Baulig  <martin@ximian.com>
15896
15897         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
15898         uninflated generic methods.
15899
15900 2004-11-25  Martin Baulig  <martin@ximian.com>
15901
15902         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
15903
15904 2004-11-24  Martin Baulig  <martin@ximian.com>
15905
15906         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
15907         original klass (this only applies for generic instances).
15908
15909 2004-11-24  Martin Baulig  <martin@ximian.com>
15910
15911         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
15912         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
15913         that array).
15914
15915 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15916
15917         * mini.c (mono_method_to_ir): Disable inlining for methods containing
15918         localloc. Fixes #69678.
15919
15920         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
15921         
15922 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
15923
15924         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
15925         used SSE registers on pinvoke calls. Fixes #69774.
15926
15927 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
15928
15929         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
15930         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
15931
15932 2004-11-23  Raja R Harinath  <rharinath@novell.com>
15933
15934         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
15935         Refer directly to the mcs/ tree.
15936
15937 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15938
15939         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
15940         Check if a trampoline for a synchronized method is required. 
15941
15942 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
15943
15944         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
15945         with localloc if needed. Throe arithmetric exception in
15946         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
15947         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
15948
15949 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
15950
15951         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
15952         types before switching on type.  Fixes #69622.
15953
15954 2004-11-19  Raja R Harinath  <rharinath@novell.com>
15955
15956         * Makefile.am (check-local): New.  Integrate into 'make check'.
15957         (MCS,RUNTIME): Define using in-tree mono and mcs.
15958         (ILASM): New.
15959         (%.exe): Use $(ILASM).
15960
15961 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
15962
15963         * mini-ppc.c: adjust initial prolog size (bug #69691).
15964
15965 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
15966
15967         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
15968         #69664.
15969
15970 2004-11-17  Raja R Harinath  <rharinath@novell.com>
15971
15972         * Makefile.am (clean-local): Rename from 'clean'.
15973
15974 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15975
15976         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
15977         to mono_arch_is_int_overflow. 
15978         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
15979         SIGFPE events.
15980
15981 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15982
15983         * declsec.c|h: New files to support declarative security attributes.
15984         Added function to check if a method has (applicable) security.
15985         * mini.c|h: Add check for declarative security attributes in
15986         mono_method_check_inlining.
15987         * Makefile.am: Added declsec.c and declsec.h to the build.
15988
15989 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15990
15991         * mini.c, mini.h: update to keep dynamic code info per-domain.
15992
15993 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15994
15995         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
15996         (mini_init): Get rid of it from here too.
15997
15998 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
15999
16000         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
16001         implemented OP_RETHROW (patch by Geoff Norton
16002         <gnorton@customerdna.com>).
16003
16004 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
16005
16006         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
16007         between appdomains.  Fixes appdomain-unload on PPC.
16008
16009 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
16010
16011         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16012         mini-exceptions.c: handle the new wrapper types.
16013         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
16014         token value as a MonoClass* when compiling a wrapper.
16015         mono_jit_create_remoting_trampoline now takes an additional
16016         MonoRemotingTarget parameter.
16017         
16018 2004-11-10  Martin Baulig  <martin@localhost>
16019
16020         * mini.c (mono_method_to_ir): Use `generic_container->context'
16021         rather than creating a new one.
16022
16023 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16024
16025         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
16026
16027         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
16028
16029 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16030
16031         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
16032         the experimental aot cache stuff.
16033
16034 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16035
16036         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16037         mini-exceptions.c: update to exception clause structure changes.
16038
16039 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16040
16041         * exceptions-x86.c (throw_exception): Fix warnings.
16042
16043         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
16044         for OP_RETHROW.
16045
16046 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16047
16048         * exceptions-sparc.c (get_throw_exception): Really fix this.
16049
16050 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16051
16052         * tramp-*.c: we no longer support icalls without wrappers, so
16053         a bit of code can be removed here
16054
16055 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
16056
16057         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
16058         patch.
16059
16060         * cpu-sparc.md: Add op_rethrow.
16061
16062         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
16063
16064         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
16065
16066         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
16067         * mini-ops.h: Add OP_RETHROW.
16068
16069         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
16070
16071         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
16072
16073 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16074         
16075         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
16076         Makes the output much easier to read
16077
16078 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
16079
16080         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
16081         prevents another huge leak when compiling with ssa. Secondly, the
16082         performance of doing this rather than freeing the lists is much
16083         better. GList does a lock every time you allocate a list link,
16084         so that it can use a memory pool. So, it is better to just use
16085         a memory pool of our own.
16086         
16087         * ssa.c, linear-scan.c: replace g_list_remove_link with
16088         g_list_delete.  The remove one does not free the GList, so we were
16089         leaking memory. On -O=all --compile-all with corlib, this cut down
16090         3 MB of allocations.
16091
16092 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16093
16094         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
16095
16096         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
16097
16098         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
16099         into a new function mono_create_jit_trampoline ().
16100
16101 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16102
16103         * trace.c (get_spec): Allow tracing of classes without a namespace.
16104
16105 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
16106
16107         * mini.c: Fix pointer overwrite in mini_method_compile.
16108
16109 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
16110
16111         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
16112         The darwin ABI needs some special handling for 1 and 2 byte structs
16113         Lets use lbz/lhz instead of lwz everywhere.
16114         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
16115         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
16116         Use stb/sth for the former, and put the latter always on stack instead of in
16117         argument registers.
16118
16119 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * trace.c (is_filenamechar): Add '_'.
16122
16123 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
16124
16125         * mini-s390.c: Fix prolog length to allow for large trace requirements.
16126
16127         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
16128
16129 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
16130
16131         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
16132         depends on libmonogc. Fixes #68805.
16133
16134 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
16135
16136         * mini.c (mono_jit_free_method): Provide extra information for
16137         this error.  Currently this leaks, but will be turned into a
16138         developer option in the future.
16139
16140 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
16141
16142         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
16143
16144 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16145
16146         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
16147         boundary. Fixes reading of PATCH_INFO_R4 and R8.
16148         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
16149
16150 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
16153         trampolines for AOT code.
16154
16155 2004-10-22    <vargaz@freemail.hu>
16156
16157         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16158         constructed types. Fixes #68136.
16159
16160 2004-10-21  Martin Baulig  <martin@ximian.com>
16161
16162         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16163         if it returns true, unwind the stack to the call instruction.
16164
16165 2004-10-21    <vargaz@freemail.hu>
16166
16167         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16168
16169         * mini.h: Bump AOT version number.
16170
16171         * objects.cs: Add another test for unbox trampolines.
16172
16173         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16174         valuetype methods.
16175
16176 2004-10-20    <vargaz@freemail.hu>
16177
16178         * driver.c: Add SHARED to the set of optimizations tested.
16179
16180         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16181
16182         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16183         used by CEE_NEWARR.
16184
16185         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16186
16187 2004-10-20  Martin Baulig  <martin@ximian.com>
16188
16189         * mini-exceptions.c (mono_handle_exception): Call
16190         mono_debugger_handle_exception() to tell the debugger about
16191         catch/finally clauses.
16192
16193 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16194
16195         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16196
16197         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16198         #68447.
16199
16200 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16201
16202         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
16203         methods as their native size, fixed bug #57543, #57545.
16204         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16205         This saves a temporary register and mullw call down into 1 (minor perf
16206         increase for cases like sum = sum * 5;  This use to translate into:
16207             li r11,5
16208             mullw r28,r28,r11
16209         It now translates to
16210             mulli r28,r28,5
16211
16212 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
16213
16214         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
16215         #68388.
16216
16217 2004-10-11  Martin Baulig  <martin@ximian.com>
16218
16219         * mini.c (mono_method_to_ir): If we're a generic method, get the
16220         MonoGenericContainer from our MonoMethodNormal and create a
16221         MonoGenericContext from it.
16222
16223 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16224
16225         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16226
16227         * basic-long.cs: Add test for checked i8->i2 cast.
16228
16229 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16230
16231         * inssel-ppc.brg: added a couple of speedup rules.
16232
16233 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16234
16235         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16236         to speed up rebuilds.
16237
16238 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16239
16240         * mini-s390.c: Minor fix to OP_OR_IMM.
16241
16242 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16243
16244         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16245         better. Fixes appdomain-unload.exe on sparc.
16246
16247 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16248
16249         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16250         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16251         see bug 67324.
16252
16253 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16254
16255         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16256
16257 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16258
16259         * mini.c: Always generate a field read/write wrapper for members
16260         of the class MarshalByRefObject since the actual instance could
16261         be a CBO.
16262
16263 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16264
16265         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16266
16267 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16268
16269         * driver.c mini.h trace.c: Move the setting of the main assembly into
16270         a separate function called mono_trace_set_assembly () and call it after
16271         actually loading the main assembly. Fixes #66872.
16272
16273 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16274
16275         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16276         using the code manager.
16277
16278 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16279
16280         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16281
16282 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16283
16284         * cpu-amd64.md: Fix bug in previous patch.
16285         
16286         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16287         #66650.
16288
16289 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16290
16291         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16292         mini-exceptions.c: updates for changed stack walk interface.
16293
16294 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16295
16296         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16297
16298 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16299
16300         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16301
16302 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16303
16304         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16305         since assemblies can't be unloaded.
16306         
16307 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16308
16309         * cpu-amd64.md: Fix more instruction lengths.
16310
16311         * cpu-amd64.md: Fix lengths of some instructions.
16312
16313 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16314
16315         * inssel.brg: Make the array ldelema check aot friendly.
16316
16317 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16318
16319         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16320
16321         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16322
16323 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16324
16325         * mini-x86.c: Fix build.
16326
16327         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16328         mono_type_get_underlying_type () helper function to simplify code.
16329         
16330 2004-09-09  Martin Baulig  <martin@ximian.com>
16331
16332         * mini-amd64.c: Don't access `type->data.klass' directly, call
16333         mono_class_from_mono_type() instead since the type may be a
16334         generic instance.
16335
16336 2004-09-09  Martin Baulig  <martin@ximian.com>
16337
16338         * mini-amd64.c (get_call_info): Fix support for generic instances.
16339         (add_valuetype): Use mono_class_from_mono_type() to get the class
16340         since we can be a generic instance.
16341
16342 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16343
16344         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16345
16346 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16347
16348         * liveness.c: reset spill costs on each scan: bug 62107
16349
16350 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16351
16352         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16353         unnecessary line that doesn't compile
16354
16355 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16356
16357         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16358         trampolines, make them call an error function so people can fix their
16359         code.
16360
16361 2004-09-06  Martin Baulig  <martin@ximian.com>
16362
16363         * mini.c (mono_method_to_ir): When initializing locals, handle a
16364         generic instances like a valuetype if it's a valuetype and like a
16365         class if it's a class.
16366
16367 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16368
16369         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16370         stack. Fixes #64674.
16371
16372         * exceptions.cs: Add test for unwinding of call arguments.
16373
16374 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16375
16376         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16377         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16378         set the carry/borrow flag). The sparc and s390 implementations
16379         can now use optimized versions (and simplify the code). ppc bugfixes.
16380
16381 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16382
16383         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16384
16385 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * inssel-amd64.brg: Remove leftover 32 bit rule.
16388
16389         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16390
16391 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16392
16393         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16394         mono_arch_find_jit_info functions into a new function. Fix a memory
16395         leak.
16396
16397         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16398         refactored code.
16399         
16400 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16401
16402         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16403         as well.
16404         
16405         * exceptions.cs: Add array size tests.
16406
16407         * mini.c: Allocate a separate icall wrapper for each arity of 
16408         mono_array_new_va. Fixes #59509.
16409
16410         * exceptions.cs: Add testcase for 64578.
16411
16412         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16413
16414         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16415         
16416 2004-09-02  Martin Baulig  <martin@ximian.com>
16417
16418         * mini.c (mono_method_to_ir): When initializing the locals, call
16419         handle_initobj() on the generic instance itself, not its
16420         underlying type.
16421
16422 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16423
16424         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16425         MonoJitInfo for dynamic methods.
16426
16427         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16428
16429         * mini.c: Add support for freeing JIT data for dynamic methods.
16430         
16431 2004-09-01  Martin Baulig  <martin@ximian.com>
16432
16433         * mini-x86.c (is_regsize_var): Added support for generic
16434         instances.
16435         (mono_arch_emit_prolog): Make this compile again, use
16436         `x86_push_imm_template (code)'.
16437
16438 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16439
16440         * mini-x86.c: make all push_imm instructions that get
16441         patched always emit the long form
16442
16443 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16444
16445         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16446         in a per-domain hash.
16447
16448         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16449         types.
16450
16451 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16452
16453         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16454         work.
16455         
16456         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16457         work.
16458
16459         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16460         Beginnings of SSE2 support.
16461
16462         * exceptions.cs: Add more tests for checked int<->uint casts.
16463
16464 2004-08-28  Martin Baulig  <martin@ximian.com>
16465
16466         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16467         generic instances.
16468
16469         * mini.c
16470         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16471         Handle generic instances recursively.
16472
16473 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16474
16475         * iltests.il: test for conv.u8 on a constant
16476
16477 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16478
16479         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16480         LCONV_x4 (shrun_32 (membase)).
16481
16482 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16483
16484         * inssel-x86.brg: c&p rules for push/setret of long
16485
16486 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16487
16488         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16489         compare (regvar, base)
16490
16491         * inssel-x86.brg: more burg love
16492
16493         * inssel.brg: more cleanup
16494
16495         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16496
16497 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16498
16499         * basic-long.cs, basic-calls.cs: new tests for optimization.
16500
16501 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16502
16503         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16504         patch.
16505
16506 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16507
16508         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16509         
16510 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16511
16512         * inssel.brg (mini_emit_memcpy): use 
16513         NO_UNALIGNED_ACCESS to disable memcpy optimization
16514
16515 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16516
16517         * mini-amd64.c: Handle generic types in various places.
16518
16519         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16520
16521 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16522
16523         * mini.c (handle_box): Fix warning.
16524
16525         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16526
16527         * mini-amd64.h: Enable the emit_state optimization.
16528
16529         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16530
16531         * mini-amd64.c: Add some new 64 bit peephole opts.
16532
16533         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16534
16535         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16536
16537         * mini-amd64.c: Register allocator fixes.
16538
16539         * mini.c: Add an optimization to emit_state to avoid allocation of new
16540         registers on some platforms.
16541
16542 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16543
16544         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16545
16546         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16547         allocation. Fixes #63085.
16548
16549         * basic-long.cs: Add new regression test.
16550
16551         * mini-amd64.c: Register allocator improvements.
16552
16553 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16554
16555         * mini-amd64.c (read_tls_offset_from_method): Add another code
16556         sequence.
16557
16558         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16559         instruction sequence for nullifying class init trampolines.
16560
16561         * objects.cs: Add new regalloc test.
16562
16563         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16564
16565 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16566
16567         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16568         
16569         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16570         arguments.
16571
16572         * driver.c: Fix profiling after TLS changes.
16573         
16574         * driver.c (mono_main): Set mono_stats.enabled if needed.
16575
16576         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16577         CEE_BOX.
16578
16579 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16580
16581         * mini-x86.c: use a 1 op rather than a 2 op tls access
16582         instruction -> faster.
16583
16584 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16585
16586         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16587         x86 backend.
16588
16589 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16590
16591         * exceptions-sparc.c (throw_exception): fix typo
16592
16593 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16594
16595         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16596         set tree->dreg correctly with tls. Allow any
16597         register to be used.
16598
16599         * mini-x86.c (read_tls_offset_from_method): add new code
16600         generation pattern seen with GCC.
16601
16602
16603 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16604
16605         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16606         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16607         exceptions-sparc.c: fix some performance issues in exception
16608         handling and setting of the stack trace for exceptions that were
16609         already thrown.
16610
16611 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16612
16613         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16614         x86 backend.
16615         
16616         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16617         registers.
16618
16619 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16620
16621         This patch inlines tls access, when possible.
16622         
16623         * mini.h: new arch functions for TLS intrinsics.
16624         All platforms updated with a stub.
16625
16626         * mini.c: use the new intrinsics
16627
16628         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16629         arch specific intrinsic for tls variables
16630
16631 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16632
16633         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16634         under windows.
16635
16636 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16637
16638         * mini.c: thread local allocation
16639
16640 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16643
16644         * Makefile.am: Link against the static version of libmonogc.
16645         
16646         * Makefile.am: Link the static versions of the convenience libraries
16647         into the mono executable.
16648
16649         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16650
16651 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16652
16653         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16654         on integer overflow.
16655
16656         * mini-amd64.c: Reorganize function call code.
16657
16658         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16659
16660 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16661
16662         * inssel-x86.brg: use xor eax,eax.
16663         
16664         * basic.cs: new tests
16665
16666 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16667
16668         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16669         in exception throwing code.
16670         
16671 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16672
16673         * inssel-x86.brg: use xor esi,esi.
16674
16675 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16678         can trace methods compiled during mini_init () too.
16679
16680         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16681         CEE_CONV_U4.
16682
16683 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16684
16685         * Makefile.am: static link on x86 (r=zoltan)
16686
16687 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16688
16689         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16690         code since it causes some programs to fail.
16691
16692 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16693
16694         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16695
16696 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16697
16698         * mini.c: ovfops_op_map - add STACK_OBJ case for
16699         CONV_I 
16700         * basic.cs: add test_0_pin_string as test
16701         case for above.
16702
16703 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16704
16705         * Makefile.am: build C# if srcdir != builddir
16706
16707 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16708
16709         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16710         fall-through blocks.
16711
16712 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16713
16714         * driver.c: enable loop by default again and include abcrem in -O=all.
16715
16716 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16717
16718         * iltests.il: Add some localloc tests.
16719
16720         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16721
16722         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16723         Fixes #62574.
16724
16725         * inssel-amd64.brg: Add some optimizations.
16726
16727         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16728         for gcc-3.4.
16729
16730         * Makefile.am: Statically link mono against libmono on AMD64.
16731         
16732         * mini-amd64.c inssel-amd64.brg: Optimizations.
16733
16734 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16737
16738         * tramp-amd64.c: Patch calling code in trampolines.
16739
16740 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16741
16742         * mini-amd64.c: pinvoke struct passing fixes.
16743
16744 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16745
16746         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16747         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16748
16749 2004-08-05  Duncan Mak  <duncan@ximian.com>
16750
16751         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16752         CEE_LDELEM_ANY.
16753
16754 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * mini-amd64.c (emit_move_return_value): Move return value for normal
16757         calls too.
16758
16759 2004-08-05  Martin Baulig  <martin@ximian.com>
16760
16761         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16762         `type->type'; just modify `type' itself when dealing with enums
16763         and generic instances.
16764         (check_call_signature): Make `simple_type' a `MonoType *'.
16765
16766 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16767
16768         * mini.c: Use OP_PADD to add offsets to addresses.
16769
16770         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16771
16772 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16773
16774         * mini-sparc.c (mono_arch_emit_epilog): fix check
16775         for folding last op into restore instruction
16776
16777 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16778
16779         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16780         helper methods using the code manager.
16781         
16782         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16783
16784         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16785
16786 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16787         
16788         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16789           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16790
16791         * mini-s390.c: fix tail processing
16792
16793 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16794
16795         * mini-ppc.c: mul.ovf.un exception name fix.
16796
16797 2004-08-03  Martin Baulig  <martin@ximian.com>
16798
16799         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16800         instances; before jumping to `handle_enum', also modify `ptype'.
16801
16802 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16803
16804         * cpu-sparc.md: fcall maximal length too small.
16805
16806 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16807
16808         * mini-amd64.c mini.h: Add initial support for passing/returning 
16809         structures to/from pinvoked methods.
16810
16811 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16812
16813         * mini-ppc.c: reg allocator fix.
16814
16815 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16816
16817         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16818
16819         * inssel.brg: Optimize memset on 64 bit machines.
16820
16821         * mini-amd64.c: Fix some vararg cases.
16822
16823 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16824
16825         * mini-s390.c: Corrected macro in emit_float_to_int
16826
16827         * s390-abi.cs: Tests to exercise the s390 ABI
16828
16829 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16830
16831         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16832         caller saved regs.
16833
16834         * basic.cs: Add a test for add.ovf.un.
16835
16836 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16837
16838         * mini-sparc.c: add case for OP_IDIV_UN
16839
16840 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16841
16842         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16843         
16844         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16845
16846 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16847
16848         * basic.cs: regression tests.
16849
16850         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16851         regressions.
16852
16853 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16854
16855         * basic.cs: Add a new test.
16856
16857         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16858         and AOT. Various fixes and optimizations.
16859
16860         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16861
16862 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16863
16864         * mini-ppc.c: make sure temp regs are not used for global reg
16865         allocation.
16866
16867 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16868
16869         * cpu-sparc.md: conv_i8 fix for 64bits
16870
16871         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
16872
16873 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
16874         
16875         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
16876         add opcode for cmp BYTE PTR [eax], imm.
16877
16878         * inssel.brg: Make memcpy and memset takes bases.
16879
16880 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16881
16882         * *-amd64.*: More AMD64 work.
16883         
16884 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16885
16886         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
16887         add a compare-not-equal opcode.
16888         
16889 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16890
16891         * mini.c: Use mono_init_from_assembly instead of mono_init.
16892         
16893 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16894
16895         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
16896
16897         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
16898
16899         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
16900
16901         * inssel.brg: 64 bit fixes.
16902
16903         * mini.h (MonoCallInst): Add some AMD64 specific data.
16904
16905         * mini.h: Add some OP_P opcodes.
16906
16907 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16908
16909         * basic.cs: tests for 61797 and 61740
16910
16911 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16912
16913         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
16914         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
16915
16916 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
16917
16918         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
16919
16920         * *-amd64*.*: Ongoing AMD64 work.
16921
16922 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
16923
16924         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
16925
16926         * *-amd64*: Ongoing AMD64 work.
16927
16928         * mini-arch.h: Add AMD64 support.
16929
16930         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
16931
16932         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
16933
16934         * mini-ops.h: Add new opcodes.
16935
16936         * Makefile.am: Add AMD64 support.
16937
16938         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
16939         rules into the inssel-long*.brg files.
16940
16941         * *-amd64.*: Add beginnings of AMD64 backend.
16942
16943 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
16944
16945         * mini.c (print_dfn): commenting out the code that prints
16946         the cil. With -O=deadce, this makes -v -v crash.
16947         
16948         * cpu-pentium.md: make checkthis have a length of 2
16949
16950 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
16951
16952         * mini-sparc.h: fix implementations of __builtin
16953         functions for Sun compiler for V9.
16954
16955 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16956
16957         * mini.c: use the new stelem.ref wrapper
16958         * exceptions.cs, arrays.cs: new stelem.ref tests
16959
16960 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16961
16962         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
16963         new XSP should work with these changes).
16964
16965 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
16966         
16967         * inssel-{long32,x86,}.brg: trivial optimizations.
16968         
16969 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16970
16971         * mini.c: load value when emitting box operation in
16972         constrained calls.
16973
16974 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
16975
16976         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
16977         is one byte shorter than cmp DWORD PTR [eax], 0.
16978
16979 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16980
16981         * inssel-ppc.brg: arguments on the stack are always
16982         relative to the stack pointer (spotted by Neale Ferguson).
16983
16984 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16985
16986         * exceptions-x86.c: delay appending the method name to the trace until
16987         after mono_jit_info_table_find is called, as this gets the real
16988         MonoMethod.
16989
16990 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16991
16992         * aot.c: register roots
16993
16994 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16995
16996         * aot.c : I could just use PLATFORM_WIN32 flag.
16997
16998 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16999
17000         * aot.c : Reverting the previous fix. This time it broke linux build.
17001
17002 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17003
17004         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
17005
17006 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17007
17008         * mini.c (handle_stack_args): Remove some more debugging code.
17009         
17010         * mini.c (handle_stack_args): Remove debug output left in by mistake.
17011
17012         * driver.c mini.h aot.c: Allow additional options to be specified with
17013         --aot and pass them to mono_compile_assembly.
17014
17015         * aot.c: Add experimental code to AOT compile all loaded assemblies
17016         on demand and save the code into a cache in the filesystem.
17017
17018         * aot.c: Add support for more wrapper methods.
17019         
17020         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
17021         58863.
17022
17023         * cpu-*.md: Remove removed opcodes.
17024
17025         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
17026         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
17027         related icalls to marshal.c.
17028
17029 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
17030
17031         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
17032
17033         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
17034
17035         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
17036
17037 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17038         * liveness.c: If liveness is recomputated we need to reset the information
17039         for each variable. This way, if the liveness range has been narrowed
17040         by optimizations that happened after the last computation, we can return
17041         a smaller range.
17042         
17043         For example, if you have
17044         
17045         {
17046                 int i = 0;
17047                 
17048                 // Tons of code that does not affect i
17049                 
17050                 i = foo ();
17051                 ...
17052         }
17053         
17054         i = 0 is dead code and will be removed by SSA. However, when
17055         linear scan gets to the code, i will still appear to be live
17056         throughout the entire block. This prevents good register allocation.
17057
17058 2004-07-06  Martin Baulig  <martin@ximian.com>
17059
17060         * debug-mini.c (mono_debug_init_method): Allow
17061         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
17062         (mono_debug_add_icall_wrapper): New method.
17063
17064         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
17065
17066 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17067
17068         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
17069         optimization.
17070
17071 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17072
17073         * aot.c (mono_aot_load_method): Fix loading of debug info.
17074
17075 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17076
17077         * aot.c: Add logging support.
17078
17079 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17080
17081         * mini.h: Add prototype for mono_print_method_from_ip.
17082
17083         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
17084
17085         * inssel.brg: 64 bit fixes.
17086
17087         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
17088         inssel-long32.brg.
17089
17090         * Makefile.am: Add SPARC64 support.
17091
17092 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17093
17094         * aot.c: Fix alignment problems on 32 bit platforms.
17095
17096 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17097
17098         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
17099         SPARC64.
17100
17101         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
17102         problems.
17103
17104         * mini.h: Bump AOT file version. Some 64 bit fixes.
17105
17106 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17107
17108         * inssel-sparc.brg: Add new rule to avoid register moves.
17109
17110         * inssel.brg: Add ldind_to_load_membase helper function.
17111
17112 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17113
17114         * mini.c: OffsetToStringData intrinsic.
17115         
17116 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17117
17118         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
17119
17120         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
17121         regression tests.
17122
17123         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
17124 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17125
17126         * mini.c: reinstated mono_compile_get_interface_var()
17127         on x86, too, since the change breaks the Gtk# build there as well.
17128
17129 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17130
17131         * driver.c: remove loop from the default optimizations: it seems to
17132         interact badly with some of the other options (see bug #60613).
17133
17134 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
17135
17136         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
17137         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
17138
17139 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
17140
17141         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
17142         vararg-using methods.
17143
17144 2004-06-21  Martin Baulig  <martin@ximian.com>
17145
17146         * mini/mini-exceptions.c
17147         (mono_handle_exception): Added `gpointer original_ip' argument.
17148         After calling mono_unhandled_exception(), call
17149         mono_debugger_unhandled_exception() and if that returns true,
17150         restore the context and return.
17151
17152 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17153
17154         * mini-ppc.c: prefer the use of relative branches so
17155         they won't need to be patched in aot code (patch from Patrick Beard).
17156
17157 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17158
17159         * aot.c: patch from Patrick Beard to make the output assembly
17160         more correct for the MacOSX assembler. Small tweak to
17161         generate sane images on Linux/PPC, too.
17162
17163 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17164
17165         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17166         case until bug #59509 is fixed (shows up in #60332).
17167
17168 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17169
17170         * mini.c: make sure the needed wrappers are compiled, too, with
17171         precomp.
17172
17173 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17174
17175         * driver.c: remove NPTL reference in --version output.
17176
17177 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17178
17179         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17180         generate valid assembly for the Mach-O assembler.
17181
17182 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17183
17184         * driver.c: don't include abcrem in the all optimization specifier
17185         since it slows down jit compilation too much for now.
17186
17187 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17188
17189         * mini.c: use BIGMUL only if both operands have the same signage.
17190         * iltests.il: Test for bug 60056. (errors related to signage in
17191         BIGMUL).
17192
17193         r=lupus.
17194
17195 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17196
17197         * mini.c, aot.c: memory leak fixes.
17198
17199 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17200
17201         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
17202
17203 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
17204
17205         * Makefile.am: remove the -static hack completely, it links in
17206         statically glib as well.
17207
17208 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
17209
17210         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
17211         * exceptions.cs: make it compile with new mcs/csc.
17212
17213 2004-06-03 Massimiliano Mantione <massi@ximian.com>
17214         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
17215         and added relevant test case.
17216
17217 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17218
17219         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
17220         regressions in gtk-sharp.
17221
17222 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17223
17224         * exceptions.cs: New regression tests.
17225
17226         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17227
17228 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17229
17230         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17231
17232 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17233
17234         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17235
17236         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17237
17238 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17239
17240         * mini.c (mono_jit_runtime_invoke): Init class in this
17241         method instead of trusting mono_jit_compile_method to
17242         do the work (because wrappers can be in object class)
17243
17244 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17245
17246         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17247
17248         * basic-long.cs: New regression test.
17249
17250 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17251
17252         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17253         and div/rem checks.
17254
17255 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17256
17257         * Makefile.am: fix miguel's change to build mono statically against
17258         libmono (track build dependencies).
17259
17260 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17261
17262         * cfold.c: Some glib versions do not have G_MININT32.
17263
17264 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17265
17266         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17267         with precision of tan, atan, sin and cos, and implemented related
17268         regressions tests (fixes bug 54467, but one new problem appeared and
17269         is not fixed yet).
17270
17271 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17272
17273         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17274
17275         * exceptions.cs: Add test for constant folding && division by zero.
17276
17277         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17278         since driver.c is in libmono too, so the optimization was useless.
17279
17280         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17281         variable to driver.c so the compiler can emit more efficient code to
17282         access them.
17283
17284 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17285
17286         * Makefile.am: don't distribute generated inssel.[ch] files.
17287
17288 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17289
17290         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17291         into the default appdomain. Fixes #58707.
17292
17293         * jit-icalls.c: Remove the broken approximation for truncl, doing
17294         no conversion is better.
17295
17296         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17297         Fixes #58863.
17298
17299 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17300
17301         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17302         of the mcrxr instruction which is not available on some processors
17303         even if it's documented to be. Implement add and sub overflow correctly
17304         (still not complete for long unsigned). Speed up icalls a bit.
17305
17306 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17307
17308         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17309         we run .cctor in the current domain instead of target_domain.
17310         
17311         Fixes bug #58558, .cctor not being called in -O=shared.
17312
17313 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17314
17315         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17316
17317 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17318
17319         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17320         which can be done with an imm8, do it that way.
17321         (mono_arch_output_basic_block): ditto for a jmp
17322         (mono_arch_emit_prolog): Computate maximum offset of a label.
17323
17324 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17325
17326         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17327         now tries to allocate prefered physical reg's for virtual
17328         regs. This reduces the number of emited spills/loads with
17329         20-30% on our core assemblies.
17330
17331 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17332
17333         * jit-icalls.c: truncl() is not needed and trunc() is
17334         the correct thing to do anyway (bug #58287).
17335
17336 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17337
17338         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17339         if available.
17340
17341 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17342
17343         * driver.c: enable loop optimizations by default.
17344
17345 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17346
17347         * mini-x86.c: fix calc of max loop size when aligning loops start.
17348
17349 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17350
17351         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17352         the stack.
17353
17354 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17355
17356         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17357         should set carry.
17358
17359         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17360
17361         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17362         
17363         * mini.c (inline_method): Allways inline some wrappers even if the cost
17364         is too large. Fixes #58785.
17365
17366         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17367         
17368 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17369
17370         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17371         (crichton@gimp.org). Beginning of support for sparc/linux.
17372
17373         * mini-sparc.c: Optimize retrieval of LMF address.
17374
17375 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17376
17377         * exceptions-ppc.c:  handle alloca in methods with clauses.
17378
17379 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17380
17381         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17382
17383 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17384
17385         * mini.c: Delegate most of the abort signal work to 
17386           mono_thread_request_interruption, which also handles Stop and Suspend
17387           states.
17388
17389 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17390
17391         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17392         supports the save/restore lmf opcodes.
17393
17394 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17395
17396         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17397         by gcc-3.4 as well.
17398
17399         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17400
17401 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17402
17403         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17404         methods which contain array accesses.
17405
17406         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17407         boundaries. Fixes #58537.
17408
17409         * iltests.il: Add regression test for #58537.
17410
17411 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17412
17413         * mini-x86.c (mono_arch_local_regalloc): Last part of
17414         fix for bug #58633 (releasing register to early).
17415
17416 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17417
17418         * basic-long.cs: Add new regression test.
17419
17420 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17421
17422         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17423         register too early on the chain.
17424
17425 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17426
17427         * mini.c (create_helper_signature): Use a helper function to reduce
17428         the code which needs to be written. Also set the calling convention of
17429         icalls on windows. Fixes #57840.
17430
17431 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17432
17433         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17434         exceptions-ppc.c: added helper function to get the instruction address
17435         from a signal handler context.
17436
17437 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17438
17439         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17440         from gonzalo.
17441
17442 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17443
17444         * helpers.c: Add new env variable to pass args to objdump.
17445         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17446
17447 2004-05-17  Radek Doulik  <rodo@ximian.com>
17448
17449         * Makefile.am (common_sources): added abcremoval.h so it get
17450         disted and daily mono packages on go-mono.com will build again
17451
17452 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17453
17454         * abcremoval.c: Fixed coding style, added copyright header.
17455
17456         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17457
17458         * mini.h: Added prototype for abc removal main function.
17459
17460         * build_relations_propagation_table.pl: Added copyright header.
17461
17462 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17463
17464         * basic-long.cs: reg test for complex ceq_long bug.
17465
17466 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17467
17468         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17469         reg in long and clob case (bug #58343). Fixed/added comments.
17470
17471 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17472
17473         * mini.c (mono_jit_runtime_invoke): Follow new convention
17474         of calling the invoke method with an function pointer.
17475
17476 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17477
17478         * ChangeLog: Fix author of memory leak patch.
17479
17480 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17481
17482         * Makefile.am: fix make dist as well...
17483
17484
17485 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17486
17487         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17488         on archs where pointers are 4 bytes long.
17489
17490         * Makefile.am: Added abcremoval.c source file.
17491
17492         * abcremoval.c: Added abcremoval.c.
17493
17494         * abcremoval.h: Added abcremoval.h.
17495
17496         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17497
17498         * inssel.brg: Enabled bounds check removal.
17499
17500         * mini.c: Added support for abcrem optimization.
17501
17502         * mini.h: Added abcrem optimization label.
17503
17504         * driver.c: Added support for abcrem optimization.
17505
17506         * propagated_relations_table.def: Added propagated_relations_table.def.
17507
17508 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17509
17510         * mini.c, cfold.c: fix style.
17511
17512 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17513
17514         * mini.c: handle issue with the low-level implementation of
17515         some long opcodes (bug #54209).
17516
17517 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17518
17519         * basic.cs: test for my new cmov stuff.
17520
17521 2004-05-13      Patrik Torstensson
17522
17523         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17524         opt and added peephole documentation.
17525
17526 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17527
17528         * tramp-ppc.c: rewrote the generic trampoline code.
17529
17530 2004-05-11      Patrik Torstensson
17531
17532         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17533
17534 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17535
17536         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17537
17538         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17539         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17540
17541         * mini.c: Add new icalls for AsAny marshalling.
17542
17543 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17544
17545         * tramp-ppc.c, mini-ppc.c: more cleanups.
17546
17547 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17548
17549         * mini.c: no warnings.
17550
17551 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17552
17553         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17554
17555 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17556
17557         * mini.c: In the thread abort signal handler, if the thread is in the
17558         process of being stoped, don't throw the Abort exception, just stop the
17559         thread.
17560
17561 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17562
17563         * tramp-ppc.c: removed old code.
17564
17565 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17566
17567         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17568         do some simple speed optimizations on ppc.
17569
17570 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17571
17572         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17573         and large offsets in load/store.
17574
17575 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17576
17577         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17578         it causes regressions.
17579
17580 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17581
17582         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17583         support.
17584
17585 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17586
17587         * jit-icalls.c: remove warnings.
17588         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17589         speedups for unsafe code.
17590
17591 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17592
17593         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17594
17595 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17596
17597         * basic-calls.cs: Add new regression test.
17598
17599         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17600         more portable.
17601
17602         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17603
17604         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17605         is no longer used.
17606
17607 2004-05-06      Patrik Torstensson
17608
17609         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17610         long reg allocation in any reg (not only eax:edx) and implemented 
17611         long shl/shr ops in asm instead of helpers.
17612
17613 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17614
17615         * mini-sparc.h: Fix warnings.
17616
17617         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17618         stack.
17619
17620         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17621         separate statement for clarity.
17622
17623         * mini-sparc.c: Update status.
17624
17625 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17626
17627         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17628         here.
17629
17630 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17631
17632         * inssel-ppc.brg: another small pre-release workaround:
17633         we don't do overflow detection for long_sub_un.
17634
17635 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17636
17637         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17638         (also works around a weird ppc bug: 57957).
17639
17640 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17641
17642         * tramp-ppc.c: trampoline fixes.
17643
17644 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17645
17646         * mini-ppc.c: fixed typos.
17647
17648 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17649
17650         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17651         at the top of the stack. Fixed typos. Use a frame registers
17652         for all the methods with exception clauses.
17653
17654 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17655
17656         * exceptions-ppc.c: restore fp registers.
17657
17658 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17659
17660         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17661         order from the stack top (moved the stack room to save the
17662         return value for trace after the param area). Fixed corruption
17663         in restoring registers on unwind.
17664
17665 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17666
17667         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17668
17669 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17670
17671         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17672         and prolog/epilog for methods that use it. Allow
17673         enough param area room for varargs methods. Fix miguel's
17674         breakage in exception handling.
17675
17676 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17677
17678         * Makefile.am: run genmdesc only on current arch.
17679
17680 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17681
17682         * exceptions-x86.c:
17683         * mini-x86.h: fix the build on windows.
17684
17685 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * 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.
17688
17689         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17690
17691         * mini-exceptions.c: New file.
17692         
17693         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17694         Move some parts of the x86 exception handling code to an 
17695         arch-independent file so it can be shared with other ports.
17696
17697 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17698
17699         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17700
17701 2004-04-26  David Waite  <mass@akuma.org>
17702
17703         * driver.c: remove comma from end of enumeration declaration
17704
17705 2004-04-26  Jackson Harper  <jackson@ximian.com>
17706
17707         * driver.c: parse config file before loading first assembly. This
17708         allows the user gac to be enabled/disabled. 
17709         
17710 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17711
17712         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17713         simpler mechanism: we do not care what is encoded initially
17714         (branch absolute or relative), we care about the code and its
17715         target.  I kept the old code for reference for now.
17716
17717         The new code tries first to determine if the jump is anywhere in
17718         the -/+32 absolute meg range, if it succeeds, it encodes using the
17719         absolute branch;  If not, it tried to find something in the
17720         relative range, if not, it uses the handle_thunk code. 
17721
17722 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17723
17724         * exceptions-ppc.c: use the correct ip register on macosx.
17725
17726 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17727
17728         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17729
17730 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17731
17732         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17733         Raise exception on integer divide by zero by hand since the hw
17734         doesn't support it. Handle NaNs in FP compares.
17735
17736 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17737
17738         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17739         code reducing duplication between the platforms and enabled
17740         signal exception handling (on linux for now).
17741
17742 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17743
17744         * exceptions-ppc.c: more macosx support.
17745
17746 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17747
17748         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17749
17750 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17751
17752         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17753
17754 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17755
17756         * iltests.il: more tests.
17757
17758 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17759
17760         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17761         vars as well.
17762
17763 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17764
17765         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17766
17767 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17768
17769         * liveness.c: Mark variables as volatile in all basic blocks reachable
17770         from exception clauses.
17771
17772 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17773
17774         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17775         inlining.
17776
17777 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17778
17779         * iltests.il, basic.cs: more tests for regalloc.
17780
17781 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17782
17783         * iltests.il: Some tests for register allocation modifications
17784         I have locally.
17785
17786 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17787
17788         * exceptions.cs: Add regression test for bug #56782.
17789
17790         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17791         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17792         the beauty of fixing the same thing in 5 different files...
17793
17794 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17795
17796         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17797         methods.
17798
17799 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17800
17801         * mini.c: Add support for STRWLPARRAY marshalling convention.
17802
17803 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17804
17805         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17806         to init the context to setup the regs pointer).
17807
17808 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17809
17810         * exceptions-ppc.c: more exceptions work.
17811
17812 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17813
17814         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17815         not allowed.
17816
17817 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17818
17819         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17820         can use the memory directly.
17821
17822         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17823
17824         add x86_add_membase, x86_sub_membase, x86_mul_membase
17825
17826 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17827
17828         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17829         GENERAL_REGS they were also hardcoded for all PPC ports.
17830
17831         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17832
17833         Remove hard-coded limit for floating point registers, use
17834         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17835
17836         Notice that in MacOS X calling conventions you can fit a lot more
17837         floating point values in registers, so I should update the PInvoke
17838         test to excercise the passing of floating point values on the
17839         stack (currently broken).
17840         
17841 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17842
17843         * tramp-ppc.c (create_trampoline_code): Added
17844         JUMP_TRAMPOLINE_SIZE. 
17845         (ppc_magic_trampoline): Follow the pattern from
17846         x86_magic_trampoline: if code is set to zero, return. 
17847         (create_trampoline_code): Always pass MonoMethod to the jump
17848         trampoline, before it was passing a null.
17849         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17850         share the code with mono_arch_create_jit_trampoline. 
17851
17852         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17853         implemented.
17854         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17855         implemented.  
17856
17857         * cpu-g4.md: Added length for jmp instruction, the worst case
17858         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17859         for save_lmf).
17860
17861 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17862
17863         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17864
17865 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17866
17867         * mini.c: Only set bblock->real_offset when adding a new bblock, and
17868         before each IL instruction.
17869
17870         * mini.c (CEE_BOX): Fix warnings.
17871
17872 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17873
17874         * mini.c: removed a few unused vars and extra whitespace.
17875
17876 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
17877
17878         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
17879         checks.
17880         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
17881         index.
17882         (OP_GETCHR): use the above
17883         (CEE_LDELEMA): use the above.
17884
17885         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
17886         version of the generic impl.
17887         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
17888         (CEE_LDELEMA): use the above.
17889
17890 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
17893         Fixes #56317.
17894
17895         * iltests.il: Added new regression test for #56317.
17896
17897 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17898
17899         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
17900         under NetBSD. Fixes #56450.
17901
17902         * liveness.c (update_gen_kill_set): Fix previous patch.
17903
17904 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17905
17906         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
17907
17908 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17909
17910         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
17911         ldsfld and ldsflda.
17912
17913         * inssel-sparc.brg: Add more optimizations.
17914
17915         * mini-sparc.c: Replace multiply/divide with shifts if possible.
17916
17917 2004-04-01  Martin Baulig  <martin@ximian.com>
17918
17919         * mini.c (handle_box): New static function; moved the
17920         implementation of CEE_BOX here.
17921         (mono_method_to_ir): Added `constrained_call' variable.
17922         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
17923         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
17924         mono_method_get_constrained() to get the method.
17925
17926 2004-04-01  Martin Baulig  <martin@ximian.com>
17927
17928         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
17929         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
17930         (mono_method_to_ir): We don't need these macros anymore since
17931         mono_class_get_full() already takes care of it. 
17932
17933 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17934
17935         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
17936         use @function (as doesn't accept #function here) and check the return
17937         value of system and stop if fails.
17938
17939 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17940
17941         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
17942
17943 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
17944
17945         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
17946
17947         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
17948
17949         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
17950         #56223.
17951
17952         * basic-long.cs: Add test for negation of Int64.MinValue.
17953
17954 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
17955
17956         * mini-sparc.c: Update status.
17957
17958         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
17959
17960         * exceptions-sparc.c: Fix return value in filters.
17961
17962         * inssel-sparc.brg: Fix register allocation in some rules.
17963
17964 2004-03-28  Martin Baulig  <martin@ximian.com>
17965
17966         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
17967         if neccessary.  
17968
17969 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17970
17971         * mini-x86.c (mono_arch_patch_code): Fix warnings.
17972         
17973         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
17974         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
17975         remove unused conv_u4 opcode.
17976
17977         * mini-x86.c: Remove valgrind workaround since it slows down things
17978         even when mono is not run under valgrind.
17979
17980 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
17981
17982         * mini-sparc.c: Update status.
17983
17984         * inssel-sparc.brg: Add some optimizations.
17985
17986         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
17987         future delay slot filling. Add support for varargs, tail calls and JMP.
17988
17989         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
17990         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
17991
17992         * inssel.brg: Fix register allocation in OP_ARGLIST.
17993
17994         * inssel.brg: Fix warnings.
17995
17996 2004-03-25  Martin Baulig  <martin@ximian.com>
17997
17998         * mini.c (inflate_generic_field): Removed.
17999         (mini_get_method): Removed, use mono_get_method_full(),
18000         (mini_get_class): Removed, use mono_class_get_full().
18001         (mono_method_to_ir): Pass our generic context to
18002         mono_field_from_token().        
18003
18004 2004-03-25  Martin Baulig  <martin@ximian.com>
18005
18006         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
18007         of a `MonoMethod *'.
18008         (mini_get_method): Take a `MonoGenericContext *' instead
18009         of a `MonoMethod *'.
18010         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
18011         a new local variable called `generic_context' which holds the
18012         current `MonoGenericContext *'; use it to lookup things.
18013
18014 2004-03-24  Martin Baulig  <martin@ximian.com>
18015
18016         * mini.c (mini_get_class): New static method; if we're inside a
18017         generic instance, inflate the class if neccessary.
18018         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
18019
18020 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18021
18022         * iltests.il: New regression test for #55976.
18023
18024         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
18025         #55976.
18026
18027 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18028
18029         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
18030         output.
18031
18032 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18033
18034         * liveness.c: Consider SSA stores as well as loads when making vars
18035         volatile.
18036
18037         * exceptions.cs: New regression tests for register allocation.
18038         
18039 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18040
18041         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
18042         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
18043           domain lock only to protect puntual access to data structures.
18044           Added access lock for sighash, jit_icall_hash_name, 
18045           jit_icall_hash_addr and domain->code_mp.
18046
18047 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
18048
18049         * driver.c: Print SIGSEGV handling method.
18050
18051         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
18052
18053         * mini.c (setup_jit_tls_data): Handle case when this is called
18054         multiple times for a thread.
18055
18056         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
18057         is different from fbxx_un. Fixes #54303. Also use constants instead of
18058         magic numbers in a lot of places.
18059
18060 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
18061
18062         * exceptions.cs: Fix cctor test when --regression is used.
18063
18064 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
18065
18066         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
18067         for Linux/ppc.
18068
18069 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18070
18071         * inssel-ppc.brg: fixed register assignments for some rules.
18072
18073 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18074
18075         * exceptions.cs: Add test for exceptions in static constructors.
18076
18077         * mini.c (mono_jit_compile_method_with_out): Move the calling of
18078         static constructors outside the domain lock. Fixes #55720.
18079
18080 2004-03-17  Martin Baulig  <martin@ximian.com>
18081
18082         * mini.c (get_generic_field_inst): Removed, this'll never happen.
18083         (inflate_generic_field): Take the `MonoMethod *' instead of the
18084         `MonoClass *' and added support for generic method.
18085         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
18086         have a `field->parent->gen_params', only inflate the field if it's
18087         an open constructed type.
18088
18089 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18090
18091         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
18092         exception object instead of the preconstructed ones.
18093
18094 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18095
18096         * mini.c: reverted changed to sigsegv_signal_handler commited
18097         accidentally in the previous patch.
18098
18099 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18100
18101         * mini.c:
18102         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
18103         running --aot with an old assembly.
18104
18105 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18106
18107         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
18108         point values.
18109
18110         * mini-sparc.c: Add support for v9 branches with prediction.
18111
18112 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
18113
18114         * mini.c (mini_init): #warning is GNUC only
18115
18116         * mini-sparc.h: implement __builtin_frame_address
18117         and __builtin_return_address for Sun C compiler
18118
18119 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
18120
18121         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
18122
18123 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18124
18125         * basic-calls.cs: Add test for unaligned byref long argument passing.
18126
18127         * mini-ops.h: Add sparcv9 compare and branch instructions.
18128
18129         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
18130         v9 instructions if we have a v9 cpu.
18131
18132         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
18133         registers for global allocation.
18134
18135         * exceptions-sparc.c: Fixes.
18136         
18137 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
18138
18139         * liveness.c (mono_analyze_liveness): Optimized version.
18140
18141         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
18142
18143         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
18144         sparc work.
18145
18146         * basic-float.cs basic-calls.cs: New regression tests.
18147
18148 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
18149
18150         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
18151         sigaltstack implementation.
18152
18153         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
18154         
18155         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
18156         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18157
18158 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18159
18160         * mini.c: Fix warnings.
18161         
18162         * mini.c (mono_resolve_patch_target): New function which contains the
18163         arch independent part of the patching process.
18164
18165         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18166         patching code to a separate function.
18167
18168 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18169
18170         * mini.c (add_signal_handler): ifdef out on Windows
18171
18172 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18173
18174         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18175         cpu-sparc.md: Add exception handling support + other fixes.
18176
18177         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18178         typed GC detection in --version.
18179
18180         * basic.cs exceptions.cs: New regression tests.
18181
18182         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18183         the arch specific code can store data during a compilation.
18184
18185         * mini-ops.h: Add OP_SETFRET.
18186
18187         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18188         function, register a separate icall for each arity, so the icalls can
18189         get a wrapper.
18190         
18191         * mini.c (mono_print_tree): Print negative offsets in a more readable
18192         form.
18193         
18194         * mini.c: Make signal handling work on sparc.
18195         
18196         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18197
18198         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18199
18200         * jit-icalls.c: Emulate truncl by aintl on solaris.
18201
18202         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
18203
18204 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18205
18206         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18207
18208 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18209
18210         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
18211         a MarshalByRef type, inline a method that performs the check, taking into
18212         account that the object can be a proxy. Also implemented tow new opcodes:
18213         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18214         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
18215         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18216
18217 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18218
18219         * mini-ppc.c: if a relative branch displacement is too big
18220         but it points to and area reachable with an absolute branch, 
18221         avoid the thunks.
18222
18223 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18224
18225         * mini.c: optimize small copies in cpblk.
18226
18227 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18228
18229         * basic-calls.cs basic-float.cs: New regression tests.
18230
18231         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18232         negative offsets from %fp. Implement localloc. Fix local register 
18233         allocation. Fix the case when the this argument needs to be saved to
18234         the stack. Implement some missing opcodes.
18235
18236 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18237
18238         * mini.c (mini_method_compile): Reenable global regalloc in methods
18239         with exception handlers.
18240
18241         * linear-scan.c (mono_varlist_sort): Fix warning.
18242
18243         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18244
18245         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18246         regalloc costs.
18247
18248         * liveness.c: Make all variables uses in exception clauses volatile, to
18249         prevent them from being allocated to registers. Fixes #42136.
18250
18251 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18254         causes regressions.
18255
18256         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18257         argument to mono_arch_regalloc_cost.
18258
18259         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18260         precisely.
18261
18262 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18263
18264         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18265         Make the cost of allocating a variable to a register arch dependent.
18266
18267         * basic-calls.cs: Fix compilation of tests.
18268         
18269         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18270         helper function to cut back on the number of #ifdefs needed.
18271
18272         * mini-ppc.c: Fix compilation.
18273
18274         * basic-calls.cs: New regression tests.
18275
18276         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18277
18278         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18279         of l0 since that is callee saved.
18280
18281         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18282         to virtual calls.
18283
18284         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18285         of delay instruction.
18286
18287         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18288
18289         * mini.h (MonoCallInst): Add 'virtual' flag.
18290
18291         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18292
18293 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18294
18295         * *.cs: New regression tests.
18296
18297         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18298         work.
18299
18300         * mini.c (mono_runtime_install_handlers): Fix build.
18301
18302         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18303         'signal_stack_size' members.
18304
18305         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18306         alternate signal stack.
18307
18308         * exceptions-x86.c: Add stack overflow handling.
18309
18310         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18311         functions to arch independent code.
18312
18313         * mini.c (mono_print_tree): Print more detailed info for load_membase
18314         opcodes.
18315         
18316 2004-02-23  Martin Baulig  <martin@ximian.com>
18317
18318         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18319
18320 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18321
18322         * mini-x86.c: fixed reg allocation for div/rem.
18323
18324 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18325
18326         * driver.c (mono_main): Report some configuratio options on --version.
18327
18328 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18329
18330         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18331         low in the address space. Correctly flush memory in thunks where we
18332         output native code.
18333
18334 2004-02-20  Martin Baulig  <martin@ximian.com>
18335
18336         * mini.c (mini_get_method): New static method; inflate all generic
18337         methods and methods in open generic instances.
18338         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18339         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18340
18341 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18342
18343         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18344
18345         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18346
18347 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18348
18349         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18350
18351         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18352         it compile using Sun's compiler.
18353
18354 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * 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.
18357
18358         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18359
18360 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18361
18362         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18363         code.
18364         * mini-ppc.c: handle calls outside of the allowed range with thunks
18365         allocated using the code manager.
18366         * tramp-ppc.c: use the code manager to hold generated native code.
18367         Fixed the magic trampoline to just patch vtable entries.
18368
18369 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18370
18371         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18372         independent file.
18373
18374 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18377         PPC.
18378
18379         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18380         if we have a working __thread implementation.
18381
18382         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18383         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18384
18385 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18386
18387         * mini-x86.c: Fix compilation under gcc 2.
18388         
18389 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18392         contains a call to the wrapped function.
18393
18394         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18395         OP_<CALL>_IMM opcodes, and use them under X86.
18396         
18397         * mini.c (mono_jit_find_compiled_method): Fix warning.
18398
18399         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18400
18401         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18402
18403         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18404         functionality to mini.c.
18405
18406         * mini.c (mono_create_jump_trampoline): New function to create a jump
18407         trampoline. Return a compiled method instead of a trampoline if it
18408         exists. Add a cache for jump trampolines.
18409
18410         * mini.c (mono_jit_find_compiled_method): New function to return a
18411         compiled method if it exists.
18412
18413         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18414         mono_arch_create_jit_trampoline.
18415
18416         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18417         a jump trampoline. Fixes #52092.
18418         
18419 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18420
18421         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18422         which is not up-to-date. Add check_corlib_version () instead.
18423
18424         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18425         have to call it.
18426         
18427         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18428         since newer valgrind versions do not need it.
18429
18430         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18431         compile a method with a given set of optimizations.
18432
18433         * mini.c: Compile icall wrappers on-demand instead of at startup.
18434
18435         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18436         wrapper for an icall.
18437
18438 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18441         #54063.
18442
18443         * iltests.il: Add test for non-empty stack before switch instruction.
18444
18445 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18446
18447         * mini.c: Add support for new stringbuilder marshalling conventions.
18448
18449         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18450
18451 2004-02-01  Martin Baulig  <martin@ximian.com>
18452
18453         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18454         in `ginst->mtype_argv'.
18455
18456 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18457
18458         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18459         facilitate grepping.
18460
18461 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18462
18463         * mini.c: fixed buglet in initobj generic implementation for references.
18464
18465 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18466
18467         * Makefile.am: make the version script conditional.
18468         * jit-icalls.c: handle missing truncl().
18469
18470 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18471
18472         * exceptions.cs: Add more tests for double->int conversion.
18473
18474         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18475         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18476
18477 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18478
18479         * driver.c: make --verbose --version emit an error
18480         if the loaded corlib doesn't match the runtime version.
18481
18482 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18483
18484         * mini-ppc.h: export ppc_patch().
18485         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18486         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18487         on par or better than on MacOSX.
18488
18489 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18490
18491         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18492         mono_lookup_pinvoke_call.
18493
18494         * mini-x86.c: Under windows, the default pinvoke calling convention is
18495         stdcall. Fixes #52834.
18496
18497         * mini.c (optimize_branches): Add an upper bound to the number of
18498         iterations to prevent infinite loops on strange loops. Fixes #53003.
18499
18500 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18501
18502         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18503         and ISINST. Fixes #52093.
18504
18505         * objects.cs (test_0_vector_array_cast): New tests.
18506         
18507 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18508
18509         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18510         checking in Array.Set ().
18511
18512         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18513         #52590.
18514
18515         * object.cs (test_0_multi_array_cast): New regression test.
18516
18517 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18518
18519         * exceptions-ppc.c: fix build on Linux/PPC.
18520
18521 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18522
18523         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18524         running under valgrind.
18525         (x86_magic_trampoline): Fix build bustage.
18526
18527         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18528         negative values as well. This is needed for the encoding of the line number
18529         info, since sometimes the line numbers are not in increasing order.
18530
18531 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * cpu-pentium.md (localloc): Increase the size of the localloc 
18534         instruction since it is a loop under Win32.
18535
18536         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18537         allocation.
18538
18539 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18540
18541         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18542         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18543         Max Horn (max@quendi.de). Fix file names in comments.
18544
18545 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18546
18547         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18548         avoid stack overflow.
18549         (replace_usage): Avoid uninitialized variable warnings.
18550
18551         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18552         and taking the address of valuetype variables.
18553
18554 2004-01-03  Patrik Torstensson
18555
18556         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18557         for other purposes than FP later on.
18558
18559 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18560
18561         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18562         of tail calls.
18563
18564 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18565
18566         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18567
18568 2003-12-30  Patrik Torstensson <p@rxc.se>
18569
18570         * mini-x86.h: Decreased number of availiable fp regs.
18571         Solves corner cases with FP spilling.
18572
18573 2003-12-23  Patrik Torstensson <p@rxc.se>
18574
18575         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18576         for floating point stack tracking / spilling on x86. 
18577         Fixes bug #49012.
18578         
18579         * basic-float.cs: added float mul overflow test.
18580
18581 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18582
18583         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18584
18585 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18586
18587         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18588         supports for cond branches that overflow the immediate
18589         overflow offset. mcs can compile simple programs.
18590
18591 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18592
18593         * exceptions-ppc.c: exception handling support wip:
18594         finally handlers get run on exception.
18595
18596 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18597
18598         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18599         profiling.
18600
18601 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18602
18603         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18604         initial support for stack walking and unwinding.
18605
18606 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18607
18608         * driver.c (mono_main): Make corlib-out-of-sync message more 
18609         descriptive. Also remove verify_corlib call.
18610
18611 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18612
18613         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18614         not overlap with other call's arguments, too.
18615
18616 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18617
18618         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18619         move to arch-specific code the choice of arch-specific
18620         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18621         * mini.c: ensure emulation calls will not interleave
18622         with other calls.
18623
18624 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18625
18626         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18627         the magic trampoline stack frame is dropped before executing
18628         the new method.
18629
18630 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18631
18632         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18633         and integer to fp conversions. Added support for overflowing
18634         arguments on the stack. Reserve a couple more registers as temps.
18635         Added support for aot compilation (as output still needs to be
18636         tweaked, though).
18637
18638 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18639
18640         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18641         Don't overwrite return register in some corner cases.
18642
18643 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18644
18645         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18646         static constructors when AOT compiling.
18647
18648         * driver.c (mono_main): Call mono_check_corlib_version.
18649
18650 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18651
18652         * cpu-g4.md, basic.cs: fixed div target register.
18653
18654 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18655
18656         * mini-ppc.c, basic.cs: shl_imm fix with test.
18657
18658 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18659
18660         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18661         structures by value. Misc fixes.
18662         * objects.cs: more tests.
18663
18664 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18665
18666         * mini-ppc.c: lconv.ovf.i implemented.
18667
18668 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18669
18670         * mini.c:
18671         (mini_init): don't error out if someone already called g_thread_init.
18672
18673 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18674
18675         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18676         to be any type per the spec. Fix abnormal memory usage when
18677         the same object is repeatedly thrown.
18678
18679 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18680
18681         * mini.c: check for overruns in IL code.
18682
18683 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18684
18685         * TODO: Add/remove some todo entries.
18686
18687 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18688
18689         * driver.c (mono_main): Call mono_verify_corlib.
18690
18691 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18692
18693         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18694         This has been moved to mini.c
18695         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18696         type being casted is marshalbyref it could be a proxy, so instead of
18697         emitting the type check code, emit a call to a runtime method that will
18698         perform the check by calling CanCastTo if needed.
18699
18700 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18701
18702         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18703         methods with large stack frames under Win32.
18704
18705 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18706
18707         * Makefile.am: Distribute regression tests.
18708
18709         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18710         at the end instead of inserting each variable into the sorted list.
18711
18712         * linear-scan.c (mono_varlist_sort): New helper function.
18713         
18714 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18715
18716         * mini.c: ensure arguments and locals are within bounds.
18717
18718 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18719
18720         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18721         related fixes.
18722
18723 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18724
18725         * mini.c (mono_cprop_copy_values): Fix crash.
18726
18727         * aot.c: Set verbosity back to 0.
18728         
18729 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18730
18731         * regalloc.c: complete memory leak fix by Laurent Morichetti
18732         (l_m@pacbell.net).
18733
18734 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18735
18736         * driver.c (main_thread_handler): Revert the previous patch.
18737
18738         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18739         under valgrind.
18740
18741         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18742         memory from the memory pool.
18743
18744         * driver.c (main_thread_handler): Turn on all optimizations when
18745         --aot is used.
18746
18747         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18748         an array for better performance.
18749
18750         * regalloc.c (mono_regstate_assign): Fix memory leak.
18751
18752         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18753         serialize the debug info.
18754
18755         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18756         debug info from the serialized representation.
18757
18758         * aot.c: Save debug info into the generated file and load it when 
18759         loading a method.
18760
18761         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18762
18763 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18764
18765         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18766         More FP-related fixes.
18767
18768 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18769
18770         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18771         and register allocation buglet. Hello world now runs.
18772
18773 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18774
18775         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18776         * tramp-ppc.c: fixed class init trampoline.
18777         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18778
18779 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18780
18781         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18782         mini.c: more ppc changes/fixes.
18783
18784 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18785
18786         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18787         Also optimize the case when the arguments are the same in the caller 
18788         and in the callee.
18789
18790         * iltests.il: Add tests for tail calls with valuetype arguments.
18791
18792 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18793
18794         * mini-ppc.c: fixes for struct return type.
18795
18796 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18797
18798         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18799         mono_spillvar_offset() to arch-specific code.
18800
18801 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18802
18803         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18804
18805 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18806
18807         * exceptions-x86.c: Fix stack space leaks.
18808         
18809         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18810         registers from the lmf if the method has save_lmf set.
18811
18812 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18815         of icall wrappers into InvokeInDomain, since these are now per-domain.
18816
18817 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18818
18819         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18820         make some opcode emulation and intrinsic ops enabled/disabled 
18821         according to the architecture. More fixes.
18822
18823 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18824
18825         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18826
18827 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18828
18829         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18830         arch-specific handling for 'this' and struct return type to
18831         arch-specific code.
18832
18833 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18834
18835         * aot.c: prevent divide by zero error when reporting (it happened with
18836         Accessibility.dll).
18837
18838 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18839
18840         * mini.h (inst_switch): Remove unused macro.
18841
18842 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18843
18844         * aot.c:
18845         (load_aot_module): free 'info->methods' and 'info' properly. No more
18846         "free(): invalid pointer blah" messages when you have an old aot
18847         compiled assembly.
18848
18849 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18850
18851         * jit-icalls.c, mini.c: Added support for context static fields.
18852
18853 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18854
18855         * mini.c (mono_method_blittable): Methods which set LastError are not 
18856         blittable either. Fixes #51108.
18857         
18858 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18859
18860         * mini.c: flush icache.
18861         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18862
18863 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18866
18867 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18868
18869         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
18870         safe on IA32.
18871
18872         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
18873         vararg calls.
18874
18875         * inssel.brg (CEE_MKREFANY): Fix AOT case.
18876
18877 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18878
18879         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
18880         instruction when the result is discarded.
18881
18882         * iltests.il (test_0_div_regalloc): New regression test.
18883
18884         * arrays.cs: Fix compilation error.
18885
18886 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
18887
18888         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
18889         float rules to inssel-x86.brg: sane architectures with FP registers
18890         don't need to implement these rules.
18891
18892 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18893
18894         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
18895
18896 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18897
18898         * mini.h, inssel-long32.brg: fixed endianess issues in int64
18899         implementation of 32 bit systems.
18900
18901 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18902
18903         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
18904         (Jeroen Zwartepoorte).
18905
18906 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18907
18908         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
18909         the caller and the callee matches.
18910         
18911         * mini.c (mono_method_to_ir): Add comment.
18912
18913         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
18914         signbit is missing on some platforms.
18915
18916 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
18919
18920         * mini.c (setup_jit_tls_data): Call the new function.
18921         
18922         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
18923
18924         * mini-x86.c: Add experimental support for fast access to the lmf
18925         structure under NPTL/Linux 2.6.x.
18926
18927 2003-11-06  Martin Baulig  <martin@ximian.com>
18928
18929         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
18930         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
18931         the debugger.
18932
18933 2003-11-02  Martin Baulig  <martin@ximian.com>
18934
18935         * mini.c (inflate_generic_field): New static method.
18936         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
18937         generic instance and the field is declared in a generic type, call
18938         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
18939
18940 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18941
18942         * mini.h mini.c (mono_method_same_domain): New function to return
18943         whenever the caller and the callee are in the same domain.
18944
18945         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
18946
18947 2003-10-30  Martin Baulig  <martin@ximian.com>
18948
18949         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
18950         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
18951         method parameters.
18952         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
18953         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
18954
18955 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
18956
18957         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
18958         propagation.
18959
18960         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
18961         object here, so it is in the correct appdomain etc.
18962
18963 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18964
18965         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
18966         already done.
18967         (mono_method_to_ir): Avoid freeing the type created returned from
18968         mono_type_create_from_typespec, since it is put into an internal cache
18969         by the function. Fixes pointer.exe.
18970
18971         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
18972         trampolines for icalls and pinvokes as well. Fixes #33569.
18973
18974 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18975
18976         * mini.c: Update after appdomain changes.
18977
18978         * mini.c (mono_jit_compile_method_inner): Allways compile native
18979         method wrappers in the root domain, since there can only be one
18980         instance of them, whose address is stored in method->info.
18981
18982 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18983
18984         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
18985         environment variable. Instead detect automatically whenever running
18986         under valgrind using the magic macro RUNNING_ON_VALGRIND from
18987         valgrind.h.
18988
18989 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
18990
18991         * trace.c, trace.h: New files that implement the new trace option
18992         parsing. 
18993
18994         * driver.c: Document new --trace options.
18995
18996         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
18997         mini-x86.c: Apply:
18998
18999         -       if (mono_jit_trace_calls)
19000         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
19001
19002         * mini.h: prototypes.
19003         
19004 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
19007
19008         * mini.c inssel.brg: Implement typedefbyref opcodes.
19009
19010         * mini.c (mono_jit_compile_method): Remove unused local variable.
19011
19012         * mini.c (mono_jit_compile_method_inner): Ditto.
19013         
19014 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * tramp-x86.c (x86_class_init_trampoline): Fix build.
19017         
19018         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
19019
19020 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19021
19022         * mini.c (mono_no_aot): Remove unused global variable.
19023
19024         * mini.c: Thread safety fixes.
19025
19026 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
19027
19028         * mini.c (mono_create_class_init_trampoline): Add a lock around
19029         class_init_hash_addr.
19030
19031         * arrays.cs (test_0_newarr_emulation): Add new regression test for
19032         #30073.
19033
19034         * mini.c: Decompose the NEWARR instruction before decomposing its
19035         arguments. Fixes #30073.
19036
19037 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
19038
19039         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
19040         convention.
19041
19042 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19043
19044         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
19045
19046         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
19047
19048         * driver.c: Add support for compiling icall wrappers to --compile.
19049
19050 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19051
19052         * inssel.brg: The empty value in class->interface_offsets is -1, not
19053         0. Fixes #49287.
19054
19055 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19056
19057         * objects.cs: New test for 'is' operator on an array of interfaces.
19058
19059 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19060
19061         * tramp-ppc.c: update trampoline code to support jumps
19062         and class initialization.
19063
19064 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19065
19066         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
19067
19068         * inssel.brg (OP_UNBOXCAST): Fix #46027.
19069
19070         * inssel.brg (OP_UNBOX): Remove unused rule.
19071
19072         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
19073         region instead of one for each method. Fixes #47813.
19074
19075 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19076
19077         * exceptions.cs (test_0_nested_finally): New regression test for
19078         nested exception handlers.
19079
19080         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
19081
19082         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
19083
19084         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
19085         inlining.
19086
19087         * mini.c (mono_method_check_inlining): Make the inlining limit 
19088         configurable by an environment variable.
19089         
19090         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
19091
19092         * mini.h: Bump AOT file version.
19093
19094         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
19095         token, store the image along with the token, since the token might not 
19096         refer to the same image as the method containing the relocation, 
19097         because of inlining.
19098
19099 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
19100
19101         * mini.c (mono_precompile_assemblies): New function to compile
19102         all methods in all loaded assemblies.
19103
19104         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
19105
19106         * regalloc.h regalloc.c (MonoRegState): Change the type of 
19107         iassign and fassign to int*, since they can contain large negative
19108         values if the register is spilled. Also added some comments. Fixes
19109         #45817.
19110
19111         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
19112         under Win32. Fixes #42964.
19113
19114 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19115
19116         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
19117
19118         * aot.c: Added support for AOT compiling methods which contain calls
19119         to wrappers. Currently, only remoting-invoke-with-check wrappers are
19120         handled.
19121         
19122         * driver.c (compile_all_methods): Run the compilation in a thread
19123         managed by mono. Fixes #44023.
19124
19125         * mini.c (mono_codegen): Print full method name in verbose output.
19126
19127         * mini-x86.c (mono_arch_patch_code): Fix warning.
19128         
19129         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
19130         jumps, since the method we are jumping to might be domain-specific.
19131
19132         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
19133
19134 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19135
19136         * inssel.brg: string chars are unsigned.
19137
19138 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19139
19140         * TODO: New todo item.
19141
19142         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
19143         which calls mono_runtime_class_init and patches the call site to
19144         avoid further calls.
19145         (mono_arch_create_class_init_trampoline): New arch specific function 
19146         to create a class init trampoline.
19147         (create_trampoline_code): Generalized so it can create
19148         class init trampolines as well.
19149
19150         * mini.c (helper_sig_class_init_trampoline): New helper variable.
19151         (mono_create_class_init_trampoline): New function to create and cache
19152         class init trampolines.
19153         (mono_find_class_init_trampoline_by_addr): New function to lookup the
19154         vtable given the address of a class init trampoline. Used by the
19155         patching process.
19156         (mono_codegen): Generate a call to a trampoline instead of
19157         mono_runtime_class_init in LDSFLD[A].
19158         (mono_codegen): Add relocations for the new trampoline.
19159         
19160         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19161         MONO_PATCH_INFO_CLASS_INIT.
19162
19163         * mini.h: Bump AOT version number.
19164
19165         * aot.c: Create a copy of the loaded code instead of using the original
19166         so methods which call each other will be close in memory, improving
19167         cache behaviour.
19168         
19169         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19170         patch since it breaks the regression tests.
19171         
19172         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19173         for the register saving instruction sequence since the 
19174         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19175
19176 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19177
19178         * TODO: Fix todo item && remove another.
19179
19180 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19183         previous checkin.
19184
19185         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19186         function of the module.
19187
19188         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19189         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19190         --no-aot command line option.
19191
19192 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19193
19194         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19195         by Bernie Solomon (bernard@ugsolutions.com).
19196
19197         * inssel.brg: Refactor the interface offset table related code into
19198         its separate functions and add support for the AOT case.
19199
19200 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * aot.c (mono_aot_get_method_inner): Fix memory leak.
19203         
19204         * aot.c: Added mono_aot_verbose variable and made all debugging
19205         output depend on the value of this variable.
19206
19207         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19208         method_label and info_label.
19209
19210         * mini.h mini-x86.c aot.c: Added a new relocation type 
19211         MONO_PATCH_INFO_IID for klass->interface_id.
19212
19213         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
19214         the MonoJitInfo structure.
19215
19216         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
19217         a non-root appdomain in shared mode.
19218
19219 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19220
19221         * aot.c: make aot loader less verbose. Remove free of unused variable.
19222
19223 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19224
19225         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19226
19227         * .cvsignore: Added *.dll.
19228
19229         * mini.c (mono_print_tree_nl): New function callable while debugging.
19230
19231         * mini.c (mono_print_code): Export this.
19232
19233         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19234         patched code.
19235
19236 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * mini.h (MonoCompile): Added 'jit_info' field.
19239
19240         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19241         the cfg structure, since it is needed by the AOT compiler.
19242
19243         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19244
19245         * aot.c: A major rewrite. Changes include:
19246         - save exception tables for methods which have them.
19247         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19248         to g_module_symbol.
19249         - reworked the file format so it is now much smaller and needs
19250         fewer relocation entries.
19251         
19252 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19253
19254         * aot.c (load_aot_module): Fix build bustage on platforms without
19255         Boehm GC.
19256
19257 2003-09-04  Martin Baulig  <martin@ximian.com>
19258
19259         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19260
19261 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * TODO: Some new optimization ideas.
19264
19265         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19266
19267         * aot.c: Save the optimization flags used to compile the code into
19268         the AOT module.
19269
19270         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19271         support emitting domain specific code.
19272         
19273         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19274         no longer domain neutral. It can be made domain neutral by compiling 
19275         with --optimize=shared.
19276
19277         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19278         between appdomains.
19279
19280         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19281         loading of AOT code.
19282
19283         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19284         
19285         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19286         if there is no domain neutrality information.
19287
19288 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19291         format version into the generated library.
19292
19293         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19294         callee method into the caller since one of them could be shared.
19295
19296         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19297         system exceptions from AOT code now works.
19298
19299         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19300         method if it is domain neutral and the callee is not.
19301
19302         * graph.c (cfg_emit_one_loop_level): Fix warning.
19303
19304 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19305
19306         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19307         last checkin.
19308
19309 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19310
19311         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19312         is needed  by code which is executed before mono_runtime_init ().
19313         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19314         
19315         * mini.c (mono_thread_abort): Fix warning.
19316         (mono_jit_compile_method): Call static constructor in the AOT case too.
19317
19318         * aot.c (mono_compile_assembly): Fix warning.
19319
19320 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19321
19322         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19323
19324 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19325
19326         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19327
19328         * cpu-pentium.md: Fix the length of call opcodes so they include the
19329         ESP restoring instruction. Fixes #47968.
19330
19331 2003-08-28  Martin Baulig  <martin@ximian.com>
19332
19333         * mini-x86.c (mono_arch_call_opcode): Added support for
19334         MONO_TYPE_GENERICINST.
19335
19336         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19337
19338 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19339
19340         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19341         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19342
19343         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19344         metadata_section.
19345
19346 2003-08-26  Martin Baulig  <martin@ximian.com>
19347
19348         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19349         when reporting an error, set this to the actual error location.
19350         (mono_method_to_ir): Report the correct error location if
19351         get_basic_blocks() returned an error.
19352
19353 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19354
19355         * mini.c (mono_type_blittable): OBJECT is not blittable.
19356         (mono_method_blittable): Methods which have marshalling descriptors
19357         are not blittable either. Fixes #47842.
19358
19359 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19360
19361         * driver.c mini.c: Use an environment variable instead of a global 
19362         variable. Also fix the build.
19363
19364         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19365         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19366         reporting this. 
19367
19368         * driver.c mini.c: Added --with-valgrind option to turn off some
19369         code which prevents mono from running under valgrind.
19370
19371         * mini.c (mono_emit_call_args): Fixed warning.
19372
19373         * mini.c (mono_emulate_opcode): Fixed warning.
19374
19375 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19376
19377         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19378         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19379         regalloc.c, regalloc.h: specify available registers in arch-specific
19380         code and support floats in the regallocator (patch by Laurent Morichetti 
19381         <l_m@pacbell.net>)
19382
19383 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19384
19385         * mini.c: mono_thread_current() can be called only after
19386         mono_runtime_init(): rearrange code to not call it early on.
19387
19388 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19389
19390         * mini.c: allocate jump tables in the code mempools.
19391
19392 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19393
19394         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19395         freed.
19396
19397 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19398
19399         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19400         12 to 16.  This fixes bug #47453.
19401
19402
19403 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19404
19405         * mini-ppc.c: fixed indexed load and unsigned compares.
19406
19407 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19408
19409         * mini.c: reenabled installation of handler for
19410           thread abort signal.
19411
19412 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19413
19414         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19415         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19416         until it's fixed and actually useful.
19417
19418 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19419
19420         * inssel-long32.brg: couple more opcodes implemented.
19421
19422 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19423         
19424         * mini-sparc.c: Even more opcodes implemeted.
19425
19426 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19427
19428         * mini-sparc.c: More opcodes implemented.
19429
19430 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19431
19432         * mini-sparc.c: More opcodes implemented.
19433
19434 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19435
19436         * inssel-sparc.brg: Add some needed rules.  Direct
19437         copy from PPC.
19438         * Makefile.am: Use inssel-sparc.brg
19439         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19440         an assert happy for now.
19441
19442 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19443
19444         * mini-sparc.c: Fixed compile errors.
19445         * exceptions-sparc.c: Same.  We now produce a mono binary 
19446         on sparc-linux.  Yea.
19447
19448 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19449
19450         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19451         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19452         They compile, but do not work.
19453
19454 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19455
19456         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19457         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19458         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19459         (ct@gentoo.org).
19460
19461 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19462
19463         * mini.c: more opcodes implemented and better support for generics.
19464
19465 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19466
19467         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19468         * mini.c, mini.h: first cut at generics support: some new instructions 
19469         added and changed the behaviour of some of the existing ones.
19470
19471 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19472
19473         * mini.c: Removed definition of metadata_shared mutex here.
19474
19475 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19476
19477         * mini-x86.c: make vararg calls work for instance methods.
19478
19479 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19480
19481         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19482         returns the arguments in a separte list, now.
19483
19484 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19485
19486         * aot.c, mini.c: updates for array type representation changes.
19487
19488 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19489
19490         * mini.c: register function to perform jit shutdown.
19491
19492 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19493
19494         * mini.c: use a faster allocator if possible.
19495
19496 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19497
19498         * aot.c: some cleanups and portability changes.
19499
19500 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19501
19502         * mini.c: use faster allocation for CEE_BOX if possible.
19503
19504 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19505
19506         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19507         Moved inlined mempcy code to its own function so that is can be
19508         reused. Added an inline memset function as well (optimized initobj).
19509         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19510
19511 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19512
19513         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19514
19515 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19516
19517         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19518         arch code can setup the cpu for CLR execution, if needed.
19519         We use it on x86 to set the precision of FP operations.
19520
19521 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19522
19523         * mini.c: disable some optimizations if we can guess they'll cost too
19524         much for a given method.
19525
19526 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19527
19528         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19529         
19530 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19531         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19532         info collection support.
19533
19534 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19535
19536         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19537         is now implemented in the profiling API. Get rid of a couple of
19538         unnecessary global variables.
19539
19540 2003-06-15  Nick Drochak <ndrochak@gol.com>
19541
19542         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19543         * cpu-g4.md: add op_bigmul and op_bigmul_un
19544         * cpu_pentium.md: add op_bigmul_un
19545         * inssel-long32.brg: add rule for unsigned bigmul
19546         * mini-ops.h: define OP_BIGMUL_UN
19547         * mini-x86.c: THE BUG: handle (un)signed properly
19548         * mini.c: choose unsigned opcode if needed.
19549         This set of patches fixes bug #44291
19550
19551 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19552
19553         * mini.c (optimize_branches): improved to handle all kinds of
19554         conditional branches.
19555
19556 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19557
19558         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19559         don't raise exceptions.
19560
19561 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19562
19563         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19564         to arch-specific files.
19565
19566 2003-06-09  Martin Baulig  <martin@ximian.com>
19567
19568         * Makefile.am (libs): Added $(LIBGC_LIBS).
19569
19570 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19571
19572         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19573         and OP_ATAN (fixes bug#44293).
19574
19575 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19576
19577         * Makefile.am, mini-x86.c: rename cpu description array to
19578         pentium_desc, since some compilers define the 'pentium' preprocessor
19579         symbol.
19580
19581 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19582
19583         * mini.c (mini_select_instructions): add explicit branch if the
19584         following block is not the false target of a conditional branch -
19585         we need this with any optimization that reorder or remove bblocks
19586
19587         * mini.c (optimize_branches): bug fixes
19588
19589 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19590
19591         * mini.c (mono_method_to_ir): inline static readonly fields
19592
19593         * ssa.c (fold_tree): start cfold support for long (very simple
19594         cases only)
19595
19596         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19597
19598 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19599
19600         * inssel.brg: fixed memcpy (bug #44219).
19601
19602 2003-06-05  Dick Porter  <dick@ximian.com>
19603
19604         * driver.c: Set the glib log levels to not abort if g_message
19605         recurses.
19606
19607         g_set_prgname() has to happen before mini_init() so that the
19608         process handle gets the info.
19609         
19610 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19611
19612         * driver.c: add intrins to the default optimizations to get wider
19613         exposure.
19614
19615 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19616
19617         * mini.h: some large basic blocks will overflow a 16-bit
19618         integers for symbolic registers.
19619
19620 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19621
19622         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19623         (mono_arch_output_basic_block): fix bug 43499 
19624
19625 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19626
19627         * mini.c: kill duplicated definition of mono_debug_format.
19628
19629 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19630
19631         * mini-x86.c, arrays.cs: fixed register allocation bug.
19632
19633 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19634
19635         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19636
19637         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19638
19639 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19640
19641         * mini.c:
19642         (print_method_from_ip): also print source location information if
19643         available.
19644
19645 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19646
19647         * mini.c (mono_find_block_region): bug fix in region code
19648         (mini_method_compile): enable removing unreachable code again, but
19649         only in methods without exception clauses.
19650
19651 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19652
19653         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19654         Implemented arglist opcode and handling of TypedReference type.
19655         Fixed x86 call convention when a structure is returned.
19656         Minimal support for calling static vararg methods.
19657
19658 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19659
19660         * mini.c (mini_method_compile):  always remove unreachable code,
19661         because the code in them may be inconsistent  (access to dead
19662         variables for example).
19663
19664 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19665
19666         * driver.c, debug-mini.c: warning fixes.
19667
19668 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19669
19670         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19671
19672 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19673
19674         * mini.c: thread-static fields are registered in mono_class_vtable(),
19675         so ensure the function is called before checking for them.
19676
19677 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19678
19679         * mini.c (optimize_branches): fix for bug 43586
19680
19681         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19682         overflow (fixes Bug #43639)
19683
19684 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19685
19686         * mini.c, objects.cs: allow the use of stobj for primitive types.
19687
19688 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19689
19690         * mini.c: be less strict about argument checking until we support
19691         running the verifier.
19692
19693 2003-05-27  Nick Drochak <ndrochak@gol.com>
19694
19695         * basic-long.cs: tests for (ulong)int * (ulong)int also
19696         * mini.c: use the same trick for (ulong)int * (ulong)int
19697
19698 2003-05-27  Nick Drochak <ndrochak@gol.com>
19699
19700         * basic-long.cs: add regression test for (long)int * (long)int
19701         * cpu-pentium.md: add op_bigmul specification
19702         * inssel-long32.brg: add OP_BIGMUL rule
19703         * mini-ops.h: add OP_BIGMUL
19704         * mini-x86.c: register allocator: handle case where src1 needs to be
19705         in EAX.
19706         * mini.c: substitute special BIGMUL opcode in the tree for 
19707         (long)int * (long)int
19708
19709 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19710
19711         * jit-icalls.c: call the type ctor on field access if needed.
19712
19713 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19714
19715         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19716         to a method (including results of ldelema, bug#43207).
19717
19718 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19719
19720         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19721         colors to show exception handler blocks.
19722
19723         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19724         (fix for pinvoke7.cs).
19725
19726 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19727
19728         * mini.h, mini.c: ensure correct initialization order for types that
19729         require it. Prepare for lazy compilation of jit icall wrappers.
19730         Provide a name for opcode emulation to reduce unneeded mallocing.
19731
19732 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19733
19734         * mini-x86.c: better register restoring code and profiling
19735         support for tail calls.
19736
19737 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19738
19739         * mini.h, driver.c: prepare for leaf methods optimization.
19740
19741 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19742
19743         * mini.c: get targets of branches before converting a method.
19744
19745 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19746
19747         * mini.c (optimize_branches): added some experimental code (disbaled) 
19748
19749 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19750
19751         * mini.c (optimize_branches): fix branch to branch optimization 
19752
19753         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19754
19755         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19756
19757         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19758
19759         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19760         if needed.
19761
19762 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19763
19764         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19765         enable use of interface variables again.
19766
19767         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19768         I1 to registers because there is no simply way to sign extend 8bit
19769         quantities in caller saved registers on x86.
19770
19771         * inssel-float.brg: set costs of some rules to 2 so
19772         that monobure always select the arch. specific ones if supplied,
19773         regardless of the order we pass the files to monoburg.
19774
19775 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19776
19777         * mini.c, mini-x86.c: since the magic trampoline for jumps
19778         can't patch the code directly, we do it as soon as the
19779         method gets compiled.
19780
19781 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19782
19783         * mini-x86.c, mini.h: introduce a new patching method
19784         to support CEE_JMP and tail calls.
19785         * mini.c: obey tail.call. Don't precompile methods target
19786         of CEE_JMP.
19787         * tramp-x86.c: new trampoline code to handle methods
19788         reached through a jump.
19789
19790 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19791
19792         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19793         bit values to registers
19794
19795 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19796
19797         * mini.c (mono_compile_get_interface_var): share interface
19798         variables if possible.
19799
19800 2003-05-16  Martin Baulig  <martin@ximian.com>
19801
19802         * debug-mini.c (mono_init_debugger): New function to initialize
19803         the debugger.  This is not in the debugger since it needs to
19804         access some of mini's internals.
19805
19806 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19807
19808         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19809
19810 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19811
19812         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19813         for value type handling.
19814
19815 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19816
19817         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19818         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19819
19820 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19821
19822         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19823           the constructor through a proxy.
19824
19825 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19826
19827         * jit-icalls.c, inssel.brg: fixes to array element address
19828         calculations.
19829
19830 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19831
19832         * mini-x86.c (is_regsize_var): allocate pointer to registers
19833
19834 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19835
19836         * driver.c: fixed typo, added intrins to the set of optimizations
19837         tested with regressions.
19838
19839 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19840
19841         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19842         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19843         test case.
19844
19845 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19846
19847         * inssel.brg: remove some common pop instructions without side effects
19848
19849 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19850
19851         * inssel-x86.brg: fixed thinko in int to double conversions.
19852
19853 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19854
19855         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19856
19857 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19858
19859         * inssel-long32.brg: two more missing instructions.
19860
19861 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19862
19863         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19864         if not already set.
19865
19866 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19867
19868         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
19869         correctly.
19870
19871         * basic-float.cs: Added tests for negative zero.
19872
19873 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19874
19875         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
19876         a couple of missing operations for long casts, with test cases.
19877
19878 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19879
19880         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
19881
19882 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
19883
19884         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
19885         code size estimation.
19886
19887 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19888
19889         * mini.c (mono_jit_create_remoting_trampoline): make it work with
19890         abstract methods (fix bug 42542)
19891
19892         * aot.c: add ability to handle array types
19893         
19894 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
19895
19896         * mini.c: Call the _specific versions of the object allocation
19897         functions if possible.
19898
19899 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19900
19901         * driver.c: call setlocale ().
19902
19903 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19904
19905         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
19906         windows build.
19907
19908 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19909
19910         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
19911
19912         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
19913         wrappers (fix bug 42122)
19914
19915 2003-05-04  Martin Baulig  <martin@ximian.com>
19916
19917         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
19918
19919         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
19920         s/mini_set_defaults/mono_set_defaults/g.
19921
19922 2003-05-04  Martin Baulig  <martin@ximian.com>
19923
19924         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
19925
19926 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19927
19928         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
19929         (reported by Don Roberts).
19930
19931 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19932
19933         * mini.c: temporarily work around two bugs for this release.
19934
19935 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19936
19937         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
19938         that contains -export-dynamic and it makes using the ld script
19939         useless.
19940         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
19941
19942 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19943
19944         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
19945         specific cpu.
19946
19947 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19948
19949         * mini.c: make sure leave calls all the needed finally blocks,
19950         even when the target jumps out of multiple exception clauses.
19951
19952 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19953
19954         * ldscript, Makefile.am: add linker script to reduce the number of
19955         exported symbols (should also fix the issues with libwine defining
19956         some of the same symbols in io-layer).
19957
19958 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * driver.c (mini_main): Avoid assertion when no file name is given on 
19961         the command line.
19962
19963 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
19964
19965         * driver.c: added --version/-V command line option.
19966         Added the inline optimization in the regression tests.
19967
19968 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19969
19970         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
19971         to the type in the method signature (fixes bug#42134).
19972
19973 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
19974
19975         * mini.c: when inlining, check this is not null only when needed (bug #42135).
19976
19977 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
19978
19979         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
19980
19981 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19982
19983         * driver.c: fixed bug #42100.
19984
19985 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19986
19987         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
19988
19989 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19990
19991         * mini.c: moved most of the code required to do inlining to its own
19992         function so it can be reused. Inline also ctors if appropriate.
19993
19994 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19995
19996         * Makefile.am: Link with -export-dynamic so shared libs loaded by
19997         the runtime can call mono API functions.
19998
19999 2003-04-27  Martin Baulig  <martin@ximian.com>
20000
20001         * debug-mini.c (mono_debug_init_method): Added
20002         `guint32 breakpoint_id' argument; if the method has a breakpoint,
20003         send a notification to the debugger.
20004
20005         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
20006         running in the Mono Debugger, just pass the breakpoint number to
20007         mono_debug_init_method().
20008
20009         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
20010
20011 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
20012
20013         * mini.c: allow some more unsafe compares.
20014
20015 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20016
20017         * mini-x86.c, Makefile.am: make distcheck works (partially from
20018         a patch by Richard Lee <r.h.lee@attbi.com>).
20019         * regset.c, regset.h: removed, they are unused.
20020
20021 2003-04-25  Dick Porter  <dick@ximian.com>
20022
20023         * driver.c: Usage reports the name as 'mono' not 'mini'
20024         * exceptions-x86.c: Build and run on freebsd
20025
20026 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20027
20028         * Makefile.am: install the program with the 'mono' name and
20029         the library as libmono instead of mini and libmini.
20030
20031 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20032
20033         * driver.c: provide the APIs for the embedding interface of the old jit.
20034
20035 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
20036
20037         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
20038
20039 2003-04-23  Martin Baulig  <martin@ximian.com>
20040
20041         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
20042
20043         * driver.c: Added `--debug' command line argument to enable
20044         debugging support.
20045
20046 2003-04-23  Martin Baulig  <martin@ximian.com>
20047
20048         * debug.[ch]: Removed.  The code is now in
20049         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
20050
20051         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
20052         last six months.
20053
20054 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20055
20056         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
20057
20058 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20059
20060         * mini.c:
20061         (mini_cleanup): moved mono_runtime_cleanup call after the call to
20062         mono_domain_finalize.
20063         (mini_method_compile): use mono_method_profile* if the the option is
20064         enabled.
20065
20066 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20067
20068         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20069         methods with their wrapper.
20070
20071         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20072         methods with their wrapper.
20073
20074         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
20075         their wrapper.
20076
20077         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
20078         wrapper.
20079
20080         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
20081         methods.
20082
20083 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
20084
20085         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
20086
20087 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
20088
20089         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
20090         of the mempool. This is slightly faster and uses less memory
20091
20092 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20093
20094         * mini.c: avoid O(n) allocation for variables.
20095
20096 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20097
20098         * mini.c: handle items on the stack after inlining methods.
20099
20100 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20101
20102         * mini.c: make the method->opcode optimization dependent
20103         on MONO_OPT_INSTRINS and do it lazily.
20104
20105 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20106
20107         * driver.c: print overall results at the end of regression run.
20108
20109 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20110
20111         * inssel.brg: don't overwrite symbolic registers.
20112
20113 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20114
20115         * inssel-x86.brg: fix conversion from long to float.
20116
20117 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
20118
20119         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
20120
20121 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20122
20123         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
20124
20125         * driver.c: Added --print-vtable option as in the old JIT.
20126
20127 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20128
20129         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
20130
20131 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20132
20133         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
20134
20135 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20136
20137         * mini.c regalloc.c regalloc.h: Fix memory leak.
20138
20139 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
20140
20141         * aot.c (mono_aot_get_method): register all used strings
20142
20143 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20144
20145         * mini.c: always intern strings references with ldstr at compile time.
20146
20147 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20148
20149         * Makefile.am: add BUILT_SOURCES.
20150
20151 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20152
20153         * driver.c: give a better error message when the assembly to execute
20154         doesn't have an entry point.
20155
20156 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20157
20158         * Makefile.am: added hack for automake
20159
20160         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20161         correct sematics.
20162
20163         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20164
20165 22003-04-07  Martin Baulig  <martin@ximian.com>
20166
20167         * Makefile.am: Added Makefile.am.
20168
20169         * debugger-main.c: Removed, this is now in the debugger where it
20170         belongs.
20171
20172         * mini.pc.in: Call this package `mini' for the moment.
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187